9 std::vector<unsigned> random_batch_permutation_;
12 using BendersMpi::BendersMpi;
15 void BuildCut(
const std::vector<std::string>& batch_sub_problems,
16 double* batch_contribution_in_gap,
17 std::vector<double>& external_loop_criterion_current_batch,
20 std::string BendersName()
const override
22 return "Benders By Batch mpi";
26 void InitializeProblems()
override;
27 void BroadcastSingleSubpbCostsUnderApprox();
28 void ComputeXCut()
override;
34 void GetSubproblemCut(SubProblemDataMap& subproblem_cut_package,
35 const std::vector<std::string>& batch_sub_problems);
36 void BuildMasterProblem();
37 double ComputeBatchContributionInGap(
38 const std::vector<SubProblemDataMap>& gathered_subproblem_map,
39 const std::vector<SubProblemNamesInCut>& subproblems_per_cut)
const;
40 void GetSubproblemCutCache(SubProblemDataMap& subproblem_data_map,
41 const std::vector<std::string>& batch_sub_problems);
42 Timer calculate_subproblem_contribution(
const std::string& name,
44 void GetSubproblemCutFast(SubProblemDataMap& subproblem_data_map,
45 const std::vector<std::string>& batch_sub_problems);
47 void get_subs_per_cut_per_batch();
53 void SeparationLoop();
54 void UpdateRemainingEpsilon();
57 size_t number_of_batch_;
58 unsigned current_batch_id_;
59 double remaining_epsilon_;
60 double cumulative_subproblems_timer_per_iter_;
62 int first_unsolved_batch_;
void BuildCut(const std::vector< std::string > &batch_sub_problems, double *batch_contribution_in_gap, std::vector< double > &external_loop_criterion_current_batch, int &local_solved)
Build subproblem cut.
Definition BendersByBatch.cpp:344