14 #ifndef OR_TOOLS_GLOP_ENTERING_VARIABLE_H_
15 #define OR_TOOLS_GLOP_ENTERING_VARIABLE_H_
18 #include "ortools/glop/parameters.pb.h"
64 ABSL_MUST_USE_RESULT
Status
74 std::vector<ColIndex>* bound_flip_candidates, ColIndex* entering_col,
92 std::string
StatString()
const {
return stats_.StatString(); }
102 template <
bool normalize,
bool nested_pricing>
103 void DantzigChooseEnteringColumn(ColIndex* entering_col);
108 template <
bool use_steepest_edge>
109 void NormalizedChooseEnteringColumn(ColIndex* entering_col);
119 GlopParameters parameters_;
120 GlopParameters::PricingRule rule_;
126 num_perfect_ties(
"num_perfect_ties", this) {}
140 std::vector<ColIndex> equivalent_entering_choices_;
144 struct ColWithRatio {
149 bool operator<(
const ColWithRatio& other)
const {
150 if (
ratio == other.ratio) {
152 return col > other.col;
156 return ratio > other.ratio;
165 std::vector<ColWithRatio> breakpoints_;
DenseBitRow * ResetUnusedColumns()
ABSL_MUST_USE_RESULT Status PrimalChooseEnteringColumn(ColIndex *entering_col)
ABSL_MUST_USE_RESULT Status DualChooseEnteringColumn(const UpdateRow &update_row, Fractional cost_variation, std::vector< ColIndex > *bound_flip_candidates, ColIndex *entering_col, Fractional *step)
EnteringVariable(const VariablesInfo &variables_info, random_engine_t *random, ReducedCosts *reduced_costs, PrimalEdgeNorms *primal_edge_norms)
ABSL_MUST_USE_RESULT Status DualPhaseIChooseEnteringColumn(const UpdateRow &update_row, Fractional cost_variation, ColIndex *entering_col, Fractional *step)
void SetPricingRule(GlopParameters::PricingRule rule)
void SetParameters(const GlopParameters ¶meters)
std::string StatString() const
Bitset64< ColIndex > DenseBitRow
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
std::mt19937 random_engine_t
Fractional coeff_magnitude