I need to compute a large linear optimization problem very often after recieving updates to my optimization problem.
That is I have a linear problem to find an x such that
$x_1 * c_1 + ... + x_n * c_n$ is as small as possible
under the conditions that $Ax \# b$ (where $\#$ can be $<=$, $>=$ or $=$ on each row).
At some (small) time interval the $a_{ij}$, $c_i$ and $b_i$ can get updates and I need to recompute. The updates only touch very few of the entries and most of the time the changes are only by small amounts.
Some of the $x_i$ are integer variables, some are binary variables and some are real variables.
Current idea:
- find a sparse matrix data structure which allows for efficient updates
- implement a branch-and-bound algorithm which works on that data structure
Question: which combination of sparse matrix representation and linear optimization algorithm is the current state of the art for such a problem?
Sub-question: is there a way to use the result from the previous run if I know only a few entries change?