| 14 | #include <sstream> |
| 15 | |
| 16 | void 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 |
no test coverage detected