Changeset 1639 for trunk


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)

Location:
trunk/Cbc/src
Files:
2 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) {
  • trunk/Cbc/src/CbcSolver.cpp

    r1638 r1639  
    76737673                                }
    76747674                                lpSolver->computeObjectiveValue(false);
    7675                                 double objValue = clpSolver->getObjValue()
    7676                                   * clpSolver->getObjSense();
     7675                                double objValue = clpSolver->getObjValue();
    76777676                                if (integerProblem)
    76787677                                  fprintf(fp,"%d %g\n",iStat2,objValue);
     
    77427741                                    // Write solution header (suggested by Luigi Poderico)
    77437742                                    lpSolver->computeObjectiveValue(false);
    7744                                     double objValue = lpSolver->getObjValue() * lpSolver->getObjSense();
     7743                                    double objValue = lpSolver->getObjValue();
    77457744                                    int iStat = lpSolver->status();
    77467745                                    int iStat2 = -1;
Note: See TracChangeset for help on using the changeset viewer.