27 using Point = std::vector<GeometryValueType>;
44 std::unique_ptr<CheckResult>
check(
Environment const& env,
bool produceScheduler);
55 struct RefinementStep {
57 Point achievablePoint;
58 GeometryValueType optimalWeightedSum;
59 std::optional<storm::storage::Scheduler<ModelValueType>> scheduler;
62 struct WeightedSumOptimizationInput {
64 GeometryValueType epsilonWso;
66 using AnswerOrWeights = std::variant<std::unique_ptr<CheckResult>, WeightedSumOptimizationInput>;
67 AnswerOrWeights tryAnswerOrNextWeights(
Environment const& env, std::vector<RefinementStep>
const& refinementSteps,
PolytopePtr overApproximation,
68 bool produceScheduler);
69 AnswerOrWeights tryAnswerOrNextWeightsAchievability(
Environment const& env, std::optional<uint64_t>
const optObjIndex,
70 std::vector<GeometryValueType>
const& thresholds, std::vector<RefinementStep>
const& refinementSteps,
71 PolytopePtr overApproximation,
bool produceScheduler);
72 AnswerOrWeights tryAnswerOrNextWeightsPareto(
Environment const& env, std::vector<RefinementStep>
const& refinementSteps,
PolytopePtr overApproximation,
73 bool produceScheduler);
80 GeometryValueType getEpsilonWso(
Environment const& env, std::optional<GeometryValueType> approxDistance = std::nullopt);
88 void exportPlotOfCurrentApproximation(
Environment const& env, std::vector<RefinementStep>
const& refinementSteps,
PolytopePtr overApproximation)
const;
90 uint64_t
const initialStateOfOriginalModel;
91 std::vector<Objective<ModelValueType>> objectives;
94 std::unique_ptr<PcaaWeightVectorChecker<SparseModelType>> weightVectorChecker;