Hi,
I am using version 2.9.9 of cbc in ubuntu 17.10 docker image. My test.lp file has following content:
When trying with semis section I get an error "terminate called after throwing an instance of 'CoinError?' Aborted"
On a Mac I get: libc++abi.dylib: terminating with uncaught exception of type CoinError? Abort trap: 6
However if I comment out Semis it works fine. I was hoping that Semis are supported. Am I doing something wrong?
My command is : cbc -presolve on -import test.lp solve solu out.txt
On further analysis I found out when in cbc prompt I type "import test.lp" it fails and shows same error is I tried in MPS format as well there i got
Bad image at line 19 < SC BND1 YTWO 3 >
Contents of mps file are :
I am using version 2.9.9 of cbc in ubuntu 17.10 docker image. My test.lp file has following content:
Maximize
obj: x1 + 2 x2 + 3 x3 + x4
Subject To
c1: - x1 + x2 + x3 + 10 x4 <= 20
c2: x1 - 3 x2 + x3 <= 30
c3: x2 - 3.5 x4 = 0
Bounds
0 <= x1 <= 40
2 <= x4 <= 3
General
x4
Semis
x1 x2 x3
When trying with semis section I get an error "terminate called after throwing an instance of 'CoinError?' Aborted"
On a Mac I get: libc++abi.dylib: terminating with uncaught exception of type CoinError? Abort trap: 6
However if I comment out Semis it works fine. I was hoping that Semis are supported. Am I doing something wrong?
My command is : cbc -presolve on -import test.lp solve solu out.txt
On further analysis I found out when in cbc prompt I type "import test.lp" it fails and shows same error is I tried in MPS format as well there i got
Bad image at line 19 < SC BND1 YTWO 3 >
Contents of mps file are :
NAME TESTPROB
ROWS
N COST
L LIM1
G LIM2
E MYEQN
COLUMNS
XONE COST 1 LIM1 1
XONE LIM2 1
YTWO COST 4 LIM1 1
YTWO MYEQN -1
ZTHREE COST 9 LIM2 1
ZTHREE MYEQN 1
RHS
RHS1 LIM1 5 LIM2 10
RHS1 MYEQN 7
BOUNDS
UP BND1 XONE 4
SC BND1 YTWO 3
ENDATA
Some notes:
- The LP file parser crashes hard. Preferably, a parser should never crash on erroneous input and always produce a (good) error message,
- The MPS file reader does not crash, but the error message "bad image" seems a bit strange to me (what has this to do with an image? In prehistoric times an "image" was sometimes used as the equivalent of "file". "Bad file" is still somewhat of a bad message.).
- CBC actually supports semi-continuous variables.
- Semi-continuous behavior can be modeled with binary variables [3]: \[\begin{align} &\delta \cdot \ell \le x \le \delta \cdot u\\&\delta \in \{0,1\}\\&x \in [0,u]\\&\ell > 0\end{align}\]
- If you have good upper bounds, this may actually solve faster (MIP solvers do like binary variables).
- Semi-continuous variables with a zero lower bound do not make much sense.
- The LP and MPS file in this post do not represent the same problem.
- Why did nobody complain about this before?
Semi continuous variables are in Cbc (as a simple version of lotsizing
variables).
However there is no way of inputting them using mps or lp files.
Having invented semi-continuous variables (probably before you were born!), I feel some responsibility to make them easier to use in Cbc. I will get them working with mps files in trunk.
John Forrest
However there is no way of inputting them using mps or lp files.
Having invented semi-continuous variables (probably before you were born!), I feel some responsibility to make them easier to use in Cbc. I will get them working with mps files in trunk.
John Forrest
References
- Semis section in lp file or MPS file leading to a crash, https://list.coin-or.org/pipermail/cbc/2018-January/002343.html
- https://list.coin-or.org/pipermail/cbc/2018-January/002344.html
- Semi-continuous variables, http://yetanothermathprogrammingconsultant.blogspot.com/2016/08/semi-continuous-variables.html
- QP is convex or not? http://yetanothermathprogrammingconsultant.blogspot.com/2013/07/qp-is-convex-or-not.html
- John Forrest, Robin Lougee-Heimer, CBC User Guide, https://www.coin-or.org/Cbc/cbcuserguide.html
No comments:
Post a Comment