Skip to content

Commit 4c9ecd1

Browse files
committed
Test for determinism now uses two separate highs objects
1 parent d57aaa6 commit 4c9ecd1

File tree

1 file changed

+31
-18
lines changed

1 file changed

+31
-18
lines changed

check/TestHipo.cpp

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,30 +45,43 @@ TEST_CASE("test-hipo-deterministic", "[highs_hipo]") {
4545
// Test that hipo finds the exact same solution if run twice
4646

4747
std::string model = "80bau3b.mps";
48-
49-
Highs highs;
50-
highs.setOptionValue("output_flag", dev_run);
51-
highs.setOptionValue(kSolverString, kHipoString);
52-
highs.setOptionValue(kParallelString, kHighsOnString);
53-
highs.setOptionValue(kRunCrossoverString, kHighsOffString);
54-
5548
std::string filename = std::string(HIGHS_DIR) + "/check/instances/" + model;
56-
highs.readModel(filename);
57-
58-
HighsStatus status = highs.run();
59-
REQUIRE(status == HighsStatus::kOk);
60-
61-
const HighsSolution solution_1 = highs.getSolution();
62-
63-
highs.run();
64-
const HighsSolution solution_2 = highs.getSolution();
6549

50+
HighsInt iter_1, iter_2;
51+
HighsSolution solution_1, solution_2;
52+
53+
{
54+
Highs highs;
55+
highs.setOptionValue("output_flag", dev_run);
56+
highs.setOptionValue(kSolverString, kHipoString);
57+
highs.setOptionValue(kParallelString, kHighsOnString);
58+
highs.setOptionValue(kRunCrossoverString, kHighsOffString);
59+
highs.readModel(filename);
60+
HighsStatus status = highs.run();
61+
REQUIRE(status == HighsStatus::kOk);
62+
solution_1 = highs.getSolution();
63+
iter_1 = highs.getInfo().ipm_iteration_count;
64+
highs.resetGlobalScheduler(true);
65+
}
66+
{
67+
Highs highs;
68+
highs.setOptionValue("output_flag", dev_run);
69+
highs.setOptionValue(kSolverString, kHipoString);
70+
highs.setOptionValue(kParallelString, kHighsOnString);
71+
highs.setOptionValue(kRunCrossoverString, kHighsOffString);
72+
highs.readModel(filename);
73+
HighsStatus status = highs.run();
74+
REQUIRE(status == HighsStatus::kOk);
75+
solution_2 = highs.getSolution();
76+
iter_2 = highs.getInfo().ipm_iteration_count;
77+
highs.resetGlobalScheduler(true);
78+
}
79+
80+
REQUIRE(iter_1 == iter_2);
6681
REQUIRE(solution_1.value_valid == solution_2.value_valid);
6782
REQUIRE(solution_1.dual_valid == solution_2.dual_valid);
6883
REQUIRE(solution_1.col_value == solution_2.col_value);
6984
REQUIRE(solution_1.row_value == solution_2.row_value);
7085
REQUIRE(solution_1.col_dual == solution_2.col_dual);
7186
REQUIRE(solution_1.row_dual == solution_2.row_dual);
72-
73-
highs.resetGlobalScheduler(true);
7487
}

0 commit comments

Comments
 (0)