[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-glpk] GLPK and SYMPHONY not getting the same solution
From: |
Andrew Makhorin |
Subject: |
Re: [Help-glpk] GLPK and SYMPHONY not getting the same solution |
Date: |
Wed, 19 Oct 2005 01:30:52 +0400 |
> im having problems getting the same solution using
> both programs. I attached the MPS file that containts
> the problem, consisting of 3 integer variables and 1
> binary. GLPK calculates the problem correctly,
> SYMPHONY does not. Anyone knows how to get the same
> solution out of SYMPHONY?
I have sent the following message to coin-discuss list (it is a
reply to Ted Ralphs' message):
> Yes, this is exactly the problem. According to the MPS standard, any
> integer variable without bounds is assumed to be binary. The COIN MPS
> reader complies with this standard, but not all readers do (GLPKs reader
> does not, for instance).
OSL documentation says (chapter "Passing Your Model Using Mathematical
Programming System (MPS) Format", section "Integer Data"):
General Integer Variables
For general integer variables, the following indicates the
various values you may use for the fields:
If you are defining general integer variables, field 1 must
be blank and field 5 must contain the value 'INTORG'
(including the quotation marks) in the record that denotes
the start of integer variables. In the record that denotes
the end of integer variables, field 1 must be blank and
field 5 must contain the value 'INTEND'.
You can select any name for field 2 as long as it is
different from the preceding and following column names.
Field 4, although ignored, must be blank in free format.
All variables between the INTORG and INTEND markers are
taken as integer variables if the intunit parameter in
the call to EKKMPS is nonzero.
And this is clarified by the following example:
The following is an example of defining general integer
variables:
*234567890123456789012345678901234567890123456789012345678901234567890
COLUMNS
COL01 OBJ 1.0
COL01 ROW01 3.0 ROW05 5.6
COL02 ROW01 1.0 ROW02 2.0
*
* Mark COL03 and COL04 as integer
*
INT1 'MARKER' 'INTORG'
COL03 ROW02 1.1 ROW03 1.0
COL04 ROW01 -2.0 ROW04 2.8
INT1END 'MARKER' 'INTEND'
*
COL05 OBJ 2.0
COL05 ROW01 -1.0 ROW05 1.0
COL06 ROW03 1.0
COL07 ROW04 -1.2
COL08 OBJ -1.0
COL08 ROW01 -1.0 ROW05 1.9
Here, the columns named COL03 and COL04 must take on integer
values.
I didn't find any points that "any integer variable without bounds is
assumed to be binary".
Andrew Makhorin