[Coin-osi-devel] Spec for row/column name handling, with first cut at code.

Lou Hafer lou at cs.sfu.ca
Fri Feb 9 16:45:37 EST 2007


	A distillation of the debate to this point (see the previous emails for
the full text):

Lou:    OSI will handle names as a string attached to an index position in the
	current constraint system.  It's up to the client to set the string when
	they change the row or column occupying the index position, if that's
	important to them.  Where necessary, OSI would generate a default name
	for the index position.

Francois:  It'd be much more useful if OSI associated a string with a given
	variable or constraint, and that association remained constant across
	changes in the constraint system.  Where necessary, OSI would generate a
	default name for a variable or constraint.

Francois, apologies if I've oversimplified. I hope this captures the essence of
the previous emails.

	Francois is right, an association that mapped a string to a particular
variable or constraint would have more utility in many applications.  But this
requires a fundamental change in OSI's attitude toward maintaining the
constraint system.  Currently, OSI is stateless --- the constraint system is
what it is, in the current instant.  OSI does not track changes over time.

	Maintaining the association of a unique string to a variable or
constraint, over the length of program execution, would require OSI to keep
state information. First, an oracle to generate unique names (one could finesse 
this with timestamps, so state is maintained elsewhere). Those unique names 
would need to be remembered (a vector the size of the constraint system, always 

	The lazy stateless approach says, in essence, ``I'm willing to remember
what you tell me by way of names for specific index positions, and devote as
much resource to that as is needed.  I'll even slide everything down a position
if you delete something in the middle of the index range.  When you ask for a
name, you'll get the name associated with that index position.''

	So, the question to all of you: Do people feel we should beef up OSI to
maintain the amount of state needed to maintain an association of names to 
variables and constraints, rather than just index positions?

	On the question of utility of the `lazy name' scheme, well, we'll just
have to agree to disagree.  I proposed the idea precisely because I see it as
useful to cbc-generic as a client (user) of Osi.


More information about the Osi mailing list