14 #ifndef OR_TOOLS_GLOP_ENTERING_VARIABLE_H_
15 #define OR_TOOLS_GLOP_ENTERING_VARIABLE_H_
21 #include "absl/random/bit_gen_ref.h"
23 #include "ortools/glop/parameters.pb.h"
58 bool nothing_to_recompute,
const UpdateRow& update_row,
59 Fractional cost_variation, std::vector<ColIndex>* bound_flip_candidates,
60 ColIndex* entering_col);
67 bool nothing_to_recompute,
const UpdateRow& update_row,
68 Fractional cost_variation, ColIndex* entering_col);
74 std::string
StatString()
const {
return stats_.StatString(); }
87 absl::BitGenRef random_;
91 GlopParameters parameters_;
97 num_perfect_ties(
"num_perfect_ties", this) {}
106 std::vector<ColIndex> equivalent_entering_choices_;
110 struct ColWithRatio {
111 ColWithRatio() =
default;
116 bool operator<(
const ColWithRatio& other)
const {
117 if (
ratio == other.ratio) {
119 return col > other.col;
123 return ratio > other.ratio;
132 std::vector<ColWithRatio> breakpoints_;
135 int64_t num_operations_ = 0;
EnteringVariable(const VariablesInfo &variables_info, absl::BitGenRef random, ReducedCosts *reduced_costs)
ABSL_MUST_USE_RESULT Status DualPhaseIChooseEnteringColumn(bool nothing_to_recompute, const UpdateRow &update_row, Fractional cost_variation, ColIndex *entering_col)
void SetParameters(const GlopParameters ¶meters)
double DeterministicTime() const
std::string StatString() const
ABSL_MUST_USE_RESULT Status DualChooseEnteringColumn(bool nothing_to_recompute, const UpdateRow &update_row, Fractional cost_variation, std::vector< ColIndex > *bound_flip_candidates, ColIndex *entering_col)
static double DeterministicTimeForFpOperations(int64_t n)
Collection of objects used to extend the Constraint Solver library.
Fractional coeff_magnitude