Changeset 1627 for stable/2.6


Ignore:
Timestamp:
Mar 26, 2011 11:13:57 AM (8 years ago)
Author:
tkr
Message:

Merging r1623 from trunk

Location:
stable/2.6/Cbc
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • stable/2.6/Cbc

  • stable/2.6/Cbc/src/CbcModel.cpp

    r1521 r1627  
    15701570{
    15711571    /*
    1572       Capture a time stamp before we start.
     1572      Capture a time stamp before we start (unless set).
    15731573    */
    1574     dblParam_[CbcStartSeconds] = CoinCpuTime();
     1574    if (!dblParam_[CbcStartSeconds]) {
     1575      if (!useElapsedTime())
     1576        dblParam_[CbcStartSeconds] = CoinCpuTime();
     1577      else
     1578        dblParam_[CbcStartSeconds] = CoinGetTimeOfDay();
     1579    }
    15751580    dblParam_[CbcSmallestChange] = COIN_DBL_MAX;
    15761581    dblParam_[CbcSumChange] = 0.0;
     
    59665971    bool sameProblem = false;
    59675972    if ((specialOptions_&4096) == 0) {
     5973#if 0
    59685974        {
    59695975            int n1 = numberRowsAtContinuous_;
     
    59755981            //printf("ROWS a %d - old thinks %d new %d\n",solver_->getNumRows(),n1,n2);
    59765982        }
     5983#endif
    59775984        int nDel = 0;
    59785985        int nAdd = 0;
     
    66816688            assert (jObject < numberObjects_ && iObject == jObject);
    66826689#else
    6683 #ifdef TIGHTEN_BOUNDS
     6690#ifdef CBCMODEL_TIGHTEN_BOUNDS
    66846691            int iColumn = simpleObject->columnNumber();
    66856692#endif
     
    66886695            // Care! We must be careful not to update the same variable in parallel threads.
    66896696            addUpdateInformation(update);
    6690             //#define TIGHTEN_BOUNDS
    6691 #ifdef TIGHTEN_BOUNDS
     6697            //#define CBCMODEL_TIGHTEN_BOUNDS
     6698#ifdef CBCMODEL_TIGHTEN_BOUNDS
    66926699            double cutoff = getCutoff() ;
    66936700            if (feasible && cutoff < 1.0e20) {
     
    73117318            if ( maximumSecondsReached() ) {
    73127319                numberTries = 0; // exit
     7320                feasible = false;
    73137321                break;
    73147322            }
     
    1216812176CbcModel::getCurrentSeconds() const
    1216912177{
    12170     return CoinCpuTime() - getDblParam(CbcStartSeconds);
     12178    if (!useElapsedTime())
     12179      return CoinCpuTime() - getDblParam(CbcStartSeconds);
     12180    else
     12181      return CoinGetTimeOfDay() - getDblParam(CbcStartSeconds);
    1217112182}
    1217212183/* Encapsulates choosing a variable -
  • stable/2.6/Cbc/src/CbcModel.hpp

    r1409 r1627  
    17331733        8192 slowly increase minimum drop
    17341734        16384 gomory
     1735        131072 Time limits elapsed
    17351736    */
    17361737    inline void setMoreSpecialOptions(int value) {
     
    17401741    inline int moreSpecialOptions() const {
    17411742        return moreSpecialOptions_;
     1743    }
     1744  /// Set time method
     1745    inline void setUseElapsedTime(bool yesNo) {
     1746        if (yesNo)
     1747          moreSpecialOptions_ |= 131072;
     1748        else
     1749          moreSpecialOptions_ &= ~131072;
     1750    }
     1751    /// Get time method
     1752    inline bool useElapsedTime() const {
     1753        return (moreSpecialOptions_&131072)!=0;
    17421754    }
    17431755    /// Go to dantzig pivot selection if easy problem (clp only)
     
    24322444    int specialOptions_;
    24332445    /** More special options
    2434         at present bottom 3 bits used for shadow price mode
     2446        at present bottom 6 bits used for shadow price mode
     2447        1024 for experimental hotstart
     2448        2048,4096 breaking out of cuts
     2449        8192 slowly increase minimum drop
     2450        16384 gomory
     2451        32768 more heuristics in sub trees
     2452        65536 no cuts in preprocessing
     2453        131072 Time limits elapsed
    24352454    */
    24362455    int moreSpecialOptions_;
  • stable/2.6/Cbc/src/CbcSolver.cpp

    r1615 r1627  
    11781178    }
    11791179    double time0;
     1180    double time0Elapsed = CoinGetTimeOfDay();
    11801181    {
    11811182        double time1 = CoinCpuTime(), time2;
     
    17271728                numberGoodCommands++;
    17281729                if (type == CBC_PARAM_ACTION_BAB && goodModel) {
     1730                  if (model_.useElapsedTime())
     1731                    model_.setDblParam(CbcModel::CbcStartSeconds, CoinGetTimeOfDay());
     1732                  else
     1733                    model_.setDblParam(CbcModel::CbcStartSeconds, CoinCpuTime());
    17291734                    // check if any integers
    17301735#ifndef CBC_OTHER_SOLVER
     
    22252230                            crossover = action;
    22262231                            break;
     2232                        case CLP_PARAM_STR_TIME_MODE:
     2233                            model_.setUseElapsedTime(action!=0);
     2234                            break;
    22272235                        case CBC_PARAM_STR_SOS:
    22282236                            doSOS = action;
     
    26652673                                           minor[iStatus2].c_str());
    26662674                                   sprintf(generalPrint + strlen(generalPrint),
    2667                                            "Enumerated nodes: 0\n");
     2675                                           "Enumerated nodes:           0\n");
    26682676                                   sprintf(generalPrint + strlen(generalPrint),
    2669                                            "Total iterations: 0\n");
     2677                                           "Total iterations:           0\n");
     2678#ifndef CBC_QUIET                                 
    26702679                                   sprintf(generalPrint + strlen(generalPrint),
    2671                                            "Time (seconds):   %.2f\n",
     2680                                           "Time (CPU seconds):         %.2f\n",
    26722681                                           CoinCpuTime() - time0);
     2682                                   sprintf(generalPrint + strlen(generalPrint),
     2683                                           "Time (Wallclock Seconds):   %.2f\n",
     2684                                           CoinGetTimeOfDay()-time0Elapsed);
     2685#endif
    26732686                                   generalMessageHandler->message(CLP_GENERAL, generalMessages)
    26742687                                      << generalPrint
     
    60486061                                    if (babModel_->bestSolution()){
    60496062                                      sprintf(generalPrint,
    6050                                               "Objective value:  %.8f\n",
     6063                                              "Objective value:                %.8f\n",
    60516064                                              babModel_->getObjValue());
    60526065                                    }else{
     
    60566069                                    if (iStat2 >= 2 && iStat2 <=6){
    60576070                                       sprintf(generalPrint + strlen(generalPrint),
    6058                                                "Lower bound:      %.3f\n",
     6071                                               "Lower bound:                    %.3f\n",
    60596072                                               babModel_->getBestPossibleObjValue());
    60606073                                       if (babModel_->bestSolution()){
    60616074                                          sprintf(generalPrint + strlen(generalPrint),
    6062                                                   "Gap:              %.2f\n",
     6075                                                  "Gap:                            %.2f\n",
    60636076                                                  (babModel_->getObjValue()-babModel_->getBestPossibleObjValue())/babModel_->getBestPossibleObjValue());
    60646077                                       }
    60656078                                    }
    60666079                                    sprintf(generalPrint + strlen(generalPrint),
    6067                                             "Enumerated nodes: %d\n",
     6080                                            "Enumerated nodes:               %d\n",
    60686081                                            babModel_->getNodeCount());
    60696082                                    sprintf(generalPrint + strlen(generalPrint),
    6070                                             "Total iterations: %d\n",
     6083                                            "Total iterations:               %d\n",
    60716084                                            babModel_->getIterationCount());
     6085#ifndef CBC_QUIET
    60726086                                    sprintf(generalPrint + strlen(generalPrint),
    6073                                             "Time (seconds):   %.2f\n",
     6087                                            "Time (CPU seconds):             %.2f\n",
    60746088                                            time2 - time1);
     6089#if 0                               
    60756090                                    sprintf(generalPrint + strlen(generalPrint),
    6076                                             "Total time:       %.2f\n",
     6091                                            "Total time (CPU seconds):       %.2f\n",
    60776092                                            time2 - time0);
     6093#endif
     6094                                    sprintf(generalPrint + strlen(generalPrint),
     6095                                            "Time (Wallclock seconds):       %.2f\n",
     6096                                            CoinGetTimeOfDay() - time0Elapsed);
     6097#endif
    60786098                                    generalMessageHandler->message(CLP_GENERAL, generalMessages)
    60796099                                       << generalPrint
Note: See TracChangeset for help on using the changeset viewer.