 |
OR-Tools
8.1
|
Go to the documentation of this file.
48 #ifndef OR_TOOLS_GSCIP_GSCIP_H_
49 #define OR_TOOLS_GSCIP_GSCIP_H_
56 #include "absl/container/flat_hash_map.h"
57 #include "absl/container/flat_hash_set.h"
58 #include "absl/status/status.h"
59 #include "absl/status/statusor.h"
61 #include "scip/scip.h"
62 #include "scip/scip_prob.h"
63 #include "scip/type_cons.h"
64 #include "scip/type_scip.h"
65 #include "scip/type_var.h"
94 double lower_bound = -std::numeric_limits<double>::infinity();
106 struct GScipQuadraticRange;
108 struct GScipIndicatorConstraint;
109 struct GScipLogicalConstraintData;
110 struct GScipVariableOptions;
112 struct GScipConstraintOptions;
124 static absl::StatusOr<std::unique_ptr<GScip>>
Create(
125 const std::string& problem_name);
138 absl::StatusOr<GScipResult>
Solve(
139 const GScipParameters& params = GScipParameters(),
140 const std::string& legacy_params =
"");
155 double lb,
double ub,
double obj_coef,
GScipVarType var_type,
156 const std::string& var_name =
"",
177 double Lb(SCIP_VAR*
var);
178 double Ub(SCIP_VAR*
var);
181 absl::string_view
Name(SCIP_VAR*
var);
182 const absl::flat_hash_set<SCIP_VAR*>&
variables() {
return variables_; }
185 absl::string_view
Name(SCIP_CONS* constraint);
187 const absl::flat_hash_set<SCIP_CONS*>&
constraints() {
return constraints_; }
198 absl::Status
SetLb(SCIP_VAR*
var,
double lb);
199 absl::Status
SetUb(SCIP_VAR*
var,
double ub);
221 absl::Status
SafeBulkDelete(
const absl::flat_hash_set<SCIP_VAR*>& vars);
247 const std::string&
name =
"",
263 const std::string&
name =
"",
272 const std::string&
name =
"",
337 const std::string& parameter_name);
339 const std::string& parameter_name);
342 const std::string& parameter_name);
347 absl::Status CleanUp();
349 absl::Status SetParams(
const GScipParameters& params,
350 const std::string& legacy_params);
351 absl::Status FreeTransform();
353 double ScipInfClamp(
double d);
355 double ScipInfUnclamp(
double d);
357 absl::Status MaybeKeepConstraintAlive(SCIP_CONS* constraint,
361 absl::flat_hash_set<SCIP_VAR*> variables_;
362 absl::flat_hash_set<SCIP_CONS*> constraints_;
538 #endif // OR_TOOLS_GSCIP_GSCIP_H_
absl::Status SetObjCoef(SCIP_VAR *var, double obj_coef)
absl::flat_hash_map< SCIP_VAR *, double > GScipSolution
absl::StatusOr< SCIP_CONS * > AddAndConstraint(const GScipLogicalConstraintData &logical_data, const std::string &name="", const GScipConstraintOptions &options=DefaultGScipConstraintOptions())
absl::StatusOr< char > DefaultCharParamValue(const std::string ¶meter_name)
absl::flat_hash_map< SCIP_VAR *, double > primal_ray
absl::Status SetLinearConstraintLb(SCIP_CONS *constraint, double lb)
absl::StatusOr< SCIP_CONS * > AddIndicatorConstraint(const GScipIndicatorConstraint &indicator_constraint, const std::string &name="", const GScipConstraintOptions &options=DefaultGScipConstraintOptions())
absl::StatusOr< bool > DefaultBoolParamValue(const std::string ¶meter_name)
std::vector< SCIP_Var * > linear_variables
absl::Status SetUb(SCIP_VAR *var, double ub)
absl::StatusOr< std::string > DefaultStringParamValue(const std::string ¶meter_name)
absl::Status SetMaximize(bool is_maximize)
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
absl::StatusOr< GScipHintResult > SuggestHint(const GScipSolution &partial_solution)
bool ObjectiveIsMaximize()
absl::flat_hash_map< SCIP_VAR *, int > GScipBranchingPriority
const GScipVariableOptions & DefaultGScipVariableOptions()
static constexpr double kDefaultScipInf
absl::Status DeleteConstraint(SCIP_CONS *constraint)
const GScipConstraintOptions & DefaultGScipConstraintOptions()
double LinearConstraintLb(SCIP_CONS *constraint)
std::vector< double > coefficients
absl::StatusOr< GScipResult > Solve(const GScipParameters ¶ms=GScipParameters(), const std::string &legacy_params="")
std::vector< SCIP_Var * > quadratic_variables2
absl::StatusOr< SCIP_CONS * > AddSOS1Constraint(const GScipSOSData &sos_data, const std::string &name="", const GScipConstraintOptions &options=DefaultGScipConstraintOptions())
absl::Status DeleteVariable(SCIP_VAR *var)
std::vector< SCIP_VAR * > variables
absl::StatusOr< SCIP_CONS * > AddOrConstraint(const GScipLogicalConstraintData &logical_data, const std::string &name="", const GScipConstraintOptions &options=DefaultGScipConstraintOptions())
absl::StatusOr< double > DefaultRealParamValue(const std::string ¶meter_name)
std::vector< double > coefficients
absl::Status SafeBulkDelete(const absl::flat_hash_set< SCIP_VAR * > &vars)
bool IsConstraintLinear(SCIP_CONS *constraint)
absl::Status SetVarType(SCIP_VAR *var, GScipVarType var_type)
absl::StatusOr< SCIP_CONS * > AddQuadraticConstraint(const GScipQuadraticRange &range, const std::string &name="", const GScipConstraintOptions &options=DefaultGScipConstraintOptions())
absl::Span< const double > LinearConstraintCoefficients(SCIP_CONS *constraint)
std::vector< double > linear_coefficients
absl::StatusOr< int64_t > DefaultLongParamValue(const std::string ¶meter_name)
double ObjCoef(SCIP_VAR *var)
absl::Status SetObjectiveOffset(double offset)
std::vector< double > objective_values
absl::Status SetBranchingPriority(SCIP_VAR *var, int priority)
std::vector< SCIP_Var * > quadratic_variables1
absl::StatusOr< SCIP_CONS * > AddSOS2Constraint(const GScipSOSData &sos_data, const std::string &name="", const GScipConstraintOptions &options=DefaultGScipConstraintOptions())
absl::Status CanSafeBulkDelete(const absl::flat_hash_set< SCIP_VAR * > &vars)
static std::string ScipVersion()
absl::StatusOr< int > DefaultIntParamValue(const std::string ¶meter_name)
absl::Status SetLb(SCIP_VAR *var, double lb)
const absl::flat_hash_set< SCIP_VAR * > & variables()
static absl::StatusOr< std::unique_ptr< GScip > > Create(const std::string &problem_name)
std::vector< SCIP_VAR * > operators
std::vector< double > weights
SCIP_VAR * indicator_variable
absl::string_view Name(SCIP_VAR *var)
std::vector< double > quadratic_coefficients
const absl::flat_hash_set< SCIP_CONS * > & constraints()
absl::StatusOr< SCIP_CONS * > AddLinearConstraint(const GScipLinearRange &range, const std::string &name="", const GScipConstraintOptions &options=DefaultGScipConstraintOptions())
double LinearConstraintUb(SCIP_CONS *constraint)
std::vector< SCIP_VAR * > variables
std::vector< GScipSolution > solutions
absl::Status SetLinearConstraintUb(SCIP_CONS *constraint, double ub)
GScipVarType VarType(SCIP_VAR *var)
absl::string_view ConstraintType(SCIP_CONS *constraint)
absl::StatusOr< SCIP_VAR * > AddVariable(double lb, double ub, double obj_coef, GScipVarType var_type, const std::string &var_name="", const GScipVariableOptions &options=DefaultGScipVariableOptions())
absl::Status SetLinearConstraintCoef(SCIP_CONS *constraint, SCIP_VAR *var, double value)
absl::Span< SCIP_VAR *const > LinearConstraintVariables(SCIP_CONS *constraint)
std::vector< SCIP_Var * > variables