12 const std::vector<Benders::Criterion::CriterionSingleInputData>
13 &outer_loop_input_data);
14 bool Update_bilevel_data_if_feasible(
15 const Point &x,
const std::vector<double> &outer_loop_criterion,
16 double overall_cost,
double invest_cost_at_x,
double lambda);
18 void Init(
const std::vector<double> &obj,
const Point &max_invest,
19 const VariableMap &master_variable);
20 double LambdaMax()
const {
return lambda_max_; }
21 double LambdaMin()
const {
return lambda_min_; }
22 void SetLambda(
double lambda) { lambda_ = lambda; }
23 double BilevelBestub()
const {
return bilevel_best_ub_; }
24 bool FoundFeasible()
const {
return found_feasible_; }
25 const Point &BilevelBestX()
const;
28 bool Check_bilevel_feasibility(
29 const std::vector<double> &outer_loop_criterion,
double overall_cost);
30 void SetLambdaMaxToMaxInvestmentCosts(
const std::vector<double> &obj,
31 const Point &max_invest,
32 const VariableMap &master_variable);
33 void Update(
const Point &x,
double overall_cost,
double invest_cost_at_x);
34 bool IsCriterionSatisfied(
const std::vector<double> &outer_loop_criterions);
35 bool found_feasible_ =
false;
36 double bilevel_best_ub_ = +1e20;
37 Point bilevel_best_x_;
40 double lambda_max_ = 0.0;
41 double lambda_min_ = 0.0;
43 const std::vector<Benders::Criterion::CriterionSingleInputData>
44 &outer_loop_input_data_;