[Coin-SMI] Changing right hand side of inequalities
Francois Margot
fmargot at andrew.cmu.edu
Fri May 20 12:00:46 EDT 2005
I am trying to change the right hand side of inequalities in the .stoch file.
When working with equalities, everything works as expected, but with
inequalities, instead of changing the rhs, the code creates a ranged
constraint. I list below the three input files creating the problem.
The code we use is basically the following:
smi.readSmps(bug);
OsiClpSolverInterface *clp = new OsiClpSolverInterface();
smi.setOsiSolverHandle(*clp);
OsiSolverInterface *osiStoch =smi.loadOsiSolverData();
osiStoch->writeMps("bug");
Using the following files:
----------------------------------------------------------
bug.core file:
NAME BUG
ROWS
N obj
G C0
G C1
G C2
G C3
COLUMNS
x01 obj 1
x01 C3 1
x01 C1 1
x01 C0 1
x02 obj 1
x02 C2 1
x02 C1 1
x02 C0 1
x03 obj 1
x03 C3 1
x03 C2 1
x03 C0 1
x04 obj 0.5
x04 C3 1
x04 C1 1
x05 obj 0.5
x05 C2 1
x05 C1 1
x06 obj 0.5
x06 C3 1
x06 C2 1
RHS
RHS C0 0
RHS C1 1
RHS C2 1
RHS C3 1
ENDATA
----------------------------------------------------------
bug.stoch file:
NAME BUG
SCENARIOS DISCRETE REPLACE
SC SCEN01 ROOT 0.500 STG02
RHS C1 1.000
RHS C2 1.000
RHS C3 0.000
SC SCEN02 ROOT 0.500 STG02
RHS C1 0.000
RHS C2 1.000
RHS C3 0.000
ENDATA
-----------------------------------------------------------
bug.time:
TIME BUG
PERIODS LP
x01 C0 STG01
x04 C1 STG02
ENDATA
-----------------------------------------------------------
bug.mps file obtained:
NAME BLANK
ROWS
N OBJROW
G R0000000
E R0000001
E R0000002
L R0000003
L R0000004
E R0000005
L R0000006
COLUMNS
C0000000 OBJROW 1. R0000000 1.
C0000000 R0000001 1. R0000003 1.
C0000000 R0000004 1. R0000006 1.
C0000001 OBJROW 1. R0000000 1.
C0000001 R0000001 1. R0000002 1.
C0000001 R0000004 1. R0000005 1.
C0000002 OBJROW 1. R0000000 1.
C0000002 R0000002 1. R0000003 1.
C0000002 R0000005 1. R0000006 1.
C0000003 OBJROW 0.25 R0000001 1.
C0000003 R0000003 1.
C0000004 OBJROW 0.25 R0000001 1.
C0000004 R0000002 1.
C0000005 OBJROW 0.25 R0000002 1.
C0000005 R0000003 1.
C0000006 OBJROW 0.25 R0000004 1.
C0000006 R0000006 1.
C0000007 OBJROW 0.25 R0000004 1.
C0000007 R0000005 1.
C0000008 OBJROW 0.25 R0000005 1.
C0000008 R0000006 1.
RHS
RHS R0000001 1. R0000002 1.
RHS R0000005 1.
RANGES
RANGE R0000003 -1. R0000004 -1.
RANGE R0000006 -1.
ENDATA
------------------------------------------------------------------
Note that R0000001, R0000002, and R0000005 become equalities (instead of >= 1)
and R0000003, R0000004, and R0000006 become ranged constraints
(instead of >= 0).
If the proper way to change the rhs of inequalities is something else,
I would appreciate a simple example.
Francois
More information about the Coin-SMI
mailing list