14 #ifndef OR_TOOLS_GLOP_VARIABLE_VALUES_H_
15 #define OR_TOOLS_GLOP_VARIABLE_VALUES_H_
95 bool update_basic_variables);
114 template <
typename Rows>
128 return variable_values_[
col] -
133 variable_values_[
col];
137 const GlopParameters& parameters_;
138 const CompactSparseMatrix& matrix_;
140 const VariablesInfo& variables_info_;
141 const BasisFactorization& basis_factorization_;
144 DualEdgeNorms* dual_edge_norms_;
145 DynamicMaximum<RowIndex>* dual_prices_;
150 mutable StatsGroup stats_;
151 mutable ScatteredColumn scratchpad_;
154 ScatteredColumn initially_all_zero_scratchpad_;
159 template <
typename Rows>
163 bool changed =
false;
164 const Fractional tolerance = parameters_.primal_feasibility_tolerance();
165 for (
const RowIndex
row : rows) {
166 const ColIndex
col = basis_[
row];
168 if (GetUpperBoundInfeasibility(
col) > tolerance) {
170 }
else if (GetLowerBoundInfeasibility(
col) > tolerance) {
173 if (new_cost != (*objective)[
col]) {
175 (*objective)[
col] = new_cost;
std::string StatString() const
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)
const DenseRow & GetDenseRow() const
void UpdateDualPrices(const std::vector< RowIndex > &row)
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
void RecomputeDualPrices()
bool UpdatePrimalPhaseICosts(const Rows &rows, DenseRow *objective)
void ResetAllNonBasicVariableValues()
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)