///|
pub fn small_cvrp_sample() -> @core.VrpInstance {
let depot = @core.Depot::new(50.0, 50.0)
let vehicle = @core.VehicleProfile::new(32.0, fleet_size=4)
let customers = [
@core.Customer::new(1, 10.0, 18.0, 6.0),
@core.Customer::new(2, 18.0, 72.0, 8.0),
@core.Customer::new(3, 24.0, 28.0, 5.0),
@core.Customer::new(4, 61.0, 12.0, 7.0),
@core.Customer::new(5, 73.0, 21.0, 9.0),
@core.Customer::new(6, 78.0, 64.0, 6.0),
@core.Customer::new(7, 45.0, 82.0, 4.0),
@core.Customer::new(8, 28.0, 56.0, 5.0),
]
@core.make_instance(
"small-cvrp",
@core.ProblemVariant::CVRP,
depot,
vehicle,
customers,
)
}
///|
pub fn urban_vrptw_sample() -> @core.VrpInstance {
let depot = @core.Depot::new(40.0, 40.0, due_time=220.0)
let vehicle = @core.VehicleProfile::new(
26.0,
fleet_size=5,
max_route_duration=220.0,
)
let customers = [
@core.Customer::new(
1,
12.0,
20.0,
4.0,
ready_time=0.0,
due_time=65.0,
service_time=5.0,
),
@core.Customer::new(
2,
17.0,
73.0,
6.0,
ready_time=25.0,
due_time=95.0,
service_time=5.0,
),
@core.Customer::new(
3,
30.0,
18.0,
3.0,
ready_time=0.0,
due_time=70.0,
service_time=4.0,
),
@core.Customer::new(
4,
68.0,
22.0,
7.0,
ready_time=35.0,
due_time=120.0,
service_time=6.0,
),
@core.Customer::new(
5,
79.0,
34.0,
4.0,
ready_time=45.0,
due_time=145.0,
service_time=6.0,
),
@core.Customer::new(
6,
74.0,
70.0,
5.0,
ready_time=60.0,
due_time=165.0,
service_time=5.0,
),
@core.Customer::new(
7,
58.0,
82.0,
4.0,
ready_time=55.0,
due_time=175.0,
service_time=5.0,
),
@core.Customer::new(
8,
34.0,
88.0,
2.0,
ready_time=30.0,
due_time=110.0,
service_time=4.0,
),
@core.Customer::new(
9,
21.0,
52.0,
3.0,
ready_time=15.0,
due_time=90.0,
service_time=4.0,
),
@core.Customer::new(
10,
55.0,
49.0,
2.0,
ready_time=40.0,
due_time=150.0,
service_time=3.0,
),
]
@core.make_instance(
"urban-vrptw",
@core.ProblemVariant::VRPTW,
depot,
vehicle,
customers,
)
}
///|
pub fn balanced_dispatch_sample() -> @core.VrpInstance {
let depot = @core.Depot::new(60.0, 60.0, due_time=260.0)
let vehicle = @core.VehicleProfile::new(
30.0,
fleet_size=6,
max_route_duration=260.0,
)
let customers = [
@core.Customer::new(
1,
10.0,
15.0,
4.0,
ready_time=0.0,
due_time=70.0,
service_time=4.0,
),
@core.Customer::new(
2,
16.0,
26.0,
4.0,
ready_time=10.0,
due_time=82.0,
service_time=4.0,
),
@core.Customer::new(
3,
18.0,
71.0,
5.0,
ready_time=18.0,
due_time=102.0,
service_time=5.0,
),
@core.Customer::new(
4,
29.0,
82.0,
3.0,
ready_time=26.0,
due_time=118.0,
service_time=4.0,
),
@core.Customer::new(
5,
42.0,
18.0,
6.0,
ready_time=0.0,
due_time=95.0,
service_time=5.0,
),
@core.Customer::new(
6,
55.0,
16.0,
3.0,
ready_time=28.0,
due_time=120.0,
service_time=4.0,
),
@core.Customer::new(
7,
76.0,
21.0,
5.0,
ready_time=45.0,
due_time=150.0,
service_time=5.0,
),
@core.Customer::new(
8,
83.0,
37.0,
4.0,
ready_time=52.0,
due_time=168.0,
service_time=5.0,
),
@core.Customer::new(
9,
85.0,
66.0,
4.0,
ready_time=65.0,
due_time=180.0,
service_time=5.0,
),
@core.Customer::new(
10,
71.0,
84.0,
5.0,
ready_time=60.0,
due_time=192.0,
service_time=5.0,
),
@core.Customer::new(
11,
57.0,
91.0,
4.0,
ready_time=45.0,
due_time=172.0,
service_time=4.0,
),
@core.Customer::new(
12,
34.0,
90.0,
3.0,
ready_time=30.0,
due_time=150.0,
service_time=4.0,
),
]
@core.make_instance(
"balanced-dispatch",
@core.ProblemVariant::VRPTW,
depot,
vehicle,
customers,
)
}
///|
pub fn sample_names() -> Array[String] {
all_sample_names()
}
///|
pub fn sample_by_name(name : String) -> @core.VrpInstance {
match name {
"small-cvrp" => small_cvrp_sample()
"urban-vrptw" => urban_vrptw_sample()
"balanced-dispatch" => balanced_dispatch_sample()
"micro-cvrp" => micro_cvrp_sample()
"tight-vrptw" => tight_vrptw_sample()
"infeasible-capacity" => infeasible_capacity_sample()
"generated-stress" => generated_stress_sample()
_ => small_cvrp_sample()
}
}