Ignore:
Timestamp:
Apr 15, 2011 10:14:13 AM (8 years ago)
Author:
forrest
Message:

fix AddIntegers? bug (and while I am at it - correct maximize printing)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cbc/src/CbcModel.cpp

    r1623 r1639  
    12641264                    possible = true;
    12651265            }
     1266            double allSame = (possible) ? 0.0 : -1.0;
    12661267            for (CoinBigIndex j = rowStart[i];
    12671268                    j < rowStart[i] + rowLength[i]; j++) {
     
    12721273                } else {
    12731274                    nLeft++;
    1274                 }
    1275             }
    1276             if (possible || !nLeft)
     1275                    if (!allSame) {
     1276                      allSame = fabs(element[j]);
     1277                    } else if (allSame>0.0) {
     1278                      if (allSame!=fabs(element[j]))
     1279                        allSame = -1.0;
     1280                    }
     1281                }
     1282            }
     1283            if (nLeft == rowLength[i] && allSame > 0.0)
     1284                possibleRow[i] = 2;
     1285            else if (possible || !nLeft)
    12771286                possibleRow[i] = 1;
    12781287            else
     
    13261335                        double mult = 1.0 / fabs(element[k]);
    13271336                        if (rowLower[i] < -1.0e20) {
    1328                             double value = rowUpper[i] * mult;
     1337                            // treat rhs as multiple of 1 unless elements all same
     1338                            double value = ((possibleRow[i]==2) ? rowUpper[i] : 1.0) * mult;
    13291339                            if (fabs(value - floor(value + 0.5)) < 1.0e-8) {
    13301340                                del[nDel++] = i;
     
    13361346                            }
    13371347                        } else if (rowUpper[i] > 1.0e20) {
    1338                             double value = rowLower[i] * mult;
     1348                            // treat rhs as multiple of 1 unless elements all same
     1349                            double value = ((possibleRow[i]==2) ? rowLower[i] : 1.0) * mult;
    13391350                            if (fabs(value - floor(value + 0.5)) < 1.0e-8) {
    13401351                                del[nDel++] = i;
     
    13461357                            }
    13471358                        } else {
    1348                             double value = rowUpper[i] * mult;
     1359                            // treat rhs as multiple of 1 unless elements all same
     1360                            double value = ((possibleRow[i]==2) ? rowUpper[i] : 1.0) * mult;
    13491361                            if (rowLower[i] == rowUpper[i] &&
    13501362                                    fabs(value - floor(value + 0.5)) < 1.0e-8) {
Note: See TracChangeset for help on using the changeset viewer.