[Coin-lpsolver] Parametric programming

Paulo J. S. Silva pjssilva at ime.usp.br
Fri Jun 2 14:37:55 EDT 2006


Hello,

I am using the Osi interface to solve a parametric programming problem
(cost + alpha*deltaCost). My code looks very similar to the parametrics
code in OsiClpSolverInterfaceTest.cpp.

In my problem I don't need to visit all critical points (that s the
parameter alpha is changed a lot from one problem to the next). In this
case I can use simply resolve to go to the next solution, but I have
realized that using the parametric programming approach the solver needs
do less pivots than with resolve (the number of pivot in the parametric
code is 0.25 of the number of pivot used by resolve). It seems like the
parametric programming approach is working selecting better candidates
to enter the basis. However, if a measure time, the parametric code take
basically the same time as the resolve one. It seems to me that the
problem is the amount of time the code spends calling getReducedGradient
and saveObjectiveAndRefresh. 

I have the feeling that I may speed things up if I change Clp code to
deal with two objective rows. One with the original objective c and the
other with the deltaC vector. Then, whenever Clp needs a reduced cost it
could just add the reducedCosts of this two rows with the secong scaled
by the parameter alpha. Does this make sense? Is this feasible without a
massive effort, or would I need to learn Clp inside out to try this? 

Finally, I would like to confirm that Clp uses the Steepest edge rule
whenever I use the simple resolve version. Is this right?

Best,

Paulo

-- 
Paulo José da Silva e Silva 
Professor Assistente do Dep. de Ciência da Computação
(Assistant Professor of the Computer Science Dept.)
Universidade de São Paulo - Brazil

e-mail: pjssilva at ime.usp.br      Web: http://www.ime.usp.br/~pjssilva

Teoria é o que não entendemos o     (Theory is something we don't)
suficiente para chamar de prática.  (understand well enough to call
practice)




More information about the Clp mailing list