14#ifndef OR_TOOLS_GLOP_ENTERING_VARIABLE_H_
15#define OR_TOOLS_GLOP_ENTERING_VARIABLE_H_
19#include "absl/random/bit_gen_ref.h"
21#include "ortools/glop/parameters.pb.h"
56 bool nothing_to_recompute,
const UpdateRow& update_row,
57 Fractional cost_variation, std::vector<ColIndex>* bound_flip_candidates,
58 ColIndex* entering_col);
65 bool nothing_to_recompute,
const UpdateRow& update_row,
66 Fractional cost_variation, ColIndex* entering_col);
72 std::string
StatString()
const {
return stats_.StatString(); }
85 absl::BitGenRef random_;
89 GlopParameters parameters_;
95 num_perfect_ties(
"num_perfect_ties", this) {}
104 std::vector<ColIndex> equivalent_entering_choices_;
108 struct ColWithRatio {
113 bool operator<(
const ColWithRatio& other)
const {
114 if (
ratio == other.ratio) {
116 return col > other.col;
120 return ratio > other.ratio;
129 std::vector<ColWithRatio> breakpoints_;
132 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