36 const RowIndex transposed_slack =
ColToRowIndex(slack_variable);
41 for (
const auto& entry : sparse_row) {
42 if (transposed_slack == entry.index())
continue;
44 (*values)[
RowToColIndex(entry.index())] * entry.coefficient();
46 (*values)[slack_variable] = -activation;
54 GlopParameters params;
55 Scale(lp, scaler, params.scaling_method());
61 GlopParameters::ScalingAlgorithm scaling_method) {
62 scaler->
Init(&lp->matrix_);
66 &lp->objective_coefficients_);
68 &lp->variable_upper_bounds_);
70 &lp->variable_lower_bounds_);
73 lp->transpose_matrix_is_consistent_ =
false;
82 objective_scaling_factor_ = 1.0 / lp->
ScaleObjective(params.cost_scaling());
87 bound_scaling_factor_ = 1.0;
88 objective_scaling_factor_ = 1.0;
127 const ColIndex num_rows = left_inverse->
values.
size();
128 for (ColIndex
col(0);
col < num_rows; ++
col) {
148 const RowIndex num_rows = right_inverse->
values.
size();
149 for (RowIndex
row(0);
row < num_rows; ++
row) {
#define DCHECK(condition)
#define DCHECK_EQ(val1, val2)
const SparseMatrix & GetTransposeSparseMatrix() const
ColIndex GetFirstSlackVariable() const
ColIndex GetSlackVariable(RowIndex row) const
const DenseColumn & constraint_lower_bounds() const
Fractional ScaleObjective(GlopParameters::CostScalingAlgorithm method)
const DenseColumn & constraint_upper_bounds() const
ColIndex num_variables() const
RowIndex num_constraints() const
void Scale(LinearProgram *lp)
Fractional VariableScalingFactor(ColIndex col) const
Fractional UnscaleVariableValue(ColIndex col, Fractional value) const
Fractional UnscaleReducedCost(ColIndex col, Fractional value) const
void UnscaleUnitRowLeftSolve(ColIndex basis_col, ScatteredRow *left_inverse) const
void UnscaleColumnRightSolve(const RowToColMapping &basis, ColIndex col, ScatteredColumn *right_inverse) const
Fractional UnscaleDualValue(RowIndex row, Fractional value) const
Fractional UnscaleConstraintActivity(RowIndex row, Fractional value) const
Fractional ColScalingFactor(ColIndex col) const
void ScaleColumnVector(bool up, DenseColumn *column_vector) const
void Init(SparseMatrix *matrix)
void ScaleRowVector(bool up, DenseRow *row_vector) const
void Scale(GlopParameters::ScalingAlgorithm method)
Fractional ColUnscalingFactor(ColIndex col) const
Fractional RowUnscalingFactor(RowIndex row) const
void Scale(LinearProgram *lp, SparseMatrixScaler *scaler, GlopParameters::ScalingAlgorithm scaling_method)
ColIndex RowToColIndex(RowIndex row)
RowIndex ColToRowIndex(ColIndex col)
void ComputeSlackVariablesValues(const LinearProgram &linear_program, DenseRow *values)
void Scale(LinearProgram *lp, SparseMatrixScaler *scaler)
const ColIndex kInvalidCol(-1)
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
std::vector< Index > non_zeros
StrictITIVector< Index, Fractional > values