google-research / FirstOrderLp.jl

Experimental first-order solvers for linear and quadratic programming.
Apache License 2.0
103 stars 19 forks source link

How to warm start the FirstOrderLp.jl solver? #105

Closed ZedongPeng closed 2 years ago

ZedongPeng commented 2 years ago

Expected Behavior

Can we set a starting point for in the FirstOrderLp.jl solver? Or warm-start the dual variables?

In the paper, it's mentioned that

All first-order methods use all-zero vectors as the initial starting points.

mlubin commented 2 years ago

The primal and dual starting points are initialized to zero here. You'll need to modify the code to set a different starting point (current_primal_solution and current_dual_solution). If you do this, also be sure to set current_dual_product to constraint_matrix' * current_dual_solution.

How will you select the starting points?

ZedongPeng commented 2 years ago

Hi Lubin. Thanks for your reply and sorry for the late response. I am trying to solve a large-scale bidding optimization model. The model needs to be solved repeatedly thousands of times every day(with different input data). Since the formulation of the model is deterministic and only the input data will change, I am thinking about using ML or RL to obtain a good start point.

mlubin commented 2 years ago

It seems like you're trying to use this code to do something useful, which was not intended :). However, I'm pleased to say that a C++ implementation of the PDLP algorithm is now available in OR-Tools. This code supports initial starting points. I'll be happy to answer further questions on that repository.

ZedongPeng commented 2 years ago

Thank you a lot.