14#ifndef OR_TOOLS_GLOP_LU_FACTORIZATION_H_
15#define OR_TOOLS_GLOP_LU_FACTORIZATION_H_
55 ABSL_MUST_USE_RESULT
Status
63 const std::vector<ColIndex>& candidates);
74 inverse_col_perm_.
clear();
203 return stats_.StatString() + markowitz_.
StatString();
222 return inverse_col_perm_;
230 basis_num_entries(
"basis_num_entries", this),
231 lu_fill_in(
"lu_fill_in", this) {}
237 void LeftSolveScratchpad()
const;
240 template <
typename Column>
241 void RightSolveLInternal(
const Column&
b, ScatteredColumn* x)
const;
244 void ComputeTransposeUpper();
247 void ComputeTransposeLower()
const;
251 bool CheckFactorization(
const CompactSparseMatrixView& matrix,
259 bool is_identity_factorization_;
262 TriangularMatrix lower_;
263 TriangularMatrix upper_;
264 TriangularMatrix transpose_upper_;
268 mutable TriangularMatrix transpose_lower_;
282 mutable SparseColumn column_of_upper_;
288 mutable std::vector<RowIndex> non_zero_rows_;
291 mutable Stats stats_;
294 GlopParameters parameters_;
297 Markowitz markowitz_;
Fractional ComputeInverseOneNorm() const
void LeftSolveUWithNonZeros(ScatteredRow *y) const
const SparseColumn & GetColumnOfU(ColIndex col) const
Fractional ComputeInverseInfinityNorm() const
RowToColMapping ComputeInitialBasis(const CompactSparseMatrix &matrix, const std::vector< ColIndex > &candidates)
void RightSolveLForColumnView(const ColumnView &b, ScatteredColumn *x) const
const ColumnPermutation & inverse_col_perm() const
void RightSolveLWithPermutedInput(const DenseColumn &a, ScatteredColumn *x) const
double GetFillInPercentage(const CompactSparseMatrixView &matrix) const
Fractional RightSolveSquaredNorm(const ColumnView &a) const
void RightSolveUWithNonZeros(ScatteredColumn *x) const
const ColumnPermutation & GetColumnPermutation() const
double DeterministicTimeOfLastFactorization() const
void LeftSolve(DenseRow *y) const
bool LeftSolveLWithNonZeros(ScatteredRow *y, ScatteredColumn *result_before_permutation) const
void RightSolve(DenseColumn *x) const
ColIndex LeftSolveUForUnitRow(ColIndex col, ScatteredRow *y) const
Fractional DualEdgeSquaredNorm(RowIndex row) const
void RightSolveLForScatteredColumn(const ScatteredColumn &b, ScatteredColumn *x) const
void RightSolveLWithNonZeros(ScatteredColumn *x) const
Fractional ComputeDeterminant() const
Fractional ComputeInfinityNormConditionNumber(const CompactSparseMatrixView &matrix) const
void ComputeLowerTimesUpper(SparseMatrix *product) const
ABSL_MUST_USE_RESULT Status ComputeFactorization(const CompactSparseMatrixView &compact_matrix)
void SetColumnPermutationToIdentity()
EntryIndex NumberOfEntries() const
Fractional ComputeInverseInfinityNormUpperBound() const
bool IsIdentityFactorization()
void SetParameters(const GlopParameters ¶meters)
Fractional ComputeOneNormConditionNumber(const CompactSparseMatrixView &matrix) const
const RowPermutation & row_perm() const
std::string StatString() const
void SetParameters(const GlopParameters ¶meters)
std::string StatString() const
void PopulateFromProduct(const SparseMatrix &a, const SparseMatrix &b)
void CopyToSparseMatrix(SparseMatrix *output) const
Permutation< ColIndex > ColumnPermutation
StrictITIVector< RowIndex, Fractional > DenseColumn
Permutation< RowIndex > RowPermutation
Collection of objects used to extend the Constraint Solver library.