48 static absl::StatusOr<std::unique_ptr<SolverInterface>>
New(
51 absl::StatusOr<SolveResultProto>
Solve(
53 const ModelSolveParametersProto& model_parameters,
55 const CallbackRegistrationProto& callback_registration,
Callback cb,
57 absl::StatusOr<bool>
Update(
const ModelUpdateProto& model_update)
override;
58 absl::StatusOr<ComputeInfeasibleSubsystemResultProto>
66 const SolveParametersProto& solve_parameters,
bool setting_initial_basis,
67 bool has_message_callback,
bool is_maximization);
72 void AddVariables(
const VariablesProto& variables);
73 void AddLinearConstraints(
const LinearConstraintsProto& linear_constraints);
75 void DeleteVariables(absl::Span<const int64_t> ids_to_delete);
76 void DeleteLinearConstraints(absl::Span<const int64_t> ids_to_delete);
78 void SetOrUpdateObjectiveCoefficients(
79 const SparseDoubleVectorProto& linear_objective_coefficients);
80 void SetOrUpdateConstraintMatrix(
81 const SparseDoubleMatrixProto& linear_constraint_matrix);
83 void UpdateVariableBounds(
const VariableUpdatesProto& variable_updates);
84 void UpdateLinearConstraintBounds(
85 const LinearConstraintUpdatesProto& linear_constraint_updates);
91 const ModelSolveParametersProto& model_parameters,
92 SolveResultProto& solve_result);
93 absl::StatusOr<SolveResultProto> MakeSolveResult(
95 const ModelSolveParametersProto& model_parameters,
98 absl::Status FillSolveStats(absl::Duration solve_time,
99 SolveStatsProto& solve_stats);
101 void SetGlopBasis(
const BasisProto& basis);
106 absl::flat_hash_map<int64_t, glop::ColIndex> variables_;
107 absl::flat_hash_map<int64_t, glop::RowIndex> linear_constraints_;
absl::StatusOr< SolveResultProto > Solve(const SolveParametersProto ¶meters, const ModelSolveParametersProto &model_parameters, MessageCallback message_cb, const CallbackRegistrationProto &callback_registration, Callback cb, const SolveInterrupter *interrupter) override