@@ -215,7 +215,7 @@ context known before the scenario is revealed) and a **random scenario** (the un
215215part). Decisions are taken by seeing only the instance. Scenarios are used to generate
216216anticipative targets and compute objective values.
217217
218- # Required methods (exogenous benchmarks, `{true}` only)
218+ # Required methods ([`ExogenousStochasticBenchmark`](@ref) only)
219219- [`generate_instance`](@ref)`(bench, rng)`: returns a [`DataSample`](@ref) with instance
220220 and features but **no scenario**. Scenarios are added later by [`generate_dataset`](@ref)
221221 via [`generate_scenario`](@ref).
@@ -230,7 +230,7 @@ anticipative targets and compute objective values.
230230 `argmin_{y ∈ Y} c(y, scenario) + θᵀy`.
231231
232232# Dataset generation (exogenous only)
233- [`generate_dataset`](@ref) is specialised for `AbstractStochasticBenchmark{true}` and
233+ [`generate_dataset`](@ref) is specialised for [`ExogenousStochasticBenchmark`](@ref) and
234234supports all three standard structures via `nb_scenarios`:
235235
236236| Setting | Call |
@@ -251,8 +251,14 @@ abstract type AbstractStochasticBenchmark{exogenous} <: AbstractBenchmark end
251251is_exogenous (:: AbstractStochasticBenchmark{exogenous} ) where {exogenous} = exogenous
252252is_endogenous (:: AbstractStochasticBenchmark{exogenous} ) where {exogenous} = ! exogenous
253253
254+ " Alias for [`AbstractStochasticBenchmark`](@ref)`{true}`. Uncertainty is independent of decisions."
255+ const ExogenousStochasticBenchmark = AbstractStochasticBenchmark{true }
256+
257+ " Alias for [`AbstractStochasticBenchmark`](@ref)`{false}`. Uncertainty depends on decisions."
258+ const EndogenousStochasticBenchmark = AbstractStochasticBenchmark{false }
259+
254260"""
255- generate_scenario(::AbstractStochasticBenchmark{true} , rng::AbstractRNG; kwargs...) -> scenario
261+ generate_scenario(::ExogenousStochasticBenchmark , rng::AbstractRNG; kwargs...) -> scenario
256262
257263Draw a random scenario. Instance and context fields are passed as keyword arguments,
258264spread from `sample.context`:
@@ -275,7 +281,7 @@ Return a callable that computes the anticipative solution.
275281function generate_anticipative_solver end
276282
277283"""
278- generate_parametric_anticipative_solver(::AbstractStochasticBenchmark{true} ) -> callable
284+ generate_parametric_anticipative_solver(::ExogenousStochasticBenchmark ) -> callable
279285
280286**Optional.** Return a callable `(θ, scenario; kwargs...) -> y` that solves the
281287parametric anticipative subproblem:
@@ -299,7 +305,7 @@ Calls [`generate_instance`](@ref), draws `nb_scenarios` scenarios via
299305(K samples, one per scenario) or SAA (1 sample aggregating all K scenarios).
300306"""
301307function generate_sample (
302- bench:: AbstractStochasticBenchmark{true} ,
308+ bench:: ExogenousStochasticBenchmark ,
303309 rng;
304310 target_policy= nothing ,
305311 nb_scenarios:: Int = 1 ,
@@ -337,7 +343,7 @@ scenario draws. The scenario→sample mapping is controlled by the `target_polic
337343- `kwargs...`: forwarded to [`generate_sample`](@ref).
338344"""
339345function generate_dataset (
340- bench:: AbstractStochasticBenchmark{true} ,
346+ bench:: ExogenousStochasticBenchmark ,
341347 nb_instances:: Int ;
342348 target_policy= nothing ,
343349 nb_scenarios:: Int = 1 ,
@@ -379,6 +385,12 @@ meaning (whether uncertainty is independent of decisions).
379385"""
380386abstract type AbstractDynamicBenchmark{exogenous} <: AbstractStochasticBenchmark{exogenous} end
381387
388+ " Alias for [`AbstractDynamicBenchmark`](@ref)`{true}`. Uncertainty is independent of decisions."
389+ const ExogenousDynamicBenchmark = AbstractDynamicBenchmark{true }
390+
391+ " Alias for [`AbstractDynamicBenchmark`](@ref)`{false}`. Uncertainty depends on decisions."
392+ const EndogenousDynamicBenchmark = AbstractDynamicBenchmark{false }
393+
382394"""
383395 generate_environment(::AbstractDynamicBenchmark, rng::AbstractRNG; kwargs...)
384396
@@ -424,7 +436,7 @@ to obtain standard baseline callables (e.g. the anticipative solver).
424436- `rng`: random number generator.
425437"""
426438function generate_dataset (
427- bench:: AbstractDynamicBenchmark{true} ,
439+ bench:: ExogenousDynamicBenchmark ,
428440 environments:: AbstractVector ;
429441 target_policy,
430442 seed= nothing ,
@@ -450,7 +462,7 @@ via [`generate_environments`](@ref), then calls
450462`target_policy` is a **required** keyword argument.
451463"""
452464function generate_dataset (
453- bench:: AbstractDynamicBenchmark{true} , n:: Int ; target_policy, seed= nothing , kwargs...
465+ bench:: ExogenousDynamicBenchmark , n:: Int ; target_policy, seed= nothing , kwargs...
454466)
455467 environments = generate_environments (bench, n; seed)
456468 return generate_dataset (bench, environments; target_policy, seed, kwargs... )
0 commit comments