@@ -102,6 +102,10 @@ void HighsMipAnalysis::mipTimerAdd(const HighsInt mip_clock,
102102 // , const HighsInt thread_id
103103) const {
104104 if (!analyse_mip_time) return ;
105+ if (num_call == 0 ) {
106+ assert (time == 0 );
107+ return ;
108+ }
105109 HighsInt highs_timer_clock = mip_clocks.clock_ [mip_clock];
106110 mip_clocks.timer_pointer_ ->add (highs_timer_clock, num_call, time);
107111}
@@ -120,36 +124,30 @@ void HighsMipAnalysis::mipTimerUpdate(
120124 // If IPM has not been run first, then check that simplex call
121125 // counts are consistent with valid_basis and presolve
122126 if (valid_basis) {
123- mipTimerAdd (kMipClockSimplexBasisSolveLp ,
124- sub_solver_call_time.num_call [kSubSolverSimplexBasis ],
125- sub_solver_call_time.run_time [kSubSolverSimplexBasis ]);
126- assert (sub_solver_call_time.num_call [kSubSolverSimplexNoBasis ] == 0 );
127- } else if (presolve) {
128- mipTimerAdd (kMipClockSimplexBasisSolveLp ,
129- sub_solver_call_time.num_call [kSubSolverSimplexBasis ],
130- sub_solver_call_time.run_time [kSubSolverSimplexBasis ]);
131- mipTimerAdd (kMipClockSimplexNoBasisSolveLp ,
132- sub_solver_call_time.num_call [kSubSolverSimplexNoBasis ],
133- sub_solver_call_time.run_time [kSubSolverSimplexNoBasis ]);
134- } else {
135- mipTimerAdd (kMipClockSimplexNoBasisSolveLp ,
136- sub_solver_call_time.num_call [kSubSolverSimplexNoBasis ],
137- sub_solver_call_time.run_time [kSubSolverSimplexNoBasis ]);
138- assert (sub_solver_call_time.num_call [kSubSolverSimplexBasis ] == 0 );
127+ assert (sub_solver_call_time.num_call [kSubSolverDuSimplexNoBasis ] == 0 );
128+ } else if (!presolve) {
129+ assert (sub_solver_call_time.num_call [kSubSolverDuSimplexBasis ] == 0 );
139130 }
140131 } else {
141132 // IPM has been run first, then at least one of the simplex call
142133 // counts should be zero
143- assert (sub_solver_call_time.num_call [kSubSolverSimplexBasis ] *
144- sub_solver_call_time.num_call [kSubSolverSimplexNoBasis ] ==
145- 0 );
146- mipTimerAdd (kMipClockSimplexBasisSolveLp ,
147- sub_solver_call_time.num_call [kSubSolverSimplexBasis ],
148- sub_solver_call_time.run_time [kSubSolverSimplexBasis ]);
149- mipTimerAdd (kMipClockSimplexNoBasisSolveLp ,
150- sub_solver_call_time.num_call [kSubSolverSimplexNoBasis ],
151- sub_solver_call_time.run_time [kSubSolverSimplexNoBasis ]);
134+ assert (sub_solver_call_time.num_call [kSubSolverDuSimplexBasis ] == 0 ||
135+ sub_solver_call_time.num_call [kSubSolverDuSimplexNoBasis ] == 0 );
152136 }
137+
138+ mipTimerAdd (kMipClockDuSimplexBasisSolveLp ,
139+ sub_solver_call_time.num_call [kSubSolverDuSimplexBasis ],
140+ sub_solver_call_time.run_time [kSubSolverDuSimplexBasis ]);
141+ mipTimerAdd (kMipClockDuSimplexNoBasisSolveLp ,
142+ sub_solver_call_time.num_call [kSubSolverDuSimplexNoBasis ],
143+ sub_solver_call_time.run_time [kSubSolverDuSimplexNoBasis ]);
144+ mipTimerAdd (kMipClockPrSimplexBasisSolveLp ,
145+ sub_solver_call_time.num_call [kSubSolverPrSimplexBasis ],
146+ sub_solver_call_time.run_time [kSubSolverPrSimplexBasis ]);
147+ mipTimerAdd (kMipClockPrSimplexNoBasisSolveLp ,
148+ sub_solver_call_time.num_call [kSubSolverPrSimplexNoBasis ],
149+ sub_solver_call_time.run_time [kSubSolverPrSimplexNoBasis ]);
150+
153151 if (sub_solver_call_time.num_call [kSubSolverHipo ]) {
154152 const HighsInt mip_clock = analytic_centre
155153 ? kMipClockHipoSolveAnalyticCentreLp
@@ -181,9 +179,9 @@ void HighsMipAnalysis::reportMipSolveLpClock(const bool header) {
181179 double total_time = mip_clocks.timer_pointer_ ->read (0 );
182180 if (total_time < 0.01 ) return ;
183181 HighsInt simplex_basis_solve_iclock =
184- mip_clocks.clock_ [kMipClockSimplexBasisSolveLp ];
182+ mip_clocks.clock_ [kMipClockDuSimplexBasisSolveLp ];
185183 HighsInt simplex_no_basis_solve_iclock =
186- mip_clocks.clock_ [kMipClockSimplexNoBasisSolveLp ];
184+ mip_clocks.clock_ [kMipClockDuSimplexNoBasisSolveLp ];
187185 HighsInt ipm_solve_iclock = mip_clocks.clock_ [kMipClockIpxSolveLp ];
188186 // HighsInt num_no_basis_solve =
189187 // mip_clocks.timer_pointer_->clock_num_call[no_basis_solve_iclock]; HighsInt
@@ -301,8 +299,8 @@ void HighsMipAnalysis::checkSubSolverCallTime(
301299 error = true ;
302300 }
303301 };
304- check (kSubSolverSimplexBasis , kMipClockSimplexBasisSolveLp );
305- check (kSubSolverSimplexNoBasis , kMipClockSimplexNoBasisSolveLp );
302+ check (kSubSolverDuSimplexBasis , kMipClockDuSimplexBasisSolveLp );
303+ check (kSubSolverDuSimplexNoBasis , kMipClockDuSimplexNoBasisSolveLp );
306304 check (kSubSolverHipo , kMipClockHipoSolveLp );
307305 check (kSubSolverIpx , kMipClockIpxSolveLp );
308306 check (kSubSolverHipoAc , kMipClockHipoSolveAnalyticCentreLp );
0 commit comments