[Coin-osi-devel] Base OSI name support committed to branches/devel

Lou Hafer lou at cs.sfu.ca
Thu Mar 29 16:33:03 EDT 2007


	I've committed the base OSI name support to branches/devel, as per the
design ideas that circulated back at the beginning of February.  OsiCbc,
OsiDylp, and OsiGlpk are upgraded to fully support all three name disciplines.

	There are three name disciplines, auto, lazy, and full.
	The underlying architecture is that the base OSI class maintains an
array of row names and an array of column names, and an objective name.  Support
for lazy and full names requires cooperation from an OsiXXX as described below.

	Auto simply makes up a name on the spot based on the row or column
index.  This is supported directly from the OSI base and should require no
changes to existing OsiXXX interfaces.  I've taken a pass through the existing
OsiXXX's and made sure that they return false for parameters that they do not
recognise (this is required to pass the upgraded unit test).

	Lazy and full require cooperation from an OsiXXX in order to work 
properly. In general, you will need to do the following:

  * Override the OSI base methods setObjName, setRowName, and setColName so
    that they do the right thing to set names in the underlying solver.
  * Modify deleteRow and deleteColumn routines to call deleteRowNames and
    deleteColumnNames as needed to keep the OSI base name vectors in sync.

  * If your OsiXXX overrides a major input routine (readMps, readLpIO, etc.)
    you'll want to add a call to one of the setRowColNames methods to set
    up the name arrays in the base OSI.

  * Add OsiNameDiscipline to the set/getIntParam routines.

	There is an extensive set of tests installed in the unitTest. Currently 
it produces far too much output. I'll turn this down shortly.

	If you encounter any problems, please let me know (an OSI ticket is the 
best bet).


More information about the Osi mailing list