Changeset 1623 for trunk/Cbc/src


Ignore:
Timestamp:
Mar 25, 2011 3:05:04 PM (9 years ago)
Author:
forrest
Message:

allow for elapsed time on unix

Location:
trunk/Cbc/src
Files:
3 edited

Legend:

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

    r1621 r1623  
    15721572{
    15731573    /*
    1574       Capture a time stamp before we start.
     1574      Capture a time stamp before we start (unless set).
    15751575    */
    1576     dblParam_[CbcStartSeconds] = CoinGetTimeOfDay();
     1576    if (!dblParam_[CbcStartSeconds]) {
     1577      if (!useElapsedTime())
     1578        dblParam_[CbcStartSeconds] = CoinCpuTime();
     1579      else
     1580        dblParam_[CbcStartSeconds] = CoinGetTimeOfDay();
     1581    }
    15771582    dblParam_[CbcSmallestChange] = COIN_DBL_MAX;
    15781583    dblParam_[CbcSumChange] = 0.0;
     
    59725977    bool sameProblem = false;
    59735978    if ((specialOptions_&4096) == 0) {
     5979#if 0
    59745980        {
    59755981            int n1 = numberRowsAtContinuous_;
     
    59815987            //printf("ROWS a %d - old thinks %d new %d\n",solver_->getNumRows(),n1,n2);
    59825988        }
     5989#endif
    59835990        int nDel = 0;
    59845991        int nAdd = 0;
     
    66876694            assert (jObject < numberObjects_ && iObject == jObject);
    66886695#else
    6689 #ifdef TIGHTEN_BOUNDS
     6696#ifdef CBCMODEL_TIGHTEN_BOUNDS
    66906697            int iColumn = simpleObject->columnNumber();
    66916698#endif
     
    66946701            // Care! We must be careful not to update the same variable in parallel threads.
    66956702            addUpdateInformation(update);
    6696             //#define TIGHTEN_BOUNDS
    6697 #ifdef TIGHTEN_BOUNDS
     6703            //#define CBCMODEL_TIGHTEN_BOUNDS
     6704#ifdef CBCMODEL_TIGHTEN_BOUNDS
    66986705            double cutoff = getCutoff() ;
    66996706            if (feasible && cutoff < 1.0e20) {
     
    73177324            if ( maximumSecondsReached() ) {
    73187325                numberTries = 0; // exit
     7326                feasible = false;
    73197327                break;
    73207328            }
     
    1218512193CbcModel::getCurrentSeconds() const
    1218612194{
    12187     return CoinGetTimeOfDay() - getDblParam(CbcStartSeconds);
     12195    if (!useElapsedTime())
     12196      return CoinCpuTime() - getDblParam(CbcStartSeconds);
     12197    else
     12198      return CoinGetTimeOfDay() - getDblParam(CbcStartSeconds);
    1218812199}
    1218912200/* Encapsulates choosing a variable -
  • trunk/Cbc/src/CbcModel.hpp

    r1585 r1623  
    17371737        32768 more heuristics in sub trees
    17381738        65536 no cuts in preprocessing
     1739        131072 Time limits elapsed
    17391740    */
    17401741    inline void setMoreSpecialOptions(int value) {
     
    17441745    inline int moreSpecialOptions() const {
    17451746        return moreSpecialOptions_;
     1747    }
     1748  /// Set time method
     1749    inline void setUseElapsedTime(bool yesNo) {
     1750        if (yesNo)
     1751          moreSpecialOptions_ |= 131072;
     1752        else
     1753          moreSpecialOptions_ &= ~131072;
     1754    }
     1755    /// Get time method
     1756    inline bool useElapsedTime() const {
     1757        return (moreSpecialOptions_&131072)!=0;
    17461758    }
    17471759    /// Go to dantzig pivot selection if easy problem (clp only)
     
    24362448    int specialOptions_;
    24372449    /** More special options
    2438         at present bottom 3 bits used for shadow price mode
     2450        at present bottom 6 bits used for shadow price mode
     2451        1024 for experimental hotstart
     2452        2048,4096 breaking out of cuts
     2453        8192 slowly increase minimum drop
     2454        16384 gomory
     2455        32768 more heuristics in sub trees
     2456        65536 no cuts in preprocessing
     2457        131072 Time limits elapsed
    24392458    */
    24402459    int moreSpecialOptions_;
  • trunk/Cbc/src/CbcSolver.cpp

    r1622 r1623  
    11931193    }
    11941194    double time0;
     1195    double time0Elapsed = CoinGetTimeOfDay();
    11951196    {
    11961197        double time1 = CoinCpuTime(), time2;
     
    17461747                numberGoodCommands++;
    17471748                if (type == CBC_PARAM_ACTION_BAB && goodModel) {
     1749                  if (model_.useElapsedTime())
    17481750                    model_.setDblParam(CbcModel::CbcStartSeconds, CoinGetTimeOfDay());
     1751                  else
     1752                    model_.setDblParam(CbcModel::CbcStartSeconds, CoinCpuTime());
    17491753                    // check if any integers
    17501754#ifndef CBC_OTHER_SOLVER
     
    22452249                            crossover = action;
    22462250                            break;
     2251                        case CLP_PARAM_STR_TIME_MODE:
     2252                            model_.setUseElapsedTime(action!=0);
     2253                            break;
    22472254                        case CBC_PARAM_STR_SOS:
    22482255                            doSOS = action;
     
    26942701                                   sprintf(generalPrint + strlen(generalPrint),
    26952702                                           "Time (Wallclock Seconds):   %.2f\n",
    2696                                            model_.getCurrentSeconds());
     2703                                           CoinGetTimeOfDay()-time0Elapsed);
    26972704#endif
    26982705                                   generalMessageHandler->message(CLP_GENERAL, generalMessages)
Note: See TracChangeset for help on using the changeset viewer.