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;
150 const ColIndex num_rows = left_inverse->
values.
size();
151 for (ColIndex
col(0);
col < num_rows; ++
col) {
171 const RowIndex num_rows = right_inverse->
values.
size();
172 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
Fractional ScaleObjective(GlopParameters::CostScalingAlgorithm method)
const DenseColumn & constraint_lower_bounds() const
const DenseColumn & constraint_upper_bounds() const
ColIndex num_variables() const
RowIndex num_constraints() const
void Scale(LinearProgram *lp)
Fractional ScaleConstraintActivity(RowIndex row, Fractional value) const
Fractional ScaleVariableValue(ColIndex col, Fractional value) const
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 ScaleReducedCost(ColIndex col, Fractional value) const
Fractional UnscaleConstraintActivity(RowIndex row, Fractional value) const
Fractional ScaleDualValue(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)
Collection of objects used to extend the Constraint Solver library.
std::vector< Index > non_zeros
StrictITIVector< Index, Fractional > values