I'm working on an mid-sized linear program (70k x 10k sparse constraint matrix) and need to run a large number of scenarios, requiring ~2,000 CPU-hours at my current solve time. Because the changes are relatively minor (changing at most ~10% of the objective function, aka c matrix), using a warm start could significantly speed up solution times, but I have not been able to find a fast warm-start LP solver in Python.
I have been working to date with linprog
in Matlab and the CVXOPT lp
solver in Python, with the best performance using the GLPK simplex solver within CVXOPT. However, the CXVOPT wrapper for GLPK does not implement a warm start, even though a warm start is possible using GLPK. While CVXOPT supports warm start in its native conelp
solver, this is significantly slower than a cold start in GLPK. I have not been able to find warm start options in PuLP or other references to warm starts in Python modules.
Does anyone have experience adapting/patching CVXOPT to do warm starts with GLPK, or can show how to do a warm start in other Python optimization packages?
Similar questions have been asked here and here, but without enough detail to produce useful answers.