14#ifndef OR_TOOLS_GLOP_VARIABLE_VALUES_H_
15#define OR_TOOLS_GLOP_VARIABLE_VALUES_H_
104 bool update_basic_variables);
123 template <
typename Rows>
137 return variable_values_[
col] -
142 variable_values_[
col];
146 const GlopParameters& parameters_;
147 const CompactSparseMatrix& matrix_;
149 const VariablesInfo& variables_info_;
150 const BasisFactorization& basis_factorization_;
153 DualEdgeNorms* dual_edge_norms_;
154 DynamicMaximum<RowIndex>* dual_prices_;
159 mutable StatsGroup stats_;
160 mutable ScatteredColumn scratchpad_;
163 ScatteredColumn initially_all_zero_scratchpad_;
168template <
typename Rows>
172 bool changed =
false;
173 const Fractional tolerance = parameters_.primal_feasibility_tolerance();
174 for (
const RowIndex
row : rows) {
175 const ColIndex
col = basis_[
row];
177 if (GetUpperBoundInfeasibility(
col) > tolerance) {
179 }
else if (GetLowerBoundInfeasibility(
col) > tolerance) {
182 if (new_cost != (*objective)[
col]) {
184 (*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)
void ResetAllNonBasicVariableValues(const DenseRow &free_initial_values)
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)
const DenseRow & GetDenseRow() const
std::string StatString() const
const DenseRow & GetVariableLowerBounds() const
const DenseRow & GetVariableUpperBounds() const
StrictITIVector< ColIndex, Fractional > DenseRow
StrictITIVector< RowIndex, ColIndex > RowToColMapping
Collection of objects used to extend the Constraint Solver library.
#define SCOPED_TIME_STAT(stats)