Skip to content

Use primal simplex for IPM crossover cleanup? #3047

Description

@jajhall

Discussed in #3023

Originally posted by Wronskode May 13, 2026
​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

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions