Some unexpected behavior came up when using the COIN-OR OSI interface to
GLPK.

After a call to lpx_del_cols that removes one column (evidently a basic
one), the code calls lpx_simplex to optimize the changed problem.
However, this call fails with a "basis is invalid" error.

I have traced through the code, so I think I have a sense of what's
happening, which I've listed below.  I'm not sure how this should be
handled.  Andrew (or anyone), what is your advice?  How can we call
lpx_simplex after a call to lpx_del_cols?

Brady


How I think the code works:
- when columns are added, they are by default made nonbasic
- when rows are added, they are by default made basic
- the basis can be changed with a call to lpx_adv_basis or a prior call
to lpx_simplex
- when lpx_simplex is called, it calls spx_simplex, which eventually
calls spx_warm_up
- spx_warm_up will cause the program to fail if the basis is the wrong
size or not invertible
- although I haven't tested them, there seem to be a number of ways the
basis could become invalid:
  + lpx_del_cols removes a basic column
  + lpx_del_rows removes a nonbasic row
  + lpx_add_rows adds a row that is linearly dependent on the current basis


_______________________________________________
Help-glpk mailing list
Help-glpk@gnu.org
http://lists.gnu.org/mailman/listinfo/help-glpk

Reply via email to