122 RowIndex leaving_row,
128 parameters_ = parameters;
133 pricing_rule_ = rule;
143 std::string
StatString()
const {
return stats_.StatString(); }
157 direction_left_inverse_density(
"direction_left_inverse_density",
159 direction_left_inverse_accuracy(
"direction_left_inverse_accuracy",
161 edges_norm_accuracy(
"edges_norm_accuracy", this),
162 lower_bounded_norms(
"lower_bounded_norms", this) {}
170 void ComputeMatrixColumnNorms();
173 void ComputeEdgeSquaredNorms();
177 void ComputeDirectionLeftInverse(ColIndex entering_col,
178 const ScatteredColumn& direction);
181 void UpdateEdgeSquaredNorms(ColIndex entering_col, ColIndex leaving_col,
182 RowIndex leaving_row,
184 const UpdateRow& update_row);
187 void ResetDevexWeights();
190 void UpdateDevexWeights(ColIndex entering_col, ColIndex leaving_col,
191 RowIndex leaving_row,
const DenseColumn& direction,
192 const UpdateRow& update_row);
195 const CompactSparseMatrix& compact_matrix_;
196 const VariablesInfo& variables_info_;
197 const BasisFactorization& basis_factorization_;
198 TimeLimit* time_limit_ =
nullptr;
201 GlopParameters parameters_;
206 bool recompute_edge_squared_norms_;
207 bool reset_devex_weights_;
222 int num_devex_updates_since_reset_;
228 ScatteredRow direction_left_inverse_;
231 int64_t num_operations_;
235 std::vector<bool*> watchers_;