@@ -5,10 +5,17 @@ SAA baseline policy: builds a stochastic instance from all K scenarios and solve
55via column generation.
66Returns a single labeled [`DataSample`](@ref) with `extra=(; scenarios)`.
77"""
8- function svs_saa_policy (sample , scenarios)
9- stochastic_inst = build_stochastic_instance (sample . instance, scenarios)
8+ function svs_saa_policy (instance_sample, ctx_sample , scenarios)
9+ stochastic_inst = build_stochastic_instance (instance_sample . instance, scenarios)
1010 y = column_generation_algorithm (stochastic_inst)
11- return [DataSample (; sample. context... , x= sample. x, y, extra= (; scenarios))]
11+ return [
12+ DataSample (;
13+ instance_sample. instance_kwargs... ,
14+ x= ctx_sample. x,
15+ y,
16+ extra= (; ctx_sample. extra... , scenarios),
17+ ),
18+ ]
1219end
1320
1421"""
@@ -17,9 +24,18 @@ $TYPEDSIGNATURES
1724Deterministic baseline policy: solves the deterministic MIP (ignores scenario delays).
1825Returns a single labeled [`DataSample`](@ref) with `extra=(; scenarios)`.
1926"""
20- function svs_deterministic_policy (sample, scenarios; model_builder= highs_model)
21- y = deterministic_mip (sample. instance; model_builder)
22- return [DataSample (; sample. context... , x= sample. x, y, extra= (; scenarios))]
27+ function svs_deterministic_policy (
28+ instance_sample, ctx_sample, scenarios; model_builder= highs_model
29+ )
30+ y = deterministic_mip (instance_sample. instance; model_builder)
31+ return [
32+ DataSample (;
33+ instance_sample. instance_kwargs... ,
34+ x= ctx_sample. x,
35+ y,
36+ extra= (; ctx_sample. extra... , scenarios),
37+ ),
38+ ]
2339end
2440
2541"""
@@ -29,24 +45,60 @@ Local search baseline policy: builds a stochastic instance from all K scenarios
2945solves via local search heuristic.
3046Returns a single labeled [`DataSample`](@ref) with `extra=(; scenarios)`.
3147"""
32- function svs_local_search_policy (sample , scenarios)
33- stochastic_inst = build_stochastic_instance (sample . instance, scenarios)
48+ function svs_local_search_policy (instance_sample, ctx_sample , scenarios)
49+ stochastic_inst = build_stochastic_instance (instance_sample . instance, scenarios)
3450 y = local_search (stochastic_inst)
35- return [DataSample (; sample. context... , x= sample. x, y, extra= (; scenarios))]
51+ return [
52+ DataSample (;
53+ instance_sample. instance_kwargs... ,
54+ x= ctx_sample. x,
55+ y,
56+ extra= (; ctx_sample. extra... , scenarios),
57+ ),
58+ ]
59+ end
60+
61+ """
62+ $TYPEDSIGNATURES
63+
64+ Exact SAA MIP policy (linearized): solves the stochastic VSP exactly for the given
65+ scenarios via [`compact_linearized_mip`](@ref).
66+ Returns a single labeled [`DataSample`](@ref) with `extra=(; scenarios)`.
67+
68+ Prefer this over [`svs_saa_policy`](@ref) when an exact solution is needed; requires
69+ SCIP (default) or Gurobi.
70+ """
71+ function svs_saa_mip_policy (
72+ instance_sample, ctx_sample, scenarios; model_builder= scip_model
73+ )
74+ y = compact_linearized_mip (instance_sample. instance, scenarios; model_builder)
75+ return [
76+ DataSample (;
77+ instance_sample. instance_kwargs... ,
78+ x= ctx_sample. x,
79+ y,
80+ extra= (; ctx_sample. extra... , scenarios),
81+ ),
82+ ]
3683end
3784
3885"""
3986$TYPEDSIGNATURES
4087
4188Return the named baseline policies for [`StochasticVehicleSchedulingBenchmark`](@ref).
42- Each policy has signature `(sample , scenarios) -> Vector{DataSample}`.
89+ Each policy has signature `(instance_sample, ctx_sample , scenarios) -> Vector{DataSample}`.
4390"""
4491function svs_generate_baseline_policies (:: StochasticVehicleSchedulingBenchmark )
4592 return (;
4693 deterministic= Policy (
4794 " Deterministic MIP" , " Ignores delays" , svs_deterministic_policy
4895 ),
4996 saa= Policy (" SAA (col gen)" , " Stochastic MIP over K scenarios" , svs_saa_policy),
97+ saa_mip= Policy (
98+ " SAA (exact MIP)" ,
99+ " Exact stochastic MIP over K scenarios via compact linearized formulation" ,
100+ svs_saa_mip_policy,
101+ ),
50102 local_search= Policy (
51103 " Local search" , " Heuristic with K scenarios" , svs_local_search_policy
52104 ),
0 commit comments