[Clp] Necessary preconditions for manually calling OsiSolverInterface::pivot(int, int, int)

John J Forrest jjforre at us.ibm.com
Wed Feb 25 16:30:05 EST 2009


Sebastian,

Not sure it will solve your problem, but it will do no harm to replace 
asserts by return -1 (to signal that basis would be singular).

In trunk pivot now returns -1 on small pivot.

John Forrest





[Clp] Necessary preconditions for manually calling 
OsiSolverInterface::pivot(int, int, int)

Sebastian Theophil 
to:
clp
02/25/2009 12:42 PM


Sent by:
clp-bounces at list.coin-or.org







Dear CLP users,
 
I have a problem using the pivot method correctly. Basically, I try to 
find out how I can decide a priori if a pivot step is possible or not 
instead of stumbling over the assert that fabs(alpha_)>1e-12.
 
Given the outgoing variable in sequenceOut_, ClpSimplex::pivot seems to 
use the pivotVariable_ array to to find the pivot element. Apparently I 
could check pivotVariable_ before calling pivot() to find the pivot 
element. Additionally, I'd have to check the value of the pivot element 
alpha_. It seems to me that the value of alpha_ is the result of the 
factorization done in 
 
factorization_->updateColumnFT(rowArray_[2],rowArray_[1])
 
Without doing this factorization I cannot decide if the pivot can be done 
or not. Am I correct? Should I do this calculation beforehand to implement 
a test? Since the pivot() function already exists, I thought there must be 
a way to do what I am trying to do that is conformant with the OSI 
interface, am I right?
 
I'd appreciate any help in this matter.
 
Thanks in advance,
Sebastian
 
Some more background information on what I am trying to achieve: 
 
I'm trying to solve LP problems that are highly degenerate. Thus, my 
optimal primal basis contains slack variables with value 0. As far as I 
understand, this basic slack variable can be made non-basic and another 
slack variable can be made basic in its place without changing the values 
of basic non-slack variables. 
 
I'd like to pivot out each basic slack variable with value 0. I would like 
to pivot in a non-basic slack variable instead. For now, any non-basic 
slack variable would do. In the end, I would prefer to pivot in a 
non-basic slack variable that leads to a different dual solution. The goal 
is to enumerate (possibly all) dual solutions that belong to the same 
primal solution. 
 
--
Sebastian Theophil (stheophil at think-cell.com)
Software Engineer 

think-cell Software GmbH
http://www.think-cell.com
Invalidenstr. 34
phone
+49-30-666473-10
10115 Berlin, Germany
toll-free (US)
+1-800-891-8091
Directors: Dr. Markus Hannebauer, Dr. Arno Schoedl
Amtsgericht Charlottenburg, HRB 85229
_______________________________________________
Clp mailing list
Clp at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/clp

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/clp/attachments/20090225/aab11fdf/attachment.html>


More information about the Clp mailing list