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

Function reportSimplexPhaseIterations

highs/simplex/HSimplexReport.cpp:16–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14#include <sstream>
15
16void reportSimplexPhaseIterations(const HighsLogOptions& log_options,
17 const HighsInt iteration_count,
18 HighsSimplexInfo& info,
19 const bool initialise) {
20 if (info.run_quiet) return;
21 if (initialise) {
22 info.iteration_count0 = iteration_count;
23 info.dual_phase1_iteration_count0 = info.dual_phase1_iteration_count;
24 info.dual_phase2_iteration_count0 = info.dual_phase2_iteration_count;
25 info.primal_phase1_iteration_count0 = info.primal_phase1_iteration_count;
26 info.primal_phase2_iteration_count0 = info.primal_phase2_iteration_count;
27 info.primal_bound_swap0 = info.primal_bound_swap;
28 return;
29 }
30 const HighsInt delta_iteration_count =
31 iteration_count - info.iteration_count0;
32 const HighsInt delta_dual_phase1_iteration_count =
33 info.dual_phase1_iteration_count - info.dual_phase1_iteration_count0;
34 const HighsInt delta_dual_phase2_iteration_count =
35 info.dual_phase2_iteration_count - info.dual_phase2_iteration_count0;
36 const HighsInt delta_primal_phase1_iteration_count =
37 info.primal_phase1_iteration_count - info.primal_phase1_iteration_count0;
38 const HighsInt delta_primal_phase2_iteration_count =
39 info.primal_phase2_iteration_count - info.primal_phase2_iteration_count0;
40 const HighsInt delta_primal_bound_swap =
41 info.primal_bound_swap - info.primal_bound_swap0;
42
43 HighsInt check_delta_iteration_count =
44 delta_dual_phase1_iteration_count + delta_dual_phase2_iteration_count +
45 delta_primal_phase1_iteration_count + delta_primal_phase2_iteration_count;
46 if (check_delta_iteration_count != delta_iteration_count) {
47 highsLogUser(
48 log_options, HighsLogType::kError,
49 "Iteration total error %" HIGHSINT_FORMAT " + %" HIGHSINT_FORMAT
50 " + %" HIGHSINT_FORMAT " + %" HIGHSINT_FORMAT " = %" HIGHSINT_FORMAT
51 " != %" HIGHSINT_FORMAT "\n",
52 delta_dual_phase1_iteration_count, delta_dual_phase2_iteration_count,
53 delta_primal_phase1_iteration_count,
54 delta_primal_phase2_iteration_count, check_delta_iteration_count,
55 delta_iteration_count);
56 }
57 std::stringstream iteration_report;
58 if (delta_dual_phase1_iteration_count) {
59 iteration_report << "DuPh1 " << delta_dual_phase1_iteration_count << "; ";
60 }
61 if (delta_dual_phase2_iteration_count) {
62 iteration_report << "DuPh2 " << delta_dual_phase2_iteration_count << "; ";
63 }
64 if (delta_primal_phase1_iteration_count) {
65 iteration_report << "PrPh1 " << delta_primal_phase1_iteration_count << "; ";
66 }
67 if (delta_primal_phase2_iteration_count) {
68 iteration_report << "PrPh2 " << delta_primal_phase2_iteration_count << "; ";
69 }
70 if (delta_primal_bound_swap) {
71 iteration_report << "PrSwap " << delta_primal_bound_swap << "; ";
72 }
73

Callers 2

timeReportingMethod · 0.85
solveMethod · 0.85

Calls 4

highsLogUserFunction · 0.85
highsLogDevFunction · 0.85
c_strMethod · 0.80
strMethod · 0.80

Tested by

no test coverage detected