14 #ifndef OR_TOOLS_GLOP_VARIABLE_VALUES_H_
15 #define OR_TOOLS_GLOP_VARIABLE_VALUES_H_
107 bool update_basic_variables);
133 template <
typename Rows>
147 return variable_values_[
col] -
152 variable_values_[
col];
156 const GlopParameters& parameters_;
157 const CompactSparseMatrix& matrix_;
159 const VariablesInfo& variables_info_;
160 const BasisFactorization& basis_factorization_;
164 bool put_more_importance_on_norm_ =
false;
167 DualEdgeNorms* dual_edge_norms_;
168 DynamicMaximum<RowIndex>* dual_prices_;
173 mutable StatsGroup stats_;
174 mutable ScatteredColumn scratchpad_;
177 ScatteredColumn initially_all_zero_scratchpad_;
182 template <
typename Rows>
186 bool changed =
false;
187 const Fractional tolerance = parameters_.primal_feasibility_tolerance();
188 for (
const RowIndex
row : rows) {
189 const ColIndex
col = basis_[
row];
191 if (GetUpperBoundInfeasibility(
col) > tolerance) {
193 }
else if (GetLowerBoundInfeasibility(
col) > tolerance) {
196 if (new_cost != (*objective)[
col]) {
198 (*objective)[
col] = new_cost;
std::string StatString() const
void UpdateDualPrices(absl::Span< const RowIndex > row)
void Set(ColIndex col, Fractional value)
void SetNonBasicVariableValueFromStatus(ColIndex col)
Fractional ComputeMaximumPrimalInfeasibility() const
Fractional ComputeSumOfPrimalInfeasibilities() const
void UpdateGivenNonBasicVariables(const std::vector< ColIndex > &cols_to_update, bool update_basic_variables)
void ResetAllNonBasicVariableValues(const DenseRow &free_initial_values)
const DenseRow & GetDenseRow() const
void RecomputeDualPrices(bool put_more_importance_on_norm=false)
void UpdateOnPivoting(const ScatteredColumn &direction, ColIndex entering_col, Fractional step)
VariableValues(const GlopParameters ¶meters, const CompactSparseMatrix &matrix, const RowToColMapping &basis, const VariablesInfo &variables_info, const BasisFactorization &basis_factorization, DualEdgeNorms *dual_edge_norms, DynamicMaximum< RowIndex > *dual_prices)
const Fractional Get(ColIndex col) const
void RecomputeBasicVariableValues()
Fractional ComputeMaximumPrimalResidual() const
bool UpdatePrimalPhaseICosts(const Rows &rows, DenseRow *objective)
std::string StatString() const
const DenseRow & GetVariableUpperBounds() const
const DenseRow & GetVariableLowerBounds() const
StrictITIVector< ColIndex, Fractional > DenseRow
StrictITIVector< RowIndex, ColIndex > RowToColMapping
Collection of objects used to extend the Constraint Solver library.
#define SCOPED_TIME_STAT(stats)