MCPcopy Create free account
hub / github.com/ERGO-Code/HiGHS / runMipUserSolutionTest

Function runMipUserSolutionTest

check/TestCallbacks.cpp:501–539  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

499}
500
501static void runMipUserSolutionTest(
502 HighsCallbackFunctionType callback_function) {
503 const std::vector<std::string> model = {"p0548", "flugpl", "gt2", "egout",
504 "sp150x300d"};
505 const std::vector<HighsInt> require_origin = {0, 1, 2, 3, 4}; //, 4, 5, 6};
506 assert(model.size() == require_origin.size());
507 Highs highs;
508 highs.setOptionValue("output_flag", dev_run);
509 highs.setOptionValue("mip_rel_gap", 0);
510 HighsInt from_model = 0;
511 HighsInt to_model = HighsInt(model.size());
512 for (HighsInt iModel = from_model; iModel < to_model; iModel++) {
513 const std::string filename =
514 std::string(HIGHS_DIR) + "/check/instances/" + model[iModel] + ".mps";
515 highs.readModel(filename);
516 highs.run();
517 std::vector<double> optimal_solution = highs.getSolution().col_value;
518 double objective_function_value0 = highs.getInfo().objective_function_value;
519 highs.clearSolver();
520
521 UserMipSolution user_callback_data;
522 user_callback_data.optimal_objective_value = objective_function_value0;
523 user_callback_data.optimal_solution = optimal_solution;
524 user_callback_data.require_external_solution_query_origin =
525 require_origin[iModel];
526 void* p_user_callback_data = (void*)(&user_callback_data);
527
528 highs.setCallback(callback_function, p_user_callback_data);
529 highs.startCallback(kCallbackMipUserSolution);
530 highs.run();
531 highs.stopCallback(kCallbackMipUserSolution);
532 double objective_function_value1 = highs.getInfo().objective_function_value;
533 double objective_diff =
534 std::fabs(objective_function_value1 - objective_function_value0) /
535 std::max(1.0, std::fabs(objective_function_value0));
536 REQUIRE(objective_diff < 1e-12);
537 }
538 highs.resetGlobalScheduler(true);
539}
540
541TEST_CASE("highs-callback-mip-user-solution", "[highs-callback]") {
542 runMipUserSolutionTest(userkMipUserSolution);

Callers 1

TestCallbacks.cppFile · 0.85

Calls 11

startCallbackMethod · 0.80
stopCallbackMethod · 0.80
resetGlobalSchedulerMethod · 0.80
sizeMethod · 0.45
setOptionValueMethod · 0.45
readModelMethod · 0.45
runMethod · 0.45
getSolutionMethod · 0.45
getInfoMethod · 0.45
clearSolverMethod · 0.45
setCallbackMethod · 0.45

Tested by

no test coverage detected