14#ifndef OR_TOOLS_GLOP_VARIABLES_INFO_H_
15#define OR_TOOLS_GLOP_VARIABLES_INFO_H_
75 const DenseRow& variable_lower_bounds,
76 const DenseRow& variable_upper_bounds,
146 return upper_bounds_[col] - lower_bounds_[col];
189 void ResetStatusInfo();
195 void SetRelevance(ColIndex col,
bool relevance);
198 void UpdateStatusForNewType(ColIndex col);
241 EntryIndex num_entries_in_relevant_columns_;
244 bool boxed_variables_are_relevant_ =
true;
248 bool in_dual_phase_one_ =
false;
StrictITISpan< ColIndex, const Fractional > ConstView
void TransformToDualPhaseIProblem(Fractional dual_feasibility_tolerance, DenseRow::ConstView reduced_costs)
const DenseBitRow & GetCanDecreaseBitRow() const
const DenseBitRow & GetCanIncreaseBitRow() const
const VariableStatusRow & GetStatusRow() const
VariablesInfo & operator=(const VariablesInfo &)=delete
ColIndex GetNumberOfColumns() const
const DenseRow & GetVariableLowerBounds() const
Returns the variable bounds.
DenseRow * MutableUpperBounds()
const VariableTypeRow & GetTypeRow() const
EntryIndex GetNumEntriesInRelevantColumns() const
const DenseRow & GetVariableUpperBounds() const
void MakeBoxedVariableRelevant(bool value)
DenseRow * MutableLowerBounds()
const DenseBitRow & GetNotBasicBitRow() const
Fractional GetBoundDifference(ColIndex col) const
Returns the distance between the upper and lower bound of the given column.
const DenseBitRow & GetIsRelevantBitRow() const
int ChangeUnusedBasicVariablesToFree(const RowToColMapping &basis)
void UpdateToBasicStatus(ColIndex col)
VariablesInfo(const VariablesInfo &)=delete
This type is neither copyable nor movable.
const DenseBitRow & GetNonBasicBoxedVariables() const
void UpdateToNonBasicStatus(ColIndex col, VariableStatus status)
void EndDualPhaseI(Fractional dual_feasibility_tolerance, DenseRow::ConstView reduced_costs)
bool LoadBoundsAndReturnTrueIfUnchanged(const DenseRow &new_lower_bounds, const DenseRow &new_upper_bounds)
void InitializeFromBasisState(ColIndex first_slack, ColIndex num_new_cols, const BasisState &state)
void InitializeToDefaultStatus()
void InitializeFromMutatedState()
const DenseBitRow & GetIsBasicBitRow() const
int SnapFreeVariablesToBound(Fractional distance, const DenseRow &starting_values)
VariablesInfo(const CompactSparseMatrix &matrix)
Takes references to the linear program data we need.
StrictITIVector< RowIndex, ColIndex > RowToColMapping
Bitset64< ColIndex > DenseBitRow
Row of bits.
VariableType
Different types of variables.
StrictITIVector< ColIndex, VariableType > VariableTypeRow
Row of variable types.
StrictITIVector< ColIndex, VariableStatus > VariableStatusRow
Row of variable statuses.
StrictITIVector< RowIndex, Fractional > DenseColumn
Column-vector types. Column-vector types are indexed by a row index.
StrictITIVector< ColIndex, Fractional > DenseRow
Row-vector types. Row-vector types are indexed by a column index.
In SWIG mode, we don't want anything besides these top-level includes.
bool IsEmpty() const
Returns true if this state is empty.
VariableStatusRow statuses