Skip to content

Commit 7608f4c

Browse files
committed
Added function has_second_order_corrections() to ConstraintRelaxationStrategy and subclasses
1 parent c38a649 commit 7608f4c

5 files changed

Lines changed: 22 additions & 0 deletions

File tree

uno/ingredients/constraint_relaxation_strategies/ConstraintRelaxationStrategy.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ namespace uno {
4141
virtual void switch_to_feasibility_problem(Statistics& statistics, Iterate& current_iterate, Direction& direction,
4242
Evaluations& current_evaluations, WarmstartInformation& warmstart_information) = 0;
4343

44+
// second-order corrections
45+
[[nodiscard]] virtual bool has_second_order_corrections() const = 0;
46+
4447
// trial iterate acceptance
4548
[[nodiscard]] virtual bool is_iterate_acceptable(Statistics& statistics, const Model& model, Iterate& current_iterate,
4649
Iterate& trial_iterate, const Direction& direction, double step_length, bool uses_trust_region,

uno/ingredients/constraint_relaxation_strategies/FeasibilityRestoration.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,15 @@ namespace uno {
164164
warmstart_information.whole_problem_changed();
165165
}
166166

167+
bool FeasibilityRestoration::has_second_order_corrections() const {
168+
if (this->current_phase == Phase::OPTIMALITY) {
169+
return this->subproblem_solver->has_second_order_corrections();
170+
}
171+
else {
172+
return this->feasibility_subproblem_solver->has_second_order_corrections();
173+
}
174+
}
175+
167176
void FeasibilityRestoration::solve_subproblem(Statistics& statistics, const Subproblem& subproblem,
168177
SubproblemSolver& subproblem_solver, const OptimizationProblem& problem, GlobalizationStrategy& globalization_strategy,
169178
Iterate& current_iterate, Direction& direction, double trust_region_radius, Evaluations& current_evaluations,

uno/ingredients/constraint_relaxation_strategies/FeasibilityRestoration.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ namespace uno {
3636
void switch_to_feasibility_problem(Statistics& statistics, Iterate& current_iterate, Direction& direction,
3737
Evaluations& current_evaluations, WarmstartInformation& warmstart_information) override;
3838

39+
// second-order corrections
40+
[[nodiscard]] bool has_second_order_corrections() const override;
41+
3942
// trial iterate acceptance
4043
[[nodiscard]] bool is_iterate_acceptable(Statistics& statistics, const Model& model, Iterate& current_iterate,
4144
Iterate& trial_iterate, const Direction& direction, double step_length, bool uses_trust_region,

uno/ingredients/constraint_relaxation_strategies/NoRelaxation.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ namespace uno {
9191
throw std::runtime_error("Switching to the feasibility problem should not happen");
9292
}
9393

94+
bool NoRelaxation::has_second_order_corrections() const {
95+
return this->subproblem_solver->has_second_order_corrections();
96+
}
97+
9498
bool NoRelaxation::is_iterate_acceptable(Statistics& statistics, const Model& /*model*/, Iterate& current_iterate,
9599
Iterate& trial_iterate, const Direction& direction, double step_length, bool uses_trust_region,
96100
EvaluationCache& evaluation_cache, WarmstartInformation& warmstart_information, UserCallbacks& user_callbacks) {

uno/ingredients/constraint_relaxation_strategies/NoRelaxation.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ namespace uno {
3232
void switch_to_feasibility_problem(Statistics& statistics, Iterate& current_iterate, Direction& direction,
3333
Evaluations& current_evaluations, WarmstartInformation& warmstart_information) override;
3434

35+
// second-order corrections
36+
[[nodiscard]] bool has_second_order_corrections() const override;
37+
3538
// trial iterate acceptance
3639
[[nodiscard]] bool is_iterate_acceptable(Statistics& statistics, const Model& model, Iterate& current_iterate,
3740
Iterate& trial_iterate, const Direction& direction, double step_length, bool uses_trust_region,

0 commit comments

Comments
 (0)