///|
/// The smallest non-empty case, useful for embedding and smoke tests.
pub fn micro_cvrp_sample() -> @core.VrpInstance {
@core.make_instance(
"micro-cvrp",
@core.ProblemVariant::CVRP,
@core.Depot::new(0.0, 0.0),
@core.VehicleProfile::new(8.0, fleet_size=2),
[
@core.Customer::new(1, 1.0, 0.0, 2.0),
@core.Customer::new(2, 0.0, 2.0, 3.0),
@core.Customer::new(3, 3.0, 0.0, 1.0),
],
)
}
///|
/// A deliberately tight VRPTW case for testing waiting and lateness logic.
pub fn tight_vrptw_sample() -> @core.VrpInstance {
@core.make_instance(
"tight-vrptw",
@core.ProblemVariant::VRPTW,
@core.Depot::new(0.0, 0.0, due_time=80.0),
@core.VehicleProfile::new(12.0, fleet_size=3, max_route_duration=80.0),
[
@core.Customer::new(
1,
3.0,
0.0,
2.0,
ready_time=0.0,
due_time=12.0,
service_time=2.0,
),
@core.Customer::new(
2,
0.0,
3.0,
2.0,
ready_time=8.0,
due_time=25.0,
service_time=2.0,
),
@core.Customer::new(
3,
4.0,
4.0,
3.0,
ready_time=20.0,
due_time=38.0,
service_time=3.0,
),
@core.Customer::new(
4,
1.0,
5.0,
2.0,
ready_time=30.0,
due_time=48.0,
service_time=2.0,
),
@core.Customer::new(
5,
6.0,
1.0,
1.0,
ready_time=40.0,
due_time=60.0,
service_time=2.0,
),
@core.Customer::new(
6,
2.0,
6.0,
1.0,
ready_time=50.0,
due_time=75.0,
service_time=2.0,
),
],
)
}
///|
/// A structurally valid but capacity-infeasible case for error-path tests.
pub fn infeasible_capacity_sample() -> @core.VrpInstance {
@core.make_instance(
"infeasible-capacity",
@core.ProblemVariant::CVRP,
@core.Depot::new(0.0, 0.0),
@core.VehicleProfile::new(1.0, fleet_size=1),
[
@core.Customer::new(1, 1.0, 0.0, 2.0),
@core.Customer::new(2, 0.0, 1.0, 2.0),
],
)
}
///|
/// A moderate deterministic stress case generated from a documented seed.
pub fn generated_stress_sample() -> @core.VrpInstance {
generate_cvrp(
GeneratorConfig::default().tune(
name="generated-stress",
customer_count=48,
vehicle_capacity=70.0,
fleet_size=10,
max_demand=10,
seed=2026,
),
)
}
///|
/// All built-in examples, including edge cases used by the test suite.
pub fn all_sample_names() -> Array[String] {
[
"small-cvrp", "urban-vrptw", "balanced-dispatch", "micro-cvrp", "tight-vrptw",
"infeasible-capacity", "generated-stress",
]
}