[Cbc] reading SOS item from CPLEX LP files

Kish Shen kish.shen at gmail.com
Fri Feb 16 06:51:31 EST 2018


Hi,

I posted about this to coin-discuss mailing list yesterday, but it has not
appear there, and there seems to be no messages for the list since Sept
2017, so I am posting this here as well, in case something is wrong with
the coin-discuss mailing list.

I am getting errors from Cbc when reading an LP format file generated by
CPLEX 12:

### CoinLpIO::readLp(): bad SOS item S1

I assume this is from reading the SOS items in the LP file like:

 s999:  S1 ::  x1154 : 1  x5539 : 2

Looking at CoinLpIO.cpp, the code expects no space between S1 and ::

            if (next>=buff&&(!strncmp(next,"S1::",4)||!strncmp(next,"S2::",4)))
{
              setType = next[1]-'0';
              gotStart=true;
            } else {
              // error
              goodLine=0;
            }

I edited the LP file and changed all the 'S1 ::' to 'S1::', and I then got
errors about x1154: repeatedly.
So it looks like the error handling does not advance to the next line after
finding an error.

I edited removed all the spaces before ':' for the SOS items, and the file
was then read without errors.

Should ReadLp be changed to read the SOS items generated by CPLEX with the
extra spaces?

I am running the latest stable branch of Cbc 2.9, downloaded via svn co
about 2 days ago.

Thanks and cheers,

Kish
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20180216/96b3ef7a/attachment.html>


More information about the Cbc mailing list