Changeset 2087 for trunk/Cbc


Ignore:
Timestamp:
Sep 30, 2014 4:19:09 AM (5 years ago)
Author:
forrest
Message:

fix multiple solver conflict abort

File:
1 edited

Legend:

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

    r2081 r2087  
    15951595
    15961596{
    1597   if (!parentModel_)
    1598     /*
    1599       Capture a time stamp before we start (unless set).
    1600     */
    1601     if (!dblParam_[CbcStartSeconds]) {
    1602       if (!useElapsedTime())
    1603         dblParam_[CbcStartSeconds] = CoinCpuTime();
    1604       else
    1605         dblParam_[CbcStartSeconds] = CoinGetTimeOfDay();
     1597    if (!parentModel_) {
     1598      /*
     1599        Capture a time stamp before we start (unless set).
     1600      */
     1601      if (!dblParam_[CbcStartSeconds]) {
     1602        if (!useElapsedTime())
     1603          dblParam_[CbcStartSeconds] = CoinCpuTime();
     1604        else
     1605          dblParam_[CbcStartSeconds] = CoinGetTimeOfDay();
     1606      }
    16061607    }
    16071608    dblParam_[CbcSmallestChange] = COIN_DBL_MAX;
     
    23012302      }
    23022303      if ((moreSpecialOptions2_&(128|256))==(128|256)) {
    2303         moreSpecialOptions2_ &= ~128;
     2304        //moreSpecialOptions2_ &= ~256;
    23042305      }
    23052306    }
     
    28762877                  //rowCut.addCuts(globalCuts_);
    28772878                  int nTightened=0;
    2878                   bool feasible=true;
     2879                  assert(feasible);
    28792880                  {
    28802881                    double tolerance=1.0e-5;
     
    28822883                    const double * upper = solver_->getColUpper();
    28832884                    for (int i=0;i<numberColumns;i++) {
    2884                       if (tightBounds[2*i+0]>tightBounds[2*i+1]) {
     2885                      if (tightBounds[2*i+0]>tightBounds[2*i+1]+1.0e-9) {
    28852886                        feasible=false;
    2886                         printf("Bad bounds on %d %g,%g was %g,%g\n",
    2887                                i,tightBounds[2*i+0],tightBounds[2*i+1],
    2888                                lower[i],upper[i]);
     2887                        char general[200];
     2888                        sprintf(general,"Solvers give infeasible bounds on %d %g,%g was %g,%g - search finished\n",
     2889                               i,tightBounds[2*i+0],tightBounds[2*i+1],lower[i],upper[i]);
     2890                        messageHandler()->message(CBC_GENERAL,messages())
     2891                          << general << CoinMessageEol ;
     2892                        break;
    28892893                      }
    2890                       //int k=0;
    28912894                      double oldLower=lower[i];
    28922895                      double oldUpper=upper[i];
    28932896                      if (tightBounds[2*i+0]>oldLower+tolerance) {
    28942897                        nTightened++;
    2895                         //k++;
    28962898                        solver_->setColLower(i,tightBounds[2*i+0]);
    28972899                      }
    28982900                      if (tightBounds[2*i+1]<oldUpper-tolerance) {
    28992901                        nTightened++;
    2900                         //k++;
    29012902                        solver_->setColUpper(i,tightBounds[2*i+1]);
    29022903                      }
    2903                       //if (k)
    2904                       //printf("new bounds on %d %g,%g was %g,%g\n",
    2905                       //       i,tightBounds[2*i+0],tightBounds[2*i+1],
    2906                       //       oldLower,oldUpper);
    29072904                    }
    2908                     if (!feasible)
    2909                       abort(); // deal with later
    29102905                  }
    29112906                  delete [] tightBounds;
     
    30133008                  }
    30143009                }
    3015                 feasible = solveWithCuts(cuts, maximumCutPassesAtRoot_,
     3010                if (feasible)
     3011                  feasible = solveWithCuts(cuts, maximumCutPassesAtRoot_,
    30163012                                         NULL);
    30173013                if (multipleRootTries_&&
     
    1466614662                worthTrying=true;
    1466714663              }
     14664              if ((moreSpecialOptions2_&(128|256))==(128|256)&&currentDepth_>5)
     14665                worthTrying=false;
    1466814666              if (worthTrying) {
    1466914667                int n=symmetryInfo_->orbitalFixing(solver_);
     
    1891918917  return cut;
    1892018918}
    18921 
Note: See TracChangeset for help on using the changeset viewer.