Hi everyone,
I was looking into the IPM crossover logic and noticed that it performs a pushdual followed by a pushprimal.
If my understanding is correct, finishing with the pushprimal phase should leave the resulting basis in a primal feasible state (according to the asserts in PushAll). However, it looks like the final cleanup is currently being routed to the dual simplex.
Since the basis is already primal feasible (but potentially dual infeasible at this stage), wouldn't it make more sense and be more efficient to run the primal simplex for the cleanup? If the dual simplex is called instead, it likely has to trigger a Phase 1 to handle the dual infeasibilities, which seems to defeat the purpose of establishing primal feasibility right before it.
Let me know if I'm missing something about the internal solver state after those push phases
Hi everyone,
I was looking into the IPM crossover logic and noticed that it performs a pushdual followed by a pushprimal.
If my understanding is correct, finishing with the pushprimal phase should leave the resulting basis in a primal feasible state (according to the asserts in PushAll). However, it looks like the final cleanup is currently being routed to the dual simplex.
Since the basis is already primal feasible (but potentially dual infeasible at this stage), wouldn't it make more sense and be more efficient to run the primal simplex for the cleanup? If the dual simplex is called instead, it likely has to trigger a Phase 1 to handle the dual infeasibilities, which seems to defeat the purpose of establishing primal feasibility right before it.
Let me know if I'm missing something about the internal solver state after those push phases