Changeset 1653 for stable/2.6


Ignore:
Timestamp:
May 25, 2011 4:45:39 AM (8 years ago)
Author:
forrest
Message:

allow cleaner exit when integers all preprocessed away (and compiler error in gcc 4.6)

Location:
stable/2.6/Cbc/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • stable/2.6/Cbc/src/CbcEventHandler.hpp

    r1432 r1653  
    143143    /*! \brief Default constructor. */
    144144
    145     CbcEventHandler(CbcModel *model = NULL) ;
     145    CbcEventHandler(CbcModel *model = 0) ;
    146146
    147147    /*! \brief Copy constructor. */
  • stable/2.6/Cbc/src/CbcModel.cpp

    r1627 r1653  
    12621262                    possible = true;
    12631263            }
     1264            double allSame = (possible) ? 0.0 : -1.0;
    12641265            for (CoinBigIndex j = rowStart[i];
    12651266                    j < rowStart[i] + rowLength[i]; j++) {
     
    12701271                } else {
    12711272                    nLeft++;
    1272                 }
    1273             }
    1274             if (possible || !nLeft)
     1273                    if (!allSame) {
     1274                      allSame = fabs(element[j]);
     1275                    } else if (allSame>0.0) {
     1276                      if (allSame!=fabs(element[j]))
     1277                        allSame = -1.0;
     1278                    }
     1279                }
     1280            }
     1281            if (nLeft == rowLength[i] && allSame > 0.0)
     1282                possibleRow[i] = 2;
     1283            else if (possible || !nLeft)
    12751284                possibleRow[i] = 1;
    12761285            else
     
    13241333                        double mult = 1.0 / fabs(element[k]);
    13251334                        if (rowLower[i] < -1.0e20) {
    1326                             double value = rowUpper[i] * mult;
     1335                            // treat rhs as multiple of 1 unless elements all same
     1336                            double value = ((possibleRow[i]==2) ? rowUpper[i] : 1.0) * mult;
    13271337                            if (fabs(value - floor(value + 0.5)) < 1.0e-8) {
    13281338                                del[nDel++] = i;
     
    13341344                            }
    13351345                        } else if (rowUpper[i] > 1.0e20) {
    1336                             double value = rowLower[i] * mult;
     1346                            // treat rhs as multiple of 1 unless elements all same
     1347                            double value = ((possibleRow[i]==2) ? rowLower[i] : 1.0) * mult;
    13371348                            if (fabs(value - floor(value + 0.5)) < 1.0e-8) {
    13381349                                del[nDel++] = i;
     
    13441355                            }
    13451356                        } else {
    1346                             double value = rowUpper[i] * mult;
     1357                            // treat rhs as multiple of 1 unless elements all same
     1358                            double value = ((possibleRow[i]==2) ? rowUpper[i] : 1.0) * mult;
    13471359                            if (rowLower[i] == rowUpper[i] &&
    13481360                                    fabs(value - floor(value + 0.5)) < 1.0e-8) {
     
    19972009        solverCharacteristics_ = NULL;
    19982010        return ;
    1999     } else if (!numberObjects_) {
     2011    } else if (!numberObjects_ && (!strategy_ || strategy_->preProcessState() <= 0)) {
    20002012        // nothing to do
    20012013        solverCharacteristics_ = NULL;
     
    23752387    */
    23762388    // Do heuristics
    2377     doHeuristicsAtRoot();
     2389    if (numberObjects_)
     2390        doHeuristicsAtRoot();
    23782391    /*
    23792392      Grepping through the code, it would appear that this is a command line
Note: See TracChangeset for help on using the changeset viewer.