[Coin-discuss] OsiClpSolverInterface::isAbandoned()

John J Forrest jjforre at us.ibm.com
Thu Mar 2 09:34:06 EST 2006


George,

Difficult to analyze unless you can send me code that will duplicate 
problem.

But looking at code the problem status is set to -1 in 15 relevant places 
but after a quick look only one looks as if it would give this problem. To 
check for the most likely set modelPtr_->setLogLevel(63) and see if "looks 
like trouble"  occurs.  If it does (from ClpSimplexDual.cpp:4433) then it 
means what it says - in this case dual finished with slight negative 
reduced costs and primal took too long to clear up. 

If this is the case then I need to improve code or tell the user the 
problem is not well posed.  If you have logLevel at 63 then you will see 
scaling information - if some initial elements are very small then you may 
wish to take out small elements from your cuts (and relax rhs to 
compensate).  Another possibility to try is to set the hint to use primal 
rather than dual in the second resolve.

As I said I can only throw out a few suggestions without being able to 
duplicate problem.

John Forrest



Georges Kolomvos <Kolomvos.Georgios at lgi.ecp.fr> 
Sent by: coin-discuss-bounces at list.coin-or.org
03/01/2006 10:14 AM
Please respond to
Discussions about open source software for Operations Research 
<coin-discuss at list.coin-or.org>


To
coin-discuss at list.coin-or.org
cc

Subject
[Coin-discuss] OsiClpSolverInterface::isAbandoned()






Hi folks,

I'm using COIN since 2years now, but i still consider myself a newbie. I 
get
straight to the problem: I'm solving many LPs in a row with the Clp solver 
using
Osi to construct them from scratch. Although they're all supposed to be
solvable, some of them are unexpectedly abandoned. Searching where the 
violent
isAbandoned() signal comes from, i realized that isAbandoned() turns true 
due to
the "status_=-1" of my LP which seems to be peculiar. I append the 
following
lines from OsiClpSolverInterface.cpp (updated a week ago):
bool OsiClpSolverInterface::isAbandoned() const
{
  // not sure about -1 (should not happen) 
  return (modelPtr_->status()==4||modelPtr_->status()==-1);
}

Let me describe you the context of the implementation i'm working on, 
which may
give a clue where the problem might come from. I'm currently coding some 
variant
of the "Nested Benders Decomposition" method widely known in Stochastic
Programming. The method requires solving at every iteration many LPs (some
hundreds of thousands, that are only in a small part identical to each 
other)
which are modified at every iteration by appending new cuts (outer 
linearization
s of the cost-to-go function) and changing the RHS. I've tried two ways of
representing these LPs and by the way any suggestions about what should be 
more
efficient/proper are welcome : (a) I created different 
OsiClpSolverInterfaces
(one per LP) and (b) I created only one OsiClpSolverInterface but many
OsiRowCuts (one per LP). I've experienced the described "bug" in both
representations, but i'll focus on the second one. At a given iteration, 
say
"i", i treat, say the "n" LP; i restore the problem from the previous 
"n-1" LP
(the part which is identical), i applyRowCuts(...)  corresponding to that 
LP, i
proceed to any necessary modifications (in the objective and the RHS) and 
i
resolve(). Once i'm done with that LP, i deleteRows(...) corrsponding to 
the
cuts i applied and i pass to the next "n+1" LP. When all LPs are treated, 
i go
on to the "i+1" iteration.

During this process, typically after the 2nd itération, i come across a
progressively larger number of abandoned LPs. I should note that if i 
instruct
the program to retry once more -i.e to resolve() the LP once more-, it
*sometimes* returns the expected isProvenOptimal() signal. But as the 
iterations
go by, this instruction seems to be of no use, as it keeps on belieiving 
that
the LP should be abandoned. If i export the model of such an abandoned LP 
in mps
format, the "interactive optimizer" clp finds the optimal solution.

Thanks a lot for your time,

Cheers, 

George

----------------------------- 
 
Georges Kolomvos 
Laboratoire Génie Industriel 
Ecole Centrale Paris 
 
e-mail: kolomvos at lgi.ecp.fr 
Tel.: +33(0)689088790 
_______________________________________________
Coin-discuss mailing list
Coin-discuss at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/coin-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/coin-discuss/attachments/20060302/6bb60b16/attachment.html>


More information about the Coin-discuss mailing list