Add bucket queue and PriorityQueueByKey

This commit is contained in:
hal8174 2025-03-28 20:13:33 +01:00
parent ffe51bede9
commit b8f83ec4eb
7 changed files with 245 additions and 21 deletions

View file

@ -4,8 +4,9 @@ use factorio_blueprint_generator::factory::{FactoryGraph, generate_factory};
use factorio_core::{prelude::*, visualize::Visualize};
use factorio_graph::{
priority_queue::{
PriorityQueue,
ByKey, PriorityQueue,
binary_heap::{BinaryHeap, FastBinaryHeap},
bucket_queue::BucketQueue,
},
wheighted_graph::shortest_path::QueueObject,
};
@ -19,7 +20,7 @@ use tracing_subscriber::{EnvFilter, fmt::format::FmtSpan};
#[derive(Parser)]
struct Args {
#[arg(default_value_t = 0)]
#[arg(short, long, default_value_t = 0)]
seed: u64,
#[arg(short, long)]
json: bool,
@ -44,6 +45,7 @@ enum Tracing {
enum PathfinderArg {
CaFbh,
CaBh,
CaBq,
}
fn main() {
@ -92,7 +94,7 @@ where
let p = ConflictAvoidance {
timeout: Some(std::time::Duration::from_millis(100)),
priority_queue: std::marker::PhantomData::<
FastBinaryHeap<QueueObject<(Position, Direction)>>,
FastBinaryHeap<ByKey<QueueObject<(Position, Direction)>>>,
>,
};
execute::<_, _>(args, l, p);
@ -101,7 +103,16 @@ where
let p = ConflictAvoidance {
timeout: Some(std::time::Duration::from_millis(100)),
priority_queue: std::marker::PhantomData::<
BinaryHeap<QueueObject<(Position, Direction)>>,
BinaryHeap<ByKey<QueueObject<(Position, Direction)>>>,
>,
};
execute::<_, _>(args, l, p);
}
PathfinderArg::CaBq => {
let p = ConflictAvoidance {
timeout: Some(std::time::Duration::from_millis(100)),
priority_queue: std::marker::PhantomData::<
BucketQueue<QueueObject<(Position, Direction)>>,
>,
};
execute::<_, _>(args, l, p);