Ignore:
Timestamp:
Apr 19, 2009 10:08:30 AM (11 years ago)
Author:
forrest
Message:

changes to use heuristics with SOS etc

File:
1 edited

Legend:

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

    r1133 r1148  
    24102410  }
    24112411  int numberObjects = model->numberObjects();
    2412   bool checkFeasibility = numberObjects>model->numberIntegers();
     2412  bool checkFeasibility = false;
     2413  if (numberObjects>model->numberIntegers()) {
     2414    for (int i=model->numberIntegers();i<numberObjects;i++) {
     2415      OsiObject * object = model->modifiableObject(i);
     2416      CbcObject * obj = dynamic_cast <CbcObject *>(object) ;
     2417      if (!obj || !obj->optionalObject()) {
     2418        checkFeasibility=true;
     2419        break;
     2420      }
     2421    }
     2422  }
    24132423  if ((model->specialOptions()&128)!=0)
    24142424    checkFeasibility=false; // allow
     
    30843094            CbcSOS * sosObject =
    30853095              dynamic_cast <CbcSOS *>(object) ;
    3086             assert (sosObject);
    3087             gotDown=false;
    3088             numberThisDown = sosObject->numberTimesDown();
    3089             if (numberThisDown>=numberBeforeTrust)
     3096            if (sosObject) {
     3097              gotDown=false;
     3098              numberThisDown = sosObject->numberTimesDown();
     3099              if (numberThisDown>=numberBeforeTrust)
     3100                gotDown=true;
     3101              gotUp=false;
     3102              numberThisUp = sosObject->numberTimesUp();
     3103              if (numberThisUp>=numberBeforeTrust)
     3104                gotUp=true;
     3105            } else {
    30903106              gotDown=true;
    3091             gotUp=false;
    3092             numberThisUp = sosObject->numberTimesUp();
    3093             if (numberThisUp>=numberBeforeTrust)
     3107              numberThisDown=999999;
     3108              downGuess=1.0e20;
    30943109              gotUp=true;
     3110              numberThisUp=999999;
     3111              upGuess=1.0e20;
     3112              numberPassesLeft=0;
     3113            }
    30953114          }
    30963115          // Increase estimated degradation to solution
     
    32923311    int saveLimit=0;
    32933312    solver->getIntParam(OsiMaxNumIterationHotStart,saveLimit);
     3313    if (!numberPassesLeft)
     3314      skipAll=1;
    32943315    if (!skipAll) {
    32953316      ws = solver->getWarmStart();
Note: See TracChangeset for help on using the changeset viewer.