Skip to content

Commit a90a3d5

Browse files
committed
simplify interface
1 parent d51fe95 commit a90a3d5

File tree

8 files changed

+53
-36
lines changed

8 files changed

+53
-36
lines changed

src/DecisionFocusedLearningBenchmarks.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,11 @@ using .DynamicAssortment
7474
export AbstractBenchmark, AbstractStochasticBenchmark, AbstractDynamicBenchmark, DataSample
7575

7676
export generate_sample, generate_dataset, generate_environments, generate_environment
77+
export generate_scenario
7778
export generate_scenario_generator, generate_anticipative_solver
7879
export generate_statistical_model
7980
export generate_maximizer, maximizer_kwargs
81+
export generate_anticipative_solution
8082
export is_exogenous, is_endogenous
8183

8284
export objective_value
@@ -92,7 +94,7 @@ export WarcraftBenchmark
9294
export FixedSizeShortestPathBenchmark
9395
export PortfolioOptimizationBenchmark
9496
export StochasticVehicleSchedulingBenchmark
95-
export DVSPBenchmark
97+
export DynamicVehicleSchedulingBenchmark
9698
export DynamicAssortmentBenchmark
9799

98100
end # module DecisionFocusedLearningBenchmarks

src/DynamicVehicleScheduling/DynamicVehicleScheduling.jl

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Abstract type for dynamic vehicle scheduling benchmarks.
5555
# Fields
5656
$TYPEDFIELDS
5757
"""
58-
@kwdef struct DVSPBenchmark <: AbstractDynamicBenchmark{true}
58+
@kwdef struct DynamicVehicleSchedulingBenchmark <: AbstractDynamicBenchmark{true}
5959
"todo"
6060
max_requests_per_epoch::Int = 10
6161
"todo"
@@ -66,7 +66,7 @@ $TYPEDFIELDS
6666
two_dimensional_features::Bool = false
6767
end
6868

69-
function Utils.generate_dataset(b::DVSPBenchmark, dataset_size::Int=1)
69+
function Utils.generate_dataset(b::DynamicVehicleSchedulingBenchmark, dataset_size::Int=1)
7070
(; max_requests_per_epoch, Δ_dispatch, epoch_duration) = b
7171
files = readdir(datadep"dvrptw"; join=true)
7272
dataset_size = min(dataset_size, length(files))
@@ -82,23 +82,29 @@ function Utils.generate_dataset(b::DVSPBenchmark, dataset_size::Int=1)
8282
]
8383
end
8484

85-
function Utils.generate_environment(::DVSPBenchmark, instance::Instance; kwargs...)
85+
function Utils.generate_environment(
86+
::DynamicVehicleSchedulingBenchmark, instance::Instance; kwargs...
87+
)
8688
return DVSPEnv(instance; kwargs...)
8789
end
8890

89-
function Utils.generate_maximizer(::DVSPBenchmark)
91+
function Utils.generate_maximizer(::DynamicVehicleSchedulingBenchmark)
9092
return LinearMaximizer(oracle; g, h)
9193
end
9294

93-
function Utils.generate_scenario_generator(::DVSPBenchmark)
94-
return generate_scenario
95+
function Utils.generate_scenario(b::DynamicVehicleSchedulingBenchmark, args...; kwargs...)
96+
return Utils.generate_scenario(args...; kwargs...)
9597
end
9698

97-
function Utils.generate_anticipative_solver(b::DVSPBenchmark; kwargs...)
98-
return AnticipativeSolver(b.two_dimensional_features)
99+
function Utils.generate_anticipative_solution(
100+
b::DynamicVehicleSchedulingBenchmark, args...; kwargs...
101+
)
102+
return anticipative_solver(
103+
args...; kwargs..., two_dimensional_features=b.two_dimensional_features
104+
)
99105
end
100106

101-
export DVSPBenchmark #, generate_environment # , generate_sample, generate_anticipative_solver
107+
export DynamicVehicleSchedulingBenchmark
102108
export run_policy!,
103109
GreedyVSPPolicy, LazyVSPPolicy, KleopatraVSPPolicy, AnticipativeVSPPolicy
104110

src/DynamicVehicleScheduling/algorithms/anticipative_solver.jl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -196,16 +196,16 @@ function anticipative_solver(
196196
return obj, dataset
197197
end
198198

199-
@kwdef struct AnticipativeSolver
200-
is_2D::Bool = false
201-
end
202-
203-
function (solver::AnticipativeSolver)(env::DVSPEnv, scenario=env.scenario; reset_env=false)
204-
return anticipative_solver(
205-
env,
206-
scenario;
207-
model_builder=highs_model,
208-
reset_env,
209-
two_dimensional_features=solver.is_2D,
210-
)
211-
end
199+
# @kwdef struct AnticipativeSolver
200+
# is_2D::Bool = false
201+
# end
202+
203+
# function (solver::AnticipativeSolver)(env::DVSPEnv, scenario=env.scenario; reset_env=false)
204+
# return generate_anticipative_decision(
205+
# env,
206+
# scenario;
207+
# model_builder=highs_model,
208+
# reset_env,
209+
# two_dimensional_features=solver.is_2D,
210+
# )
211+
# end

src/DynamicVehicleScheduling/environment/environment.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ $TYPEDSIGNATURES
1313
Constructor for [`DVSPEnv`](@ref).
1414
"""
1515
function DVSPEnv(instance::Instance; seed=nothing, rng=MersenneTwister(seed))
16-
scenario = generate_scenario(instance; rng, seed)
16+
scenario = Utils.generate_scenario(instance; rng, seed)
1717
initial_state = DVSPState(instance; scenario[1]...)
1818
return DVSPEnv(instance, initial_state, scenario)
1919
end
@@ -76,6 +76,6 @@ function CommonRLInterface.act!(env::DVSPEnv, routes, scenario=env.scenario)
7676
return reward
7777
end
7878

79-
function generate_scenario(env::DVSPEnv; kwargs...)
79+
function Utils.generate_scenario(env::DVSPEnv; kwargs...)
8080
return generate_scenario(env.instance; kwargs...)
8181
end

src/DynamicVehicleScheduling/environment/scenario.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function Base.getindex(scenario::Scenario, idx::Integer)
1616
)
1717
end
1818

19-
function generate_scenario(
19+
function Utils.generate_scenario(
2020
instance::Instance; seed=nothing, rng::AbstractRNG=MersenneTwister(seed)
2121
)
2222
(; Δ_dispatch, static_instance, last_epoch, epoch_duration, max_requests_per_epoch) =
@@ -46,6 +46,6 @@ function generate_scenario(
4646
return Scenario(new_indices, new_service_time, new_start_time)
4747
end
4848

49-
function generate_scenario(sample::DataSample; kwargs...)
50-
return generate_scenario(sample.instance; kwargs...)
49+
function Utils.generate_scenario(sample::DataSample; kwargs...)
50+
return Utils.generate_scenario(sample.instance; kwargs...)
5151
end

src/DynamicVehicleScheduling/policy/anticipative_policy.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ Apply the anticipative policy to the environment.
1313
function run_policy!(
1414
::AnticipativeVSPPolicy, env::DVSPEnv, scenario=env.scenario; model_builder=highs_model
1515
)
16-
return anticipative_solver(env, scenario; model_builder, reset_env=true)
16+
return generate_anticipative_solution(env, scenario; model_builder, reset_env=true)
1717
end

src/Utils/Utils.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ export generate_dataset,
2525
generate_statistical_model,
2626
generate_maximizer,
2727
generate_sample,
28+
generate_scenario,
2829
generate_scenario_generator,
2930
generate_anticipative_solver,
3031
generate_environment,
3132
generate_environments
33+
export generate_anticipative_solution
3234
export plot_data, compute_gap
3335
export maximizer_kwargs
3436
export grid_graph, get_path, path_to_matrix

src/Utils/interface.jl

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -192,18 +192,25 @@ abstract type AbstractStochasticBenchmark{exogenous} <: AbstractBenchmark end
192192
is_exogenous(::AbstractStochasticBenchmark{exogenous}) where {exogenous} = exogenous
193193
is_endogenous(::AbstractStochasticBenchmark{exogenous}) where {exogenous} = !exogenous
194194

195-
# only works for exogenous noise
196-
function generate_scenario end
197-
198195
"""
199-
generate_scenario_generator(::AbstractStochasticBenchmark{true}; kwargs...)
196+
generate_anticipative_solver(::AbstractStochasticBenchmark{true}, instance; kwargs...)
200197
"""
201-
function generate_scenario_generator end
198+
function generate_scenario end
202199

203200
"""
204-
generate_anticipative_solver(::AbstractStochasticBenchmark{true}; kwargs...)
201+
anticipative_policy(::AbstractStochasticBenchmark{true}, instance, scenario; kwargs...)
205202
"""
206-
function generate_anticipative_solver end
203+
function generate_anticipative_solution end
204+
205+
# """
206+
# generate_scenario_generator(::AbstractStochasticBenchmark{true}; kwargs...)
207+
# """
208+
# function generate_scenario_generator end
209+
210+
# """
211+
# generate_anticipative_solver(::AbstractStochasticBenchmark{true}; kwargs...)
212+
# """
213+
# function generate_anticipative_solver end
207214

208215
"""
209216
$TYPEDEF

0 commit comments

Comments
 (0)