14#ifndef ORTOOLS_GLOP_LP_SOLVER_H_
15#define ORTOOLS_GLOP_LP_SOLVER_H_
112 return variable_statuses_;
123 return constraint_activities_;
126 return constraint_statuses_;
136 return constraints_dual_ray_;
139 return variable_bounds_dual_ray_;
185 void ResizeSolution(RowIndex num_rows, ColIndex num_cols);
225 double ComputeMaxExpectedObjectiveError(
const LinearProgram& lp);
243 Fractional ComputeMaxCostPerturbationToEnforceOptimality(
245 Fractional ComputeMaxRhsPerturbationToEnforceOptimality(
254 double ComputePrimalValueInfeasibility(
const LinearProgram& lp,
258 double ComputeDualValueInfeasibility(
const LinearProgram& lp,
260 double ComputeReducedCostInfeasibility(
const LinearProgram& lp,
276 std::unique_ptr<RevisedSimplex> revised_simplex_;
279 int num_revised_simplex_iterations_;
297 bool may_have_multiple_solutions_;
298 Fractional max_absolute_primal_infeasibility_;
GlopParameters * GetMutableParameters()
SolverLogger & GetSolverLogger()
const GlopParameters & GetParameters() const
const DenseColumn & constraint_activities() const
const DenseRow & variable_bounds_dual_ray() const
static std::string GlopVersion()
Fractional GetMaximumDualInfeasibility() const
LPSolver(const LPSolver &)=delete
const DenseRow & reduced_costs() const
void SetInitialBasis(const VariableStatusRow &variable_statuses, const ConstraintStatusColumn &constraint_statuses)
int GetNumberOfSimplexIterations() const
const DenseColumn & constraints_dual_ray() const
Fractional GetObjectiveValue() const
double DeterministicTime() const
const ConstraintStatusColumn & constraint_statuses() const
const VariableStatusRow & variable_statuses() const
const DenseRow & variable_values() const
Fractional GetMaximumPrimalInfeasibility() const
ABSL_MUST_USE_RESULT ProblemStatus SolveWithTimeLimit(const LinearProgram &lp, TimeLimit *time_limit)
LPSolver & operator=(const LPSolver &)=delete
const DenseColumn & dual_values() const
void SetParameters(const GlopParameters ¶meters)
bool MayHaveMultipleOptimalSolutions() const
ProblemStatus LoadAndVerifySolution(const LinearProgram &lp, const ProblemSolution &solution)
const DenseRow & primal_ray() const
ABSL_MUST_USE_RESULT ProblemStatus Solve(const LinearProgram &lp)
StrictITIVector< RowIndex, ConstraintStatus > ConstraintStatusColumn
StrictITIVector< ColIndex, VariableStatus > VariableStatusRow
StrictITIVector< RowIndex, Fractional > DenseColumn
StrictITIVector< ColIndex, Fractional > DenseRow
Select next search node to expand Select next item_i to add this new search node to the search Generate a new search node where item_i is not in the knapsack Check validity of this new partial solution(using propagators) - If valid