[Osi] modify constraint system

Arno Schödl aschoedl at think-cell.com
Tue Mar 25 15:04:05 EDT 2008


Lou,

thank you for your feedback! To be more precise, my algorithm 

- maximizes the objective, 
- then determines the rows which are currently limiting the objective variable, 
- in these rows, replaces the objective variable with its current value,
- and repeats until all occurrences of the objective variable have been replaced.

In effect, it maximizes the sum over all occurrences of the objective, with the penalty raised to an infinite power. Or, stated differently, it first optimizes the worst case, then, while holding the worst case constant, optimizes the second-worst case etc. Is this a standard technique that has a proper name?

The problem is to identify the rows which are currently limiting the objective. Simply looking at the slack variables does not work, because rows can be traded off against each other, e.g., the optimal subspace is not a point. OsiSolverInterface::basisIsAvailable() et. al. look like they would help me, although I need to look into how exactly. Am I on the right path there?

Unfortunately, although my frequent resolving seems to make Dylp a good choice, OsiDylpSolverInterface::basisIsAvailable() is not implemented. OsiClpSolverInterface::basisIsAvailable() is.

Arno

-----Original Message-----
From: osi-bounces at list.coin-or.org [mailto:osi-bounces at list.coin-or.org] On Behalf Of Lou Hafer
Sent: Tuesday, March 25, 2008 7:21 PM
To: osi at list.coin-or.org
Subject: Re: [Osi] modify constraint system

Arno,

	Well, I can see you're ahead of the email I just sent  :-)
	
	In the original email, you described the task as `find an extreme value
for a variable, then fix the variable in the limiting constraints, and
reoptimise.'  The critical question would be `Can you simply fix the variable,
or do you really need to fix it in a subset of constraints and leave it as a
variable in other constraints?'

	If you can simply fix the variable, that's the way to go.  Leave the
business of adjusting the constraints to the underlying solvers.  They will all
handle fixed variables efficiently.

	If you really need to fix the variable in a few constraints and leave it
as a variable in others, then delete/add column might be the best way within the
standard Osi interface API.

	Clp is extended a fair bit beyond the Osi standard. The method 
ClpModel::modifyCoefficient might be just what you're looking for.
	
							Lou

_______________________________________________
Osi mailing list
Osi at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/osi

--
Arno Schoedl · aschoedl at think-cell.com 
Technical Director 
 
think-cell Software GmbH · Invalidenstr. 34 · 10115 Berlin, Germany 
http://www.think-cell.com · phone +49-30-666473-10 · fax +49-30-666473-19
Geschäftsführer: Dr. Markus Hannebauer, Arno Schoedl · Amtsgericht Charlottenburg, HRB 85229





More information about the Osi mailing list