Skip to content

DO NOT MERGE! Benchmarks: Commercial solvers run#433

Draft
KristijanFaust-OET wants to merge 28 commits intomainfrom
commercial-solvers-run
Draft

DO NOT MERGE! Benchmarks: Commercial solvers run#433
KristijanFaust-OET wants to merge 28 commits intomainfrom
commercial-solvers-run

Conversation

@KristijanFaust-OET
Copy link
Copy Markdown
Collaborator

@KristijanFaust-OET KristijanFaust-OET commented Feb 19, 2026

Implements CPLEX, knitro and xpress commercial solver runs.

Solver options

Knitro

Knitro support confirmed the following options

feastol=1e-6
opttol=1e-6
mip_opt_gap_rel=1e-4
  • how to say we don't need a basic solution?

Xpress

  • Have we heard back from FICO support?

Gurobi

Gurobi team recommended

      MIPGap: 1.e-4 # default
      FeasibilityTol: 1.e-6 # default
      OptimalityTol: 1.e-6  # default
      SolutionTarget: 1  # basic not needed

They don't think it's worth trying to set BarConvTol as the meaning of this varies too much between solvers.

Cplex

Cplex support confirmed

            "mip.tolerances.mipgap": mip_gap,
            # LP tolerances
            "simplex.tolerances.feasibility": lp_tol,
            "simplex.tolerances.optimality": lp_tol,
            "solutiontype": 2, # Basic solutions not needed
  • Have asked: do the simplex tolerances also work for barrier?

@vercel
Copy link
Copy Markdown

vercel bot commented Feb 19, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
solver-benchmark Ready Ready Preview, Comment Apr 15, 2026 5:43pm

Request Review

@eantonini eantonini added enhancement New feature or request benchmark labels Mar 17, 2026
@danielelerede-oet
Copy link
Copy Markdown
Member

@KristijanFaust-OET @siddharth-krishna I've added Mosek to the set of commercial solvers again considering default options only.

In addition, I see you're using solver_model.get_time() for CPLEX, but that metric does not provide a clean solver runtime comparable to other solvers. It reflects an internal clock rather than the time spent solving a single instance, and may include additional overhead or accumulated time. As far as I know, CPLEX does not expose a directly comparable runtime metric through this interface. There is some ongoing work in Linopy to improve this (PyPSA/linopy#583) while I also provided a workaround that we could use here (PyPSA/linopy#636).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

benchmark enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants