Ignore:
Timestamp:
Aug 31, 2011 3:16:19 AM (8 years ago)
Author:
forrest
Message:

allow relative gap > 100%

File:
1 edited

Legend:

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

    r1682 r1717  
    24152415    // See if can stop on gap
    24162416    bestPossibleObjective_ = solver_->getObjValue() * solver_->getObjSense();
    2417     double testGap = CoinMax(dblParam_[CbcAllowableGap],
    2418                              CoinMax(fabs(bestObjective_), fabs(bestPossibleObjective_))
    2419                              * dblParam_[CbcAllowableFractionGap]);
    2420     if (bestObjective_ - bestPossibleObjective_ < testGap && getCutoffIncrement() >= 0.0) {
     2417    if(canStopOnGap()) {
    24212418        if (bestPossibleObjective_ < getCutoff())
    24222419            stoppedOnGap_ = true ;
     
    25962593    // See if can stop on gap
    25972594    bestPossibleObjective_ = solver_->getObjValue() * solver_->getObjSense();
    2598     testGap = CoinMax(dblParam_[CbcAllowableGap],
    2599                       CoinMax(fabs(bestObjective_), fabs(bestPossibleObjective_))
    2600                       * dblParam_[CbcAllowableFractionGap]);
    2601     if (bestObjective_ - bestPossibleObjective_ < testGap && getCutoffIncrement() >= 0.0) {
     2595    if(canStopOnGap()) {
    26022596        if (bestPossibleObjective_ < getCutoff())
    26032597            stoppedOnGap_ = true ;
     
    37703764        }
    37713765        // See if can stop on gap
    3772         double testGap = CoinMax(dblParam_[CbcAllowableGap],
    3773                                  CoinMax(fabs(bestObjective_), fabs(bestPossibleObjective_))
    3774                                  * dblParam_[CbcAllowableFractionGap]);
    3775         if (bestObjective_ - bestPossibleObjective_ < testGap && getCutoffIncrement() >= 0.0) {
     3766        if(canStopOnGap()) {
    37763767            stoppedOnGap_ = true ;
    37773768        }
     
    1491514906    return doCuts;
    1491614907}
     14908// See if can stop on gap
     14909bool
     14910CbcModel::canStopOnGap() const
     14911{
     14912  bool returnCode=false;
     14913  if (bestObjective_<1.0e50) {
     14914    double testGap = CoinMax(dblParam_[CbcAllowableGap],
     14915                             CoinMax(fabs(bestObjective_), fabs(bestPossibleObjective_))
     14916                             * dblParam_[CbcAllowableFractionGap]);
     14917    returnCode = (bestObjective_ - bestPossibleObjective_ < testGap && getCutoffIncrement() >= 0.0);
     14918  }
     14919  return returnCode;
     14920}
    1491714921// Adjust heuristics based on model
    1491814922void
Note: See TracChangeset for help on using the changeset viewer.