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) {
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 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
constexpr ColIndex kInvalidCol(-1)
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)
Collection of objects used to extend the Constraint Solver library.
std::vector< Index > non_zeros
StrictITIVector< Index, Fractional > values