Ignore:
Timestamp:
Aug 2, 2013 10:26:23 AM (6 years ago)
Author:
forrest
Message:

changes to fix bug on max nodes

File:
1 edited

Legend:

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

    r1943 r1951  
    621621    for (j = nNodes - 1; j >= kDelete; j--) {
    622622        CbcNode * node = nodeArray[j];
    623         CoinWarmStartBasis *lastws = model->getEmptyBasis() ;
     623        CoinWarmStartBasis *lastws = (cutoff!=-COIN_DBL_MAX) ? model->getEmptyBasis() : NULL;
    624624
    625625        model->addCuts1(node, lastws);
     
    628628        //assert (node->nodeInfo());
    629629        int numberLeft = (node->nodeInfo()) ? node->nodeInfo()->numberBranchesLeft() : 0;
    630         int i;
    631         for (i = 0; i < model->currentNumberCuts(); i++) {
     630        if (cutoff != -COIN_DBL_MAX) {
     631          // normal
     632          for (int i = 0; i < model->currentNumberCuts(); i++) {
    632633            // take off node
    633634            CoinWarmStartBasis::Status status =
     
    638639                    delete model->addedCuts()[i];
    639640            }
    640         }
     641          }
     642        } else {
     643          // quick
     644          for (int i = 0; i < model->currentNumberCuts(); i++) {
     645            // take off node
     646            if (model->addedCuts()[i]) {
     647                if (!model->addedCuts()[i]->decrement(numberLeft))
     648                    delete model->addedCuts()[i];
     649            }
     650          }
     651        }
    641652        // node should not have anything pointing to it
    642653        if (node->nodeInfo())
Note: See TracChangeset for help on using the changeset viewer.