Google OR-Tools v9.11
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
operations_research::HighsInterface Class Reference
Inheritance diagram for operations_research::HighsInterface:
operations_research::MPSolverInterface

Public Member Functions

 HighsInterface (MPSolver *solver, bool solve_as_a_mip)
 
 ~HighsInterface () override
 
MPSolver::ResultStatus Solve (const MPSolverParameters &param) override
 --— Solve --—
 
bool SupportsDirectlySolveProto (std::atomic< bool > *interrupt) const override
 --— Directly solve proto is supported without interrupt —
 
MPSolutionResponse DirectlySolveProto (LazyMutableCopy< MPModelRequest > request, std::atomic< bool > *interrupt) override
 
void Reset () override
 --— Model modifications and extraction --—
 
void SetOptimizationDirection (bool maximize) override
 Sets the optimization direction (min/max).
 
void SetVariableBounds (int index, double lb, double ub) override
 Modifies bounds of an extracted variable.
 
void SetVariableInteger (int index, bool integer) override
 Modifies integrality of an extracted variable.
 
void SetConstraintBounds (int index, double lb, double ub) override
 Modify bounds of an extracted variable.
 
void AddRowConstraint (MPConstraint *ct) override
 Adds a linear constraint.
 
void AddVariable (MPVariable *var) override
 Add a variable.
 
void SetCoefficient (MPConstraint *constraint, const MPVariable *variable, double new_value, double old_value) override
 Changes a coefficient in a constraint.
 
void ClearConstraint (MPConstraint *constraint) override
 Clears a constraint from all its terms.
 
void SetObjectiveCoefficient (const MPVariable *variable, double coefficient) override
 Changes a coefficient in the linear objective.
 
void SetObjectiveOffset (double value) override
 Changes the constant term in the linear objective.
 
void ClearObjective () override
 Clears the objective from all its terms.
 
int64_t iterations () const override
 ---— Query statistics on the solution and the solve ---—
 
int64_t nodes () const override
 
MPSolver::BasisStatus row_status (int constraint_index) const override
 Returns the basis status of a row.
 
MPSolver::BasisStatus column_status (int variable_index) const override
 Returns the basis status of a constraint.
 
bool IsContinuous () const override
 --— Misc --—
 
bool IsLP () const override
 Returns true if the problem is continuous and linear.
 
bool IsMIP () const override
 Returns true if the problem is discrete and linear.
 
std::string SolverVersion () const override
 Returns a string describing the underlying solver and its version.
 
void * underlying_solver () override
 
void ExtractNewVariables () override
 Extracts the variables that have not been extracted yet.
 
void ExtractNewConstraints () override
 Extracts the constraints that have not been extracted yet.
 
void ExtractObjective () override
 Extracts the objective.
 
void SetParameters (const MPSolverParameters &param) override
 Sets all parameters in the underlying solver.
 
void SetRelativeMipGap (double value) override
 Sets each parameter in the underlying solver.
 
void SetPrimalTolerance (double value) override
 These have no effect. Use SetSolverSpecificParametersAsString instead.
 
void SetDualTolerance (double value) override
 
void SetPresolveMode (int value) override
 
void SetScalingMode (int value) override
 Sets the scaling mode.
 
void SetLpAlgorithm (int value) override
 
bool SetSolverSpecificParametersAsString (const std::string &parameters) override
 
absl::Status SetNumThreads (int num_threads) override
 Sets the number of threads to be used by the solver.
 
- Public Member Functions inherited from operations_research::MPSolverInterface
 MPSolverInterface (MPSolver *solver)
 
virtual ~MPSolverInterface ()
 
virtual void Write (const std::string &filename)
 
virtual bool AddIndicatorConstraint (MPConstraint *const)
 
virtual void BranchingPriorityChangedForVariable (int)
 
double best_objective_bound () const
 
double objective_value () const
 Returns the objective value of the best solution found so far.
 
bool CheckSolutionIsSynchronized () const
 
virtual bool CheckSolutionExists () const
 
bool CheckSolutionIsSynchronizedAndExists () const
 Handy shortcut to do both checks above (it is often used).
 
int last_variable_index () const
 Returns the index of the last variable extracted.
 
bool variable_is_extracted (int var_index) const
 
void set_variable_as_extracted (int var_index, bool extracted)
 
bool constraint_is_extracted (int ct_index) const
 
void set_constraint_as_extracted (int ct_index, bool extracted)
 
bool quiet () const
 Returns the boolean indicating the verbosity of the solver output.
 
void set_quiet (bool quiet_value)
 Sets the boolean indicating the verbosity of the solver output.
 
MPSolver::ResultStatus result_status () const
 Returns the result status of the last solve.
 
virtual double ComputeExactConditionNumber () const
 
virtual void SetStartingLpBasis (const std::vector< MPSolver::BasisStatus > &, const std::vector< MPSolver::BasisStatus > &)
 See MPSolver::SetStartingLpBasis().
 
virtual double infinity ()
 
virtual bool InterruptSolve ()
 
virtual bool NextSolution ()
 See MPSolver::NextSolution() for contract.
 
virtual void SetCallback (MPCallback *)
 See MPSolver::SetCallback() for details.
 
virtual bool SupportsCallbacks () const
 

Additional Inherited Members

- Public Types inherited from operations_research::MPSolverInterface
enum  SynchronizationStatus { MUST_RELOAD , MODEL_SYNCHRONIZED , SOLUTION_SYNCHRONIZED }
 
- Static Public Attributes inherited from operations_research::MPSolverInterface
static constexpr int64_t kUnknownNumberOfIterations = -1
 
static constexpr int64_t kUnknownNumberOfNodes = -1
 
- Protected Member Functions inherited from operations_research::MPSolverInterface
void ExtractModel ()
 Extracts model stored in MPSolver.
 
void ResetExtractionInformation ()
 Resets the extraction information.
 
void InvalidateSolutionSynchronization ()
 
void SetCommonParameters (const MPSolverParameters &param)
 Sets parameters common to LP and MIP in the underlying solver.
 
void SetMIPParameters (const MPSolverParameters &param)
 Sets MIP specific parameters in the underlying solver.
 
void SetUnsupportedDoubleParam (MPSolverParameters::DoubleParam param)
 Sets an unsupported double parameter.
 
virtual void SetUnsupportedIntegerParam (MPSolverParameters::IntegerParam param)
 Sets an unsupported integer parameter.
 
void SetDoubleParamToUnsupportedValue (MPSolverParameters::DoubleParam param, double value)
 Sets a supported double parameter to an unsupported value.
 
virtual void SetIntegerParamToUnsupportedValue (MPSolverParameters::IntegerParam param, int value)
 Sets a supported integer parameter to an unsupported value.
 
- Protected Attributes inherited from operations_research::MPSolverInterface
MPSolver *const solver_
 
SynchronizationStatus sync_status_
 Indicates whether the model and the solution are synchronized.
 
MPSolver::ResultStatus result_status_
 
bool maximize_
 Optimization direction.
 
int last_constraint_index_
 Index in MPSolver::variables_ of last constraint extracted.
 
int last_variable_index_
 Index in MPSolver::constraints_ of last variable extracted.
 
double objective_value_
 The value of the objective function.
 
double best_objective_bound_
 The value of the best objective bound. Used only for MIP solvers.
 
bool quiet_
 Boolean indicator for the verbosity of the solver output.
 
- Static Protected Attributes inherited from operations_research::MPSolverInterface
static const int kDummyVariableIndex = 0
 -------— MPSolverInterface -------—
 

Detailed Description

Definition at line 40 of file highs_interface.cc.

Constructor & Destructor Documentation

◆ HighsInterface()

operations_research::HighsInterface::HighsInterface ( MPSolver * solver,
bool solve_as_a_mip )
explicit

Definition at line 111 of file highs_interface.cc.

◆ ~HighsInterface()

operations_research::HighsInterface::~HighsInterface ( )
override

Definition at line 114 of file highs_interface.cc.

Member Function Documentation

◆ AddRowConstraint()

void operations_research::HighsInterface::AddRowConstraint ( MPConstraint * ct)
overridevirtual

Adds a linear constraint.

Implements operations_research::MPSolverInterface.

Definition at line 197 of file highs_interface.cc.

◆ AddVariable()

void operations_research::HighsInterface::AddVariable ( MPVariable * var)
overridevirtual

Add a variable.

Implements operations_research::MPSolverInterface.

Definition at line 201 of file highs_interface.cc.

◆ ClearConstraint()

void operations_research::HighsInterface::ClearConstraint ( MPConstraint * constraint)
overridevirtual

Clears a constraint from all its terms.

Implements operations_research::MPSolverInterface.

Definition at line 211 of file highs_interface.cc.

◆ ClearObjective()

void operations_research::HighsInterface::ClearObjective ( )
overridevirtual

Clears the objective from all its terms.

Implements operations_research::MPSolverInterface.

Definition at line 224 of file highs_interface.cc.

◆ column_status()

MPSolver::BasisStatus operations_research::HighsInterface::column_status ( int variable_index) const
overridevirtual

Returns the basis status of a constraint.

Todo
(user): While basis status isn't well defined for PDLP, we could guess statuses that might be useful.

Implements operations_research::MPSolverInterface.

Definition at line 241 of file highs_interface.cc.

◆ DirectlySolveProto()

MPSolutionResponse operations_research::HighsInterface::DirectlySolveProto ( LazyMutableCopy< MPModelRequest > request,
std::atomic< bool > * interrupt )
inlineoverridevirtual

Reimplemented from operations_research::MPSolverInterface.

Definition at line 52 of file highs_interface.cc.

◆ ExtractNewConstraints()

void operations_research::HighsInterface::ExtractNewConstraints ( )
overridevirtual

Extracts the constraints that have not been extracted yet.

Implements operations_research::MPSolverInterface.

Definition at line 261 of file highs_interface.cc.

◆ ExtractNewVariables()

void operations_research::HighsInterface::ExtractNewVariables ( )
overridevirtual

Extracts the variables that have not been extracted yet.

Implements operations_research::MPSolverInterface.

Definition at line 259 of file highs_interface.cc.

◆ ExtractObjective()

void operations_research::HighsInterface::ExtractObjective ( )
overridevirtual

Extracts the objective.

Implements operations_research::MPSolverInterface.

Definition at line 263 of file highs_interface.cc.

◆ IsContinuous()

bool operations_research::HighsInterface::IsContinuous ( ) const
overridevirtual

--— Misc --—

Implements operations_research::MPSolverInterface.

Definition at line 247 of file highs_interface.cc.

◆ IsLP()

bool operations_research::HighsInterface::IsLP ( ) const
overridevirtual

Returns true if the problem is continuous and linear.

Implements operations_research::MPSolverInterface.

Definition at line 249 of file highs_interface.cc.

◆ IsMIP()

bool operations_research::HighsInterface::IsMIP ( ) const
overridevirtual

Returns true if the problem is discrete and linear.

Implements operations_research::MPSolverInterface.

Definition at line 251 of file highs_interface.cc.

◆ iterations()

int64_t operations_research::HighsInterface::iterations ( ) const
overridevirtual

---— Query statistics on the solution and the solve ---—

Implements operations_research::MPSolverInterface.

Definition at line 226 of file highs_interface.cc.

◆ nodes()

int64_t operations_research::HighsInterface::nodes ( ) const
overridevirtual

Returns the number of branch-and-bound nodes. The problem must be discrete, otherwise it crashes, or returns kUnknownNumberOfNodes in NDEBUG mode.

Implements operations_research::MPSolverInterface.

Definition at line 230 of file highs_interface.cc.

◆ Reset()

void operations_research::HighsInterface::Reset ( )
overridevirtual

--— Model modifications and extraction --—

Implements operations_research::MPSolverInterface.

Definition at line 179 of file highs_interface.cc.

◆ row_status()

MPSolver::BasisStatus operations_research::HighsInterface::row_status ( int constraint_index) const
overridevirtual

Returns the basis status of a row.

Todo
(user): While basis status isn't well defined for PDLP, we could guess statuses that might be useful.

Implements operations_research::MPSolverInterface.

Definition at line 235 of file highs_interface.cc.

◆ SetCoefficient()

void operations_research::HighsInterface::SetCoefficient ( MPConstraint * constraint,
const MPVariable * variable,
double new_value,
double old_value )
overridevirtual

Changes a coefficient in a constraint.

Implements operations_research::MPSolverInterface.

Definition at line 205 of file highs_interface.cc.

◆ SetConstraintBounds()

void operations_research::HighsInterface::SetConstraintBounds ( int index,
double lb,
double ub )
overridevirtual

Modify bounds of an extracted variable.

Implements operations_research::MPSolverInterface.

Definition at line 193 of file highs_interface.cc.

◆ SetDualTolerance()

void operations_research::HighsInterface::SetDualTolerance ( double value)
overridevirtual

Implements operations_research::MPSolverInterface.

Definition at line 280 of file highs_interface.cc.

◆ SetLpAlgorithm()

void operations_research::HighsInterface::SetLpAlgorithm ( int value)
overridevirtual

Implements operations_research::MPSolverInterface.

Definition at line 282 of file highs_interface.cc.

◆ SetNumThreads()

absl::Status operations_research::HighsInterface::SetNumThreads ( int num_threads)
overridevirtual

Sets the number of threads to be used by the solver.

parameters_.set_num_threads(num_threads);

Reimplemented from operations_research::MPSolverInterface.

Definition at line 269 of file highs_interface.cc.

◆ SetObjectiveCoefficient()

void operations_research::HighsInterface::SetObjectiveCoefficient ( const MPVariable * variable,
double coefficient )
overridevirtual

Changes a coefficient in the linear objective.

Implements operations_research::MPSolverInterface.

Definition at line 215 of file highs_interface.cc.

◆ SetObjectiveOffset()

void operations_research::HighsInterface::SetObjectiveOffset ( double value)
overridevirtual

Changes the constant term in the linear objective.

Implements operations_research::MPSolverInterface.

Definition at line 220 of file highs_interface.cc.

◆ SetOptimizationDirection()

void operations_research::HighsInterface::SetOptimizationDirection ( bool maximize)
overridevirtual

Sets the optimization direction (min/max).

Implements operations_research::MPSolverInterface.

Definition at line 181 of file highs_interface.cc.

◆ SetParameters()

void operations_research::HighsInterface::SetParameters ( const MPSolverParameters & param)
overridevirtual

Sets all parameters in the underlying solver.

Implements operations_research::MPSolverInterface.

Definition at line 265 of file highs_interface.cc.

◆ SetPresolveMode()

void operations_research::HighsInterface::SetPresolveMode ( int value)
overridevirtual

Implements operations_research::MPSolverInterface.

Definition at line 284 of file highs_interface.cc.

◆ SetPrimalTolerance()

void operations_research::HighsInterface::SetPrimalTolerance ( double value)
overridevirtual

These have no effect. Use SetSolverSpecificParametersAsString instead.

Implements operations_research::MPSolverInterface.

Definition at line 279 of file highs_interface.cc.

◆ SetRelativeMipGap()

void operations_research::HighsInterface::SetRelativeMipGap ( double value)
overridevirtual

Sets each parameter in the underlying solver.

Implements operations_research::MPSolverInterface.

Definition at line 283 of file highs_interface.cc.

◆ SetScalingMode()

void operations_research::HighsInterface::SetScalingMode ( int value)
overridevirtual

Sets the scaling mode.

Implements operations_research::MPSolverInterface.

Definition at line 281 of file highs_interface.cc.

◆ SetSolverSpecificParametersAsString()

bool operations_research::HighsInterface::SetSolverSpecificParametersAsString ( const std::string & parameters)
overridevirtual

Pass solver specific parameters in text format. The format is solver-specific and is the same as the corresponding solver configuration file format. Returns true if the operation was successful.

Default implementation returns true if the input is empty. It returns false and logs a WARNING if the input is not empty.

return ProtobufTextFormatMergeFromString(parameters, &parameters_);

Reimplemented from operations_research::MPSolverInterface.

Definition at line 286 of file highs_interface.cc.

◆ SetVariableBounds()

void operations_research::HighsInterface::SetVariableBounds ( int index,
double lb,
double ub )
overridevirtual

Modifies bounds of an extracted variable.

Implements operations_research::MPSolverInterface.

Definition at line 185 of file highs_interface.cc.

◆ SetVariableInteger()

void operations_research::HighsInterface::SetVariableInteger ( int index,
bool integer )
overridevirtual

Modifies integrality of an extracted variable.

Implements operations_research::MPSolverInterface.

Definition at line 189 of file highs_interface.cc.

◆ Solve()

MPSolver::ResultStatus operations_research::HighsInterface::Solve ( const MPSolverParameters & param)
overridevirtual

--— Solve --—

Reset extraction as this interface is not incremental yet.

parameters_.set_verbosity_level(0);

parameters_.set_verbosity_level(3);

Time limit.

parameters_.mutable_termination_criteria()->set_time_sec_limit( static_cast<double>(solver_->time_limit()) / 1000.0);

Mark variables and constraints as extracted.

Set parameters.

The solution must be marked as synchronized even when no solution exists.

Implements operations_research::MPSolverInterface.

Definition at line 116 of file highs_interface.cc.

◆ SolverVersion()

std::string operations_research::HighsInterface::SolverVersion ( ) const
overridevirtual

Returns a string describing the underlying solver and its version.

Implements operations_research::MPSolverInterface.

Definition at line 253 of file highs_interface.cc.

◆ SupportsDirectlySolveProto()

bool operations_research::HighsInterface::SupportsDirectlySolveProto ( std::atomic< bool > * interrupt) const
inlineoverridevirtual

--— Directly solve proto is supported without interrupt —

Reimplemented from operations_research::MPSolverInterface.

Definition at line 49 of file highs_interface.cc.

◆ underlying_solver()

void * operations_research::HighsInterface::underlying_solver ( )
overridevirtual
Todo
(user): Consider returning the SolveLog here, as it could be essential for interpreting the PDLP solution.

Implements operations_research::MPSolverInterface.

Definition at line 257 of file highs_interface.cc.


The documentation for this class was generated from the following file: