[Coin-discuss] Another Clp QP question
Sebastian Nowozin
nowozin at gmail.com
Tue Sep 16 08:27:15 EDT 2008
Dear all,
sorry, I have some more Clp QP questions. I need to solve a QP problem
of the form:
min 0.5 x'Ix + f'y
x,y
sb.t. y >= 0,
Ax + By >= c. (1)
with delayed constraint generation for the set (1) where a few hundred
rows are added per iteration. The problem has < 50k variables, and < 5k
constraints, with a block-sparsity such that a total of ~10% of the
elements in A are set, B has only one non-zero per row. The QP solution
time is not very important, though it would be nice to warmstart from a
previous solution. The number of rows should be kept small by pruning
inactive constraints (either by duals of these constraints or by
identifying non-binding rows manually). For constraint generation I do
not need the dual multipliers, only the primal restricted solution x of
that iteration.
Using COIN-OR Clp, I have identified the following options I can use:
1. ClpSimplex::nonlinearSLP(5000, 1e-8);
works reasonably well, but gives poor dual variables, making it
difficult to prune the constraint set. Also, I am not sure I understand
its workings well enough to trust it.
2. ClpSimplex::primal();
does not work well, cycles forever.
3. ClpSimplex::initialBarrierSolve();
surprisingly (this is ClpSimplex after all), seems to work
nicely, although slow and using a lot of memory once the problem grows.
4. Instantiating ClpInterior and using:
ClpInterior model;
model.borrowModel(simplex);
ClpCholeskyBase * cholesky = new ClpCholeskyBase();
cholesky->setKKT(true);
model.setCholesky(cholesky);
model.primalDual();
model.returnModel(simplex);
is not stable, mostly crashing with "dual goes to infinity" message.
Are there any general recommendations on how to use Clp for the above
problem? The QP functionality is almost not documented at all and I
would be grateful for any advice.
Thanks,
Sebastian
More information about the Coin-discuss
mailing list