@@ -150,6 +150,24 @@ class Highs {
150150 HighsStatus passHessian (const HighsInt dim, const HighsInt num_nz,
151151 const HighsInt format, const HighsInt* start,
152152 const HighsInt* index, const double * value);
153+ /* *
154+ * @brief Pass multiple linear objectives for the incumbent model
155+ */
156+ HighsStatus passLinearObjectives (
157+ const HighsInt num_linear_objective,
158+ const HighsLinearObjective* linear_objective);
159+
160+ /* *
161+ * @brief Add a linear objective for the incumbent model
162+ */
163+ HighsStatus addLinearObjective (const HighsLinearObjective& linear_objective,
164+ const HighsInt iObj = -1 );
165+
166+ /* *
167+ * @brief Clear the multiple linear objective data
168+ */
169+ HighsStatus clearLinearObjectives ();
170+
153171 /* *
154172 * @brief Pass a column name to the incumbent model
155173 */
@@ -183,7 +201,7 @@ class Highs {
183201 HighsStatus presolve ();
184202
185203 /* *
186- * @brief Solve the incumbent model according to the specified options
204+ * @brief Run the solver, accounting for any multiple objective
187205 */
188206 HighsStatus run ();
189207
@@ -1197,6 +1215,14 @@ class Highs {
11971215 static void resetGlobalScheduler (bool blocking = false );
11981216
11991217 // Start of advanced methods for HiGHS MIP solver
1218+
1219+ const HighsSimplexStats& getSimplexStats () const {
1220+ return ekk_instance_.getSimplexStats ();
1221+ }
1222+ void reportSimplexStats (FILE* file) const {
1223+ ekk_instance_.reportSimplexStats (file);
1224+ }
1225+
12001226 /* *
12011227 * @brief Get the hot start basis data from the most recent simplex
12021228 * solve. Advanced method: for HiGHS MIP solver
@@ -1389,6 +1415,8 @@ class Highs {
13891415 ICrashInfo icrash_info_;
13901416
13911417 HighsModel model_;
1418+ std::vector<HighsLinearObjective> multi_linear_objective_;
1419+
13921420 HighsModel presolved_model_;
13931421 HighsTimer timer_;
13941422
@@ -1397,7 +1425,6 @@ class Highs {
13971425 HighsInfo info_;
13981426 HighsRanging ranging_;
13991427 HighsIis iis_;
1400-
14011428 std::vector<HighsObjectiveSolution> saved_objective_and_solution_;
14021429
14031430 HighsPresolveStatus model_presolve_status_ =
@@ -1424,6 +1451,8 @@ class Highs {
14241451
14251452 bool written_log_header = false ;
14261453
1454+ HighsStatus solve ();
1455+
14271456 void exactResizeModel () {
14281457 this ->model_ .lp_ .exactResize ();
14291458 this ->model_ .hessian_ .exactResize ();
@@ -1600,6 +1629,10 @@ class Highs {
16001629 HighsInt* iis_col_index, HighsInt* iis_row_index,
16011630 HighsInt* iis_col_bound, HighsInt* iis_row_bound);
16021631
1632+ HighsStatus returnFromLexicographicOptimization (
1633+ const HighsStatus return_status, HighsInt original_lp_num_row);
1634+ HighsStatus multiobjectiveSolve ();
1635+
16031636 bool aFormatOk (const HighsInt num_nz, const HighsInt format);
16041637 bool qFormatOk (const HighsInt num_nz, const HighsInt format);
16051638 void clearZeroHessian ();
@@ -1623,6 +1656,10 @@ class Highs {
16231656 const bool constraint,
16241657 const double ill_conditioning_bound);
16251658 bool infeasibleBoundsOk ();
1659+ bool validLinearObjective (const HighsLinearObjective& linear_objective,
1660+ const HighsInt iObj) const ;
1661+ bool hasRepeatedLinearObjectivePriorities (
1662+ const HighsLinearObjective* linear_objective = nullptr ) const ;
16261663};
16271664
16281665// Start of deprecated methods not in the Highs class
0 commit comments