Skip to content

[BUG] PDLP algorithm unexpectedly stops after approximately 755_000 - 800_000 iterations #71

@Hellrasier

Description

@Hellrasier

Describe the bug
I use python interface to solve relaxed MipLib instances with the following settings SolverSettings:

{'tolerances': {'absolute_dual': 1e-06,
  'relative_dual': 1e-06,
  'absolute_primal': 1e-06,
  'relative_primal': 1e-06,
  'absolute_gap': 1e-06,
  'relative_gap': 1e-06,
  'primal_infeasible': 0.0,
  'dual_infeasible': 0.0,
  'integrality_tolerance': 1e-05,
  'absolute_mip_gap': 0.0,
  'relative_mip_gap': 0.0001},
 'infeasibility_detection': False,
 'time_limit': None,
 'iteration_limit': 1000000,
 'solver_mode': 1,
 'method': <SolverMethod.PDLP: 1>,
 'mip_scaling': True,
 'heuristics_only': False,
 'num_cpu_threads': -1,
 'crossover': False,
 'log_to_console': True}

If I take any instance that run more than 750 000 iterations, PDLP algorithm just stops, nothing is printed to logs anymore and GPU load is 0%. I don't know what is happening, but seems that it just becomes idle, since nothing happens after a long period of time.

Steps/Code to reproduce bug
For example I use ofi.mps from MipLib dataset, this instance is relaxed to LP.
Then run the following code:

from cuopt_mps_parser import ParseMps
from cuopt.linear_programming import Solution, SolverSettings,SolverMethod

problem = ParseMps("mps_dataset/ofi.mps")
solver_settings = SolverSettings()
solver_settings.set_parameter('method', SolverMethod.PDLP)
solver_settings.set_parameter('crossover', False)
solver_settings.set_optimality_tolerance(1e-6)
solver_settings.set_parameter('iteration_limit', 1_000_000)

log_file = f"/logs/solver.log"

result = Solve(problem, solver_settings, log_file=log_file)

I use default SolverMode which is Stable2

Expected behavior
Algorithm should run all iterations till it hit iteration limit or reaches optimality conditions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions