The way mirror descent augment the dataset is through these functions
function _augment_with_anticipative(dataset, anticipative_solver)
return map(dataset) do sample
y = anticipative_solver(sample.scenario; sample.context...)
return DataSample(sample; y=y)
end
end
function _perturbed_sample(sample, model, perturbed_solver, is_minimization, κ)
θ = model(sample.x)
signed_θ = is_minimization ? -κ * θ : κ * θ
y = perturbed_solver(signed_θ; scenario=sample.scenario, sample.context...)
return DataSample(sample; y=y)
end
As we can see, the algorithm expects that the samples has a scenario field, which is not always the case and is not robust.
Moreover, the algorithm uses the scenario stored in sample and only augment with this single scenario.
Meanwhile, we could want to have something that generates randomly a bunch of random scenarios and augment with these.
The way mirror descent augment the dataset is through these functions
As we can see, the algorithm expects that the samples has a
scenariofield, which is not always the case and is not robust.Moreover, the algorithm uses the scenario stored in sample and only augment with this single scenario.
Meanwhile, we could want to have something that generates randomly a bunch of random scenarios and augment with these.