Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
BendersBase Class Referenceabstract
Inheritance diagram for BendersBase:
BendersMpi BendersSequential BendersByBatch BendersSequentialDouble

Public Member Functions

 BendersBase (BendersBaseOptions options, Logger logger, Writer writer, std::shared_ptr< MathLoggerDriver > mathLoggerDriver)
 
virtual void launch ()=0
 
void set_solver_log_file (const std::filesystem::path &log_file)
 
std::filesystem::path solver_log_file () const
 
double execution_time () const
 
virtual std::string BendersName () const =0
 
WorkerMasterDataVect AllCuts () const
 
LogData GetBestIterationData () const
 
void set_input_map (const CouplingMap &coupling_map)
 set the input
 
int MasterRowIndex (const std::string &row_name) const
 
void MasterChangeRhs (int id_row, double val) const
 
void MasterGetRhs (double &rhs, int id_row) const
 
const VariableMap & MasterVariables () const
 
std::vector< double > MasterObjectiveFunctionCoeffs () const
 
void MasterRowsCoeffs (std::vector< int > &mstart, std::vector< int > &mclind, std::vector< double > &dmatval, int size, std::vector< int > &nels, int first, int last) const
 
int MasterGetNElems () const
 
void MasterAddRows (std::vector< char > const &qrtype_p, std::vector< double > const &rhs_p, std::vector< double > const &range_p, std::vector< int > const &mstart_p, std::vector< int > const &mclind_p, std::vector< double > const &dmatval_p, const std::vector< std::string > &row_names={}) const
 
void MasterGetRowType (std::vector< char > &qrtype, int first, int last) const
 
void ResetMasterFromLastIteration ()
 
std::filesystem::path LastMasterPath () const
 Get path to last mps file of master problem.
 
bool MasterIsEmpty () const
 
void DoFreeProblems (bool free_problems)
 
int MasterGetnrows () const
 
int MasterGetncols () const
 
WorkerMasterData BestIterationWorkerMaster () const
 
void SetMasterObjectiveFunctionCoeffsToZeros () const
 
void SetMasterObjectiveFunction (const double *coeffs, int first, int last) const
 
virtual void InitializeProblems ()=0
 
void SetMaxIteration (int max_iteration)
 
BendersBaseOptions Options () const
 
void ResetData (double criterion)
 
virtual void free ()=0
 
void InitExternalValues ()
 
int GetBendersRunNumber () const
 
CurrentIterationData GetCurrentIterationData () const
 

Public Attributes

Logger _logger
 
Writer _writer
 
std::shared_ptr< MathLoggerDrivermathLoggerDriver_
 

Protected Member Functions

virtual void Run ()=0
 
virtual void init_data ()
 Initialize set of data used in the loop.
 
void update_best_ub ()
 Update best upper bound and best optimal variables.
 
bool ShouldBendersStop ()
 
bool is_initial_relaxation_requested () const
 
bool SwitchToIntegerMaster (bool is_relaxed) const
 
virtual void UpdateTrace ()
 Update trace of the Benders for the current iteration.
 
virtual void ComputeXCut ()
 
void ComputeInvestCost ()
 
virtual void compute_ub ()
 
virtual void get_master_value ()
 Solve and get optimal variables of the Master Problem.
 
void GetSubproblemCut (SubProblemDataMap &subproblem_data_map)
 Solve and store optimal variables of all Subproblem Problems.
 
virtual void post_run_actions () const
 
void BuildCutFull (const SubProblemDataMap &subproblem_data_map)
 Add cuts in master problem.
 
virtual void DeactivateIntegrityConstraints () const
 
virtual void ActivateIntegrityConstraints () const
 
virtual void SetDataPreRelaxation ()
 
virtual void ResetDataPostRelaxation ()
 
std::filesystem::path GetSubproblemPath (std::string const &subproblem_name) const
 Get path to subproblem mps file from options.
 
double SubproblemWeight (int subproblem_count, std::string const &name) const
 Return subproblem weight value.
 
std::filesystem::path get_master_path () const
 Get path to master problem mps file from options.
 
std::filesystem::path get_structure_path () const
 Get path to structure txt file from options.
 
LogData bendersDataToLogData (const CurrentIterationData &data) const
 
virtual void reset_master (WorkerMaster *worker_master)
 
void free_master ()
 
void free_subproblems ()
 
void AddSubproblem (const std::pair< std::string, VariableMap > &kvp)
 
WorkerMasterPtr get_master () const
 
void MatchProblemToId ()
 
void AddSubproblemName (const std::string &name)
 
std::string get_master_name () const
 
std::string get_solver_name () const
 
int get_log_level () const
 
bool is_trace () const
 
Point get_x_cut () const
 
void set_x_cut (const Point &x0)
 
Point get_x_out () const
 
void set_x_out (const Point &x0)
 
double get_timer_master () const
 
void set_timer_master (const double &timer_master)
 
double GetSubproblemsWalltime () const
 
void SetSubproblemsWalltime (const double &duration)
 
double GetSubproblemsCpuTime () const
 
void SetSubproblemsCpuTime (const double &duration)
 
double GetSubproblemsCumulativeCpuTime () const
 
void SetSubproblemsCumulativeCpuTime (const double &duration)
 
double GetSubproblemCost () const
 
void SetSubproblemCost (const double &subproblem_cost)
 
bool IsResumeMode () const
 
std::filesystem::path LastIterationFile () const
 
void UpdateMaxNumberIterationResumeMode (const unsigned nb_iteration_done)
 
void SaveCurrentIterationInOutputFile () const
 
void SaveSolutionInOutputFile () const
 
void PrintCurrentIterationCsv ()
 
void OpenCsvFile ()
 
void CloseCsvFile ()
 
void ChecksResumeMode ()
 
virtual void SaveCurrentBendersData ()
 
void ClearCurrentIterationCutTrace ()
 
virtual void EndWritingInOutputFile () const
 
int GetNumIterationsBeforeRestart () const
 
double GetBendersTime () const
 
virtual void write_basis () const
 
SubproblemsMapPtr GetSubProblemMap () const
 
StrVector GetSubProblemNames () const
 
double AbsoluteGap () const
 
double RelativeGap () const
 
double RelaxedGap () const
 
DblVector GetAlpha_i () const
 
void SetAlpha_i (const DblVector &single_subpb_costs_under_approx)
 
int ProblemToId (const std::string &problem_name) const
 
virtual void UpdateStoppingCriterion ()
 Update stopping criterion.
 
virtual bool ShouldRelaxationStop () const
 Check if initial relaxation should stop.
 
int GetNumOfSubProblemsSolvedBeforeResume ()
 
void BoundSimplexIterations (int subproblem_iteration)
 Update maximum and minimum of simplex iterations.
 
void ResetSimplexIterationsBounds ()
 

Protected Attributes

CurrentIterationData _data
 
WorkerMasterDataVect workerMasterDataVect_
 
VariableMap master_variable_map_
 
CouplingMap coupling_map_
 
bool init_data_ = true
 
bool init_problems_ = true
 
bool free_problems_ = true
 
SolverLogManager solver_log_manager_
 

Member Function Documentation

◆ BoundSimplexIterations()

void BendersBase::BoundSimplexIterations ( int  subproblem_iterations)
protected

Update maximum and minimum of simplex iterations.

Parameters
subproblem_iterations: number of iterations done with the subproblem

◆ BuildCutFull()

void BendersBase::BuildCutFull ( const SubProblemDataMap &  subproblem_data_map)
protected

Add cuts in master problem.

Add cuts in master problem according to the selected option

Parameters
all_package: storage of every subproblem information

◆ free()

virtual void BendersBase::free ( )
pure virtual

◆ get_master_value()

void BendersBase::get_master_value ( )
protectedvirtual

Solve and get optimal variables of the Master Problem.

Method to solve and get optimal variables of the Master Problem and update upper and lower bound

Reimplemented in BendersSequentialDouble.

◆ GetSubproblemCut()

void BendersBase::GetSubproblemCut ( SubProblemDataMap &  subproblem_data_map)
protected

Solve and store optimal variables of all Subproblem Problems.

Method to solve and store optimal variables of all Subproblem Problems after fixing trial values

Parameters
subproblem_cut_package: map storing for each subproblem its cut

◆ init_data()

void BendersBase::init_data ( )
protectedvirtual

Initialize set of data used in the loop.

Reimplemented in BendersSequentialDouble.

◆ InitializeProblems()

virtual void BendersBase::InitializeProblems ( )
pure virtual

Implemented in BendersMpi.

◆ Run()

virtual void BendersBase::Run ( )
protectedpure virtual

Implemented in BendersSequential, and BendersMpi.

◆ set_input_map()

void BendersBase::set_input_map ( const CouplingMap &  coupling_map)

set the input

Parameters
coupling_map: CouplingMap

◆ ShouldRelaxationStop()

bool BendersBase::ShouldRelaxationStop ( ) const
protectedvirtual

Check if initial relaxation should stop.

Reimplemented in BendersByBatch.

◆ SubproblemWeight()

double BendersBase::SubproblemWeight ( int  subproblem_count,
std::string const &  name 
) const
protected

Return subproblem weight value.

Parameters
subproblem_count: total number of subproblems
name: subproblem name

◆ update_best_ub()

void BendersBase::update_best_ub ( )
protected

Update best upper bound and best optimal variables.

Function to update best upper bound and best optimal variables regarding the current ones

◆ UpdateStoppingCriterion()

void BendersBase::UpdateStoppingCriterion ( )
protectedvirtual

Update stopping criterion.

Method updating the stopping criterion and reinitializing some datas

Reimplemented in BendersByBatch.

◆ UpdateTrace()

void BendersBase::UpdateTrace ( )
protectedvirtual

Update trace of the Benders for the current iteration.

Fonction to store the current Benders data in the trace

Reimplemented in BendersSequentialDouble.


The documentation for this class was generated from the following files: