48 static absl::StatusOr<std::unique_ptr<XpressSolver>>
New(
53 absl::StatusOr<SolveResultProto>
Solve(
64 absl::StatusOr<ComputeInfeasibleSubsystemResultProto>
70 explicit XpressSolver(std::unique_ptr<Xpress> g_xpress,
bool extract_names);
97 static bool isFinite(
double value) {
98 return value < kPlusInf && value > kMinusInf;
110 absl::StatusOr<SolveResultProto> ExtractSolveResultProto(
117 absl::StatusOr<SolveStatsProto> GetSolveStats(absl::Time start)
const;
119 absl::StatusOr<double> GetBestPrimalBound()
const;
120 absl::StatusOr<double> GetBestDualBound()
const;
122 absl::StatusOr<TerminationProto> ConvertTerminationReason(
123 double best_primal_bound,
double best_dual_bound)
const;
125 bool isPrimalFeasible()
const;
126 bool isDualFeasible()
const;
128 void ExtractBounds(
double lb,
double ub,
char& sense,
double& rhs,
131 std::vector<int>& colind, std::vector<double>& coef);
133 std::vector<int>& lin_colind,
134 std::vector<double>& lin_coef,
135 std::vector<int>& quad_col1,
136 std::vector<int>& quad_col2,
137 std::vector<double>& quad_coef);
139 absl::StatusOr<std::optional<BasisProto>> GetBasisIfAvailable(
142 absl::Status AddNewLinearConstraints(
144 absl::Status AddNewVariables(
const VariablesProto& new_variables);
146 std::optional<AuxiliaryObjectiveId> objective_id,
149 const google::protobuf::Map<AnyConstraintId, SosConstraintProto>& sets,
151 absl::Status AddIndicators(
154 absl::Status AddQuadraticConstraints(
157 absl::Status AddSecondOrderConeConstraints(
162 absl::Status LoadModel(
const ModelProto& input_model);
168 template <
typename T>
169 void XpressVectorToSparseDoubleVector(
170 absl::Span<const double> xpress_values,
const T& map,
174 const std::unique_ptr<Xpress> xpress_;
175 bool const extract_names_;
183 linear_constraints_map_;
201 quad_constraints_map_;
207 int get_model_index(
const LinearConstraintData& index)
const {
208 return index.constraint_index;
212 absl::StatusOr<InvertedBounds> ListInvertedBounds()
const;
215 bool force_postsolve_ =
false;
217 bool stop_after_lp_ =
false;
226 bool nonbinary_indicator_ =
false;
227 bool is_multiobj_ =
false;
228 bool is_mip_ =
false;
236 int optimizetypeused_ = -1;
absl::StatusOr< SolveResultProto > Solve(const SolveParametersProto ¶meters, const ModelSolveParametersProto &model_parameters, MessageCallback message_cb, const CallbackRegistrationProto &callback_registration, Callback cb, const SolveInterrupter *interrupter) override