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_;
168 template <
typename Rows>
172 bool changed =
false;
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;
193 #endif // OR_TOOLS_GLOP_VARIABLE_VALUES_H_
void Set(ColIndex col, Fractional value)
void UpdateDualPrices(const std::vector< RowIndex > &row)
std::string StatString() const
StrictITIVector< RowIndex, ColIndex > RowToColMapping
void SetNonBasicVariableValueFromStatus(ColIndex col)
bool UpdatePrimalPhaseICosts(const Rows &rows, DenseRow *objective)
void RecomputeDualPrices()
#define SCOPED_TIME_STAT(stats)
std::string StatString() const
const DenseRow & GetDenseRow() const
Fractional ComputeMaximumPrimalResidual() const
void UpdateGivenNonBasicVariables(const std::vector< ColIndex > &cols_to_update, bool update_basic_variables)
void RecomputeBasicVariableValues()
Fractional ComputeMaximumPrimalInfeasibility() const
const DenseRow & GetVariableUpperBounds() const
Fractional ComputeSumOfPrimalInfeasibilities() const
const DenseRow & GetVariableLowerBounds() const
const Fractional Get(ColIndex col) const
void UpdateOnPivoting(const ScatteredColumn &direction, ColIndex entering_col, Fractional step)
Collection of objects used to extend the Constraint Solver library.
double primal_feasibility_tolerance() const
void ResetAllNonBasicVariableValues(const DenseRow &free_initial_values)
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)
StrictITIVector< ColIndex, Fractional > DenseRow