Skip to content

Commit a20d07e

Browse files
committed
Adding primal simplex subsolver timing - but no times yet recorded
1 parent 6b72c1b commit a20d07e

File tree

2 files changed

+25
-23
lines changed

2 files changed

+25
-23
lines changed

highs/mip/HighsMipAnalysis.cpp

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -124,36 +124,30 @@ void HighsMipAnalysis::mipTimerUpdate(
124124
// If IPM has not been run first, then check that simplex call
125125
// counts are consistent with valid_basis and presolve
126126
if (valid_basis) {
127-
mipTimerAdd(kMipClockSimplexBasisSolveLp,
128-
sub_solver_call_time.num_call[kSubSolverSimplexBasis],
129-
sub_solver_call_time.run_time[kSubSolverSimplexBasis]);
130127
assert(sub_solver_call_time.num_call[kSubSolverSimplexNoBasis] == 0);
131-
} else if (presolve) {
132-
mipTimerAdd(kMipClockSimplexBasisSolveLp,
133-
sub_solver_call_time.num_call[kSubSolverSimplexBasis],
134-
sub_solver_call_time.run_time[kSubSolverSimplexBasis]);
135-
mipTimerAdd(kMipClockSimplexNoBasisSolveLp,
136-
sub_solver_call_time.num_call[kSubSolverSimplexNoBasis],
137-
sub_solver_call_time.run_time[kSubSolverSimplexNoBasis]);
138-
} else {
139-
mipTimerAdd(kMipClockSimplexNoBasisSolveLp,
140-
sub_solver_call_time.num_call[kSubSolverSimplexNoBasis],
141-
sub_solver_call_time.run_time[kSubSolverSimplexNoBasis]);
128+
} else if (!presolve) {
142129
assert(sub_solver_call_time.num_call[kSubSolverSimplexBasis] == 0);
143130
}
144131
} else {
145132
// IPM has been run first, then at least one of the simplex call
146133
// counts should be zero
147-
assert(sub_solver_call_time.num_call[kSubSolverSimplexBasis] *
148-
sub_solver_call_time.num_call[kSubSolverSimplexNoBasis] ==
149-
0);
150-
mipTimerAdd(kMipClockSimplexBasisSolveLp,
151-
sub_solver_call_time.num_call[kSubSolverSimplexBasis],
152-
sub_solver_call_time.run_time[kSubSolverSimplexBasis]);
153-
mipTimerAdd(kMipClockSimplexNoBasisSolveLp,
154-
sub_solver_call_time.num_call[kSubSolverSimplexNoBasis],
155-
sub_solver_call_time.run_time[kSubSolverSimplexNoBasis]);
134+
assert(sub_solver_call_time.num_call[kSubSolverSimplexBasis] == 0 ||
135+
sub_solver_call_time.num_call[kSubSolverSimplexNoBasis] == 0);
156136
}
137+
138+
mipTimerAdd(kMipClockSimplexBasisSolveLp,
139+
sub_solver_call_time.num_call[kSubSolverSimplexBasis],
140+
sub_solver_call_time.run_time[kSubSolverSimplexBasis]);
141+
mipTimerAdd(kMipClockSimplexNoBasisSolveLp,
142+
sub_solver_call_time.num_call[kSubSolverSimplexNoBasis],
143+
sub_solver_call_time.run_time[kSubSolverSimplexNoBasis]);
144+
mipTimerAdd(kMipClockPrimalSimplexBasisSolveLp,
145+
sub_solver_call_time.num_call[kSubSolverPrimalSimplexBasis],
146+
sub_solver_call_time.run_time[kSubSolverPrimalSimplexBasis]);
147+
mipTimerAdd(kMipClockPrimalSimplexNoBasisSolveLp,
148+
sub_solver_call_time.num_call[kSubSolverPrimalSimplexNoBasis],
149+
sub_solver_call_time.run_time[kSubSolverPrimalSimplexNoBasis]);
150+
157151
if (sub_solver_call_time.num_call[kSubSolverHipo]) {
158152
const HighsInt mip_clock = analytic_centre
159153
? kMipClockHipoSolveAnalyticCentreLp

highs/mip/MipTimer.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ enum iClockMip {
102102
kMipClockIpxSolveAnalyticCentreLp,
103103
kMipClockHipoSolveLp,
104104
kMipClockIpxSolveLp,
105+
kMipClockPrimalSimplexBasisSolveLp,
106+
kMipClockPrimalSimplexNoBasisSolveLp,
105107

106108
// Sub-MIP solves
107109
kMipClockSubMipSolve,
@@ -149,6 +151,10 @@ class MipTimer {
149151
assert(clock[kMipClockIpxSolveAnalyticCentreLp] == 10);
150152
clock[kMipClockHipoSolveLp] = timer_pointer->clock_def("Solve LP: HiPO");
151153
clock[kMipClockIpxSolveLp] = timer_pointer->clock_def("Solve LP: IPX");
154+
clock[kMipClockPrimalSimplexBasisSolveLp] =
155+
timer_pointer->clock_def("Solve LP - primal simplex basis");
156+
clock[kMipClockPrimalSimplexNoBasisSolveLp] =
157+
timer_pointer->clock_def("Solve LP - primal simplex no basis");
152158

153159
// Level 1 - Should correspond to kMipClockTotal
154160
clock[kMipClockInit] = timer_pointer->clock_def("Initialise");
@@ -368,6 +374,8 @@ class MipTimer {
368374
const std::vector<HighsInt> mip_clock_list{
369375
kMipClockSimplexBasisSolveLp,
370376
kMipClockSimplexNoBasisSolveLp,
377+
kMipClockPrimalSimplexBasisSolveLp,
378+
kMipClockPrimalSimplexNoBasisSolveLp,
371379
kMipClockHipoSolveAnalyticCentreLp,
372380
kMipClockIpxSolveAnalyticCentreLp,
373381
kMipClockHipoSolveLp,

0 commit comments

Comments
 (0)