[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