16 #ifndef OR_TOOLS_SAT_LP_UTILS_H_
17 #define OR_TOOLS_SAT_LP_UTILS_H_
24 #include "ortools/linear_solver/linear_solver.pb.h"
26 #include "ortools/sat/boolean_problem.pb.h"
27 #include "ortools/sat/cp_model.pb.h"
28 #include "ortools/sat/sat_parameters.pb.h"
45 double tolerance = 1e-6);
70 const std::vector<double>&
upper_bounds, int64_t max_absolute_activity,
71 double wanted_absolute_activity_precision,
double* relative_coeff_error,
72 double* scaled_sum_error);
89 MPModelProto* mp_model);
94 MPModelProto* mp_model,
95 SolverLogger* logger);
101 const MPModelProto& mp_model,
102 SolverLogger* logger);
109 SolverLogger* logger);
119 SolverLogger* logger);
127 const MPModelProto& mp_model,
128 CpModelProto* cp_model,
129 SolverLogger* logger);
139 MPModelProto* output);
153 const std::vector<std::pair<int, double>>& objective,
154 double objective_offset,
bool maximize,
155 CpModelProto* cp_model, SolverLogger* logger);
167 const CpModelProto& model_proto_with_floating_point_objective,
168 const CpObjectiveProto& integer_objective,
169 const int64_t inner_integer_objective_lower_bound);
176 LinearBooleanProblem* problem);
180 glop::LinearProgram* lp);
absl::Span< const double > coefficients
bool ConvertCpModelProtoToMPModelProto(const CpModelProto &input, MPModelProto *output)
void ConvertBooleanProblemToLinearProgram(const LinearBooleanProblem &problem, glop::LinearProgram *lp)
bool ConvertBinaryMPModelProtoToBooleanProblem(const MPModelProto &mp_model, LinearBooleanProblem *problem)
void RemoveNearZeroTerms(const SatParameters ¶ms, MPModelProto *mp_model, SolverLogger *logger)
bool ConvertMPModelProtoToCpModelProto(const SatParameters ¶ms, const MPModelProto &mp_model, CpModelProto *cp_model, SolverLogger *logger)
bool MPModelProtoValidationBeforeConversion(const SatParameters ¶ms, const MPModelProto &mp_model, SolverLogger *logger)
bool ScaleAndSetObjective(const SatParameters ¶ms, const std::vector< std::pair< int, double >> &objective, double objective_offset, bool maximize, CpModelProto *cp_model, SolverLogger *logger)
int64_t FindRationalFactor(double x, int64_t limit, double tolerance)
bool MakeBoundsOfIntegerVariablesInteger(const SatParameters ¶ms, MPModelProto *mp_model, SolverLogger *logger)
double ComputeTrueObjectiveLowerBound(const CpModelProto &model_proto_with_floating_point_objective, const CpObjectiveProto &integer_objective, const int64_t inner_integer_objective_lower_bound)
std::vector< double > ScaleContinuousVariables(double scaling, double max_bound, MPModelProto *mp_model)
double FindBestScalingAndComputeErrors(const std::vector< double > &coefficients, const std::vector< double > &lower_bounds, const std::vector< double > &upper_bounds, int64_t max_absolute_activity, double wanted_absolute_activity_precision, double *relative_coeff_error, double *scaled_sum_error)
std::vector< double > DetectImpliedIntegers(MPModelProto *mp_model, SolverLogger *logger)
Collection of objects used to extend the Constraint Solver library.
static int input(yyscan_t yyscanner)
std::vector< double > lower_bounds
std::vector< double > upper_bounds