Version bump dependencies
This commit is contained in:
parent
abf2cac093
commit
66f40b4aa4
8 changed files with 205 additions and 203 deletions
|
|
@ -6,7 +6,7 @@ edition = "2024"
|
|||
[dependencies]
|
||||
factorio-core = { path = "../factorio-core" }
|
||||
factorio-pathfinding = { path = "../factorio-pathfinding" }
|
||||
rand = { version = "0.8.5", features = ["small_rng"] }
|
||||
rand = { version = "0.9.0", features = ["small_rng"] }
|
||||
serde = { version = "1.0.192", features = ["derive"] }
|
||||
image = "0.25.2"
|
||||
serde_json = "1.0.108"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,10 @@ use factorio_core::{
|
|||
visualize::{Color, Symbol, Visualization, Visualize, image_grid},
|
||||
};
|
||||
use factorio_pathfinding::belt_finding::{self, conflict_avoidance::ConflictAvoidance};
|
||||
use rand::{Rng, seq::SliceRandom};
|
||||
use rand::{
|
||||
Rng,
|
||||
seq::{IndexedRandom, SliceRandom},
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::{sync::atomic::AtomicU32, time::Instant};
|
||||
|
||||
|
|
@ -382,24 +385,24 @@ impl Layout<'_> {
|
|||
|
||||
let b = &problem.blocks[blocks.len()];
|
||||
for _ in 0..1000 {
|
||||
let dir = rng.r#gen::<Direction>();
|
||||
let dir = rng.random::<Direction>();
|
||||
|
||||
let pos = match dir {
|
||||
Direction::Up => Position::new(
|
||||
rng.gen_range(0..=(problem.size.x - b.size.x)),
|
||||
rng.gen_range(0..=(problem.size.y - b.size.y)),
|
||||
rng.random_range(0..=(problem.size.x - b.size.x)),
|
||||
rng.random_range(0..=(problem.size.y - b.size.y)),
|
||||
),
|
||||
Direction::Right => Position::new(
|
||||
rng.gen_range((b.size.y - 1)..problem.size.x),
|
||||
rng.gen_range(0..=(problem.size.y - b.size.x)),
|
||||
rng.random_range((b.size.y - 1)..problem.size.x),
|
||||
rng.random_range(0..=(problem.size.y - b.size.x)),
|
||||
),
|
||||
Direction::Down => Position::new(
|
||||
rng.gen_range((b.size.x - 1)..problem.size.x),
|
||||
rng.gen_range((b.size.y - 1)..problem.size.y),
|
||||
rng.random_range((b.size.x - 1)..problem.size.x),
|
||||
rng.random_range((b.size.y - 1)..problem.size.y),
|
||||
),
|
||||
Direction::Left => Position::new(
|
||||
rng.gen_range(0..=(problem.size.x - b.size.y)),
|
||||
rng.gen_range((b.size.x - 1)..problem.size.y),
|
||||
rng.random_range(0..=(problem.size.x - b.size.y)),
|
||||
rng.random_range((b.size.x - 1)..problem.size.y),
|
||||
),
|
||||
};
|
||||
|
||||
|
|
@ -460,7 +463,7 @@ impl Layout<'_> {
|
|||
loop {
|
||||
let p = r.choose_weighted(rng, |i| i.1).unwrap();
|
||||
|
||||
if p.0(&mut s, rng) && rng.gen_bool(0.5) {
|
||||
if p.0(&mut s, rng) && rng.random_bool(0.5) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -470,28 +473,28 @@ impl Layout<'_> {
|
|||
}
|
||||
|
||||
fn mutate_replace<R: Rng + ?Sized>(layout: &mut Layout, rng: &mut R) -> bool {
|
||||
let i = rng.gen_range(0..layout.blocks.len());
|
||||
let i = rng.random_range(0..layout.blocks.len());
|
||||
|
||||
let dir = rng.r#gen::<Direction>();
|
||||
let dir = rng.random::<Direction>();
|
||||
|
||||
let b = &layout.problem.blocks[i];
|
||||
|
||||
let pos = match dir {
|
||||
Direction::Up => Position::new(
|
||||
rng.gen_range(0..=(layout.problem.size.x - b.size.x)),
|
||||
rng.gen_range(0..=(layout.problem.size.y - b.size.y)),
|
||||
rng.random_range(0..=(layout.problem.size.x - b.size.x)),
|
||||
rng.random_range(0..=(layout.problem.size.y - b.size.y)),
|
||||
),
|
||||
Direction::Right => Position::new(
|
||||
rng.gen_range((b.size.y - 1)..layout.problem.size.x),
|
||||
rng.gen_range(0..=(layout.problem.size.y - b.size.x)),
|
||||
rng.random_range((b.size.y - 1)..layout.problem.size.x),
|
||||
rng.random_range(0..=(layout.problem.size.y - b.size.x)),
|
||||
),
|
||||
Direction::Down => Position::new(
|
||||
rng.gen_range((b.size.x - 1)..layout.problem.size.x),
|
||||
rng.gen_range((b.size.y - 1)..layout.problem.size.y),
|
||||
rng.random_range((b.size.x - 1)..layout.problem.size.x),
|
||||
rng.random_range((b.size.y - 1)..layout.problem.size.y),
|
||||
),
|
||||
Direction::Left => Position::new(
|
||||
rng.gen_range(0..=(layout.problem.size.x - b.size.y)),
|
||||
rng.gen_range((b.size.x - 1)..layout.problem.size.y),
|
||||
rng.random_range(0..=(layout.problem.size.x - b.size.y)),
|
||||
rng.random_range((b.size.x - 1)..layout.problem.size.y),
|
||||
),
|
||||
};
|
||||
|
||||
|
|
@ -512,7 +515,7 @@ impl Layout<'_> {
|
|||
}
|
||||
|
||||
fn mutate_flip<R: Rng + ?Sized>(layout: &mut Layout, rng: &mut R) -> bool {
|
||||
let i = rng.gen_range(0..layout.blocks.len());
|
||||
let i = rng.random_range(0..layout.blocks.len());
|
||||
let b = &mut layout.blocks[i];
|
||||
let block = &layout.problem.blocks[i];
|
||||
|
||||
|
|
@ -530,8 +533,8 @@ impl Layout<'_> {
|
|||
}
|
||||
|
||||
fn mutate_jiggle<R: Rng + ?Sized>(layout: &mut Layout, rng: &mut R) -> bool {
|
||||
let i = rng.gen_range(0..layout.blocks.len());
|
||||
let dir = rng.r#gen::<Direction>();
|
||||
let i = rng.random_range(0..layout.blocks.len());
|
||||
let dir = rng.random::<Direction>();
|
||||
let step = [(1, 10), (2, 5), (3, 5)]
|
||||
.choose_weighted(rng, |i| i.1)
|
||||
.unwrap()
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
use crate::{LayoutInput, LayoutResult};
|
||||
use factorio_core::prelude::*;
|
||||
use factorio_pathfinding::{Connection, examples::HashMapMap};
|
||||
use rand::{Rng, seq::SliceRandom};
|
||||
use rand::{
|
||||
Rng,
|
||||
seq::{IndexedRandom, SliceRandom},
|
||||
};
|
||||
|
||||
pub fn initally_set_blocks(
|
||||
input: &LayoutInput,
|
||||
|
|
@ -34,24 +37,24 @@ fn place_block(
|
|||
|
||||
let b = &input.blocks[blocks.len()];
|
||||
for _ in 0..retries {
|
||||
let dir = rng.r#gen::<Direction>();
|
||||
let dir = rng.random::<Direction>();
|
||||
|
||||
let pos = match dir {
|
||||
Direction::Up => Position::new(
|
||||
rng.gen_range(0..=(size.x - b.size.x)),
|
||||
rng.gen_range(0..=(size.y - b.size.y)),
|
||||
rng.random_range(0..=(size.x - b.size.x)),
|
||||
rng.random_range(0..=(size.y - b.size.y)),
|
||||
),
|
||||
Direction::Right => Position::new(
|
||||
rng.gen_range((b.size.y - 1)..size.x),
|
||||
rng.gen_range(0..=(size.y - b.size.x)),
|
||||
rng.random_range((b.size.y - 1)..size.x),
|
||||
rng.random_range(0..=(size.y - b.size.x)),
|
||||
),
|
||||
Direction::Down => Position::new(
|
||||
rng.gen_range((b.size.x - 1)..size.x),
|
||||
rng.gen_range((b.size.y - 1)..size.y),
|
||||
rng.random_range((b.size.x - 1)..size.x),
|
||||
rng.random_range((b.size.y - 1)..size.y),
|
||||
),
|
||||
Direction::Left => Position::new(
|
||||
rng.gen_range(0..=(size.x - b.size.y)),
|
||||
rng.gen_range((b.size.x - 1)..size.y),
|
||||
rng.random_range(0..=(size.x - b.size.y)),
|
||||
rng.random_range((b.size.x - 1)..size.y),
|
||||
),
|
||||
};
|
||||
|
||||
|
|
@ -148,7 +151,7 @@ pub fn mutate<R: Rng>(
|
|||
loop {
|
||||
let p = r.choose_weighted(rng, |i| i.1).unwrap().0;
|
||||
|
||||
if p(input, output, &mut blocks, rng) && rng.gen_bool(0.5) {
|
||||
if p(input, output, &mut blocks, rng) && rng.random_bool(0.5) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -162,28 +165,28 @@ fn mutate_replace<R: Rng>(
|
|||
rng: &mut R,
|
||||
) -> bool {
|
||||
let _ = input;
|
||||
let i = rng.gen_range(0..blocks.len());
|
||||
let i = rng.random_range(0..blocks.len());
|
||||
let block = blocks[i];
|
||||
let dir = rng.r#gen::<Direction>();
|
||||
let dir = rng.random::<Direction>();
|
||||
|
||||
let size = output.size;
|
||||
|
||||
let pos = match dir {
|
||||
Direction::Up => Position::new(
|
||||
rng.gen_range(0..=(size.x - block.size().x)),
|
||||
rng.gen_range(0..=(size.y - block.size().y)),
|
||||
rng.random_range(0..=(size.x - block.size().x)),
|
||||
rng.random_range(0..=(size.y - block.size().y)),
|
||||
),
|
||||
Direction::Right => Position::new(
|
||||
rng.gen_range((block.size().y - 1)..size.x),
|
||||
rng.gen_range(0..=(size.y - block.size().x)),
|
||||
rng.random_range((block.size().y - 1)..size.x),
|
||||
rng.random_range(0..=(size.y - block.size().x)),
|
||||
),
|
||||
Direction::Down => Position::new(
|
||||
rng.gen_range((block.size().x - 1)..size.x),
|
||||
rng.gen_range((block.size().y - 1)..size.y),
|
||||
rng.random_range((block.size().x - 1)..size.x),
|
||||
rng.random_range((block.size().y - 1)..size.y),
|
||||
),
|
||||
Direction::Left => Position::new(
|
||||
rng.gen_range(0..=(size.x - block.size().y)),
|
||||
rng.gen_range((block.size().x - 1)..size.y),
|
||||
rng.random_range(0..=(size.x - block.size().y)),
|
||||
rng.random_range((block.size().x - 1)..size.y),
|
||||
),
|
||||
};
|
||||
|
||||
|
|
@ -210,7 +213,7 @@ fn mutate_flip<R: Rng>(
|
|||
) -> bool {
|
||||
let _ = output;
|
||||
let _ = input;
|
||||
let i = rng.gen_range(0..blocks.len());
|
||||
let i = rng.random_range(0..blocks.len());
|
||||
let block = blocks[i];
|
||||
|
||||
blocks[i] = Block::new(
|
||||
|
|
@ -233,10 +236,10 @@ fn mutate_jiggle<R: Rng>(
|
|||
rng: &mut R,
|
||||
) -> bool {
|
||||
let _ = input;
|
||||
let i = rng.gen_range(0..blocks.len());
|
||||
let i = rng.random_range(0..blocks.len());
|
||||
let block = blocks[i];
|
||||
|
||||
let dir = rng.r#gen::<Direction>();
|
||||
let dir = rng.random::<Direction>();
|
||||
let step = [(1, 10), (2, 5), (3, 5)]
|
||||
.choose_weighted(rng, |i| i.1)
|
||||
.unwrap()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue