[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