[Coin-discuss] OsiSimplexInterface implementation for CPLEX

Mikhail Nediak msnediak at rutcor.rutgers.edu
Thu Jul 11 12:43:15 EDT 2002


Dear COIN Community,

Some time ago we have promised to release a pivot-based simplex interface 
extensions to OSI. We now post a preliminary version of such interface
and its implementation for CPLEX. The following files are attached:

* OsiSimplexInterface.h -- an abstract class that defines all the methods
of the extended interface

* OsiCpxSimplexInterface.h -- a declaration of the OsiCpxSimplexInterface 
class which is a descendant of both OsiCpxSolverInterface and 
OsiSimplexInterface. We currently define setBasisStatus() and 
getBasisStatus() methods in addition to already available setWarmStart()
and getWarmStart(). They can probably be reimplemented in terms of
OsiWarmStartBasis. It is desirable, however, to make resize() operation
of OsiWarmStartBasis more efficient, since its current implementation 
reallocates and copies memory in each call.

* OsiCpxSimplexInterface.cpp -- an implementation of 
OsiCpxSimplexInterface. To compile this, the getEnvironmentPtr() 
function of OsiCpxSolverInterface class has to be a protected method 
(now it is defined as private). Some methods 
were quite thoroughly tested in our pivot-based MIP heuristic, others
may still require more work (those marked by //TEST). 
A dualPivotResult() method does not work since we do not completely
understand CPXdratio() function (suggestions are VERY welcomed).
Another issue is that we had to set full pricing to ensure that
reduced costs do get updated in the pivots forced by CPXpivot().
Suggestions on how this can be done some other way are welcomed.

This implementation was tested with CPLEX 7.x. We do not know if it
can work with previous versions or whether it will still work with new 
releases of CPLEX. The problem is that many functions that we had to use
are considered "undocumented" by ILOG and may simply disappear or change
in the future.

We welcome any comments and suggestions. Our hope is that this type of
functionality may be incorporated into the interface of the open source 
simplex solver which is currently under development in the COIN community, 
as well as into interfaces of (at least some of) other solvers. Having 
this type of functionality in the interface is important both for 
implementations of pivot-based heuristics, and for the cut generation
methods which use simplex tableau information.

Best regards,
Jonathan Eckstein
Mikhail Nediak





More information about the Coin-discuss mailing list