Ignore:
Timestamp:
Oct 30, 2009 8:45:20 AM (11 years ago)
Author:
forrest
Message:

modifications to heuristics and use of cuts

File:
1 edited

Legend:

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

    r1255 r1261  
    43644364      twomirGen.setAwayAtRoot(0.005);
    43654365      twomirGen.setAway(0.01);
     4366      //twomirGen.setMirScale(1,1);
     4367      //twomirGen.setTwomirScale(1,1);
     4368      //twomirGen.setAMax(2);
    43664369#else
    43674370      gomoryGen.setAwayAtRoot(0.01);
     
    47734776                  if (!noPrinting_) {
    47744777                    generalMessageHandler->message(CLP_GENERAL,generalMessages)
    4775                       <<"switching on dense factorization if small, and maybe fast fathoming"
     4778                      <<"switching on global root cuts for gomory and knapsack"
    47764779                      <<CoinMessageEol;
    47774780                    generalMessageHandler->message(CLP_GENERAL,generalMessages)
    4778                       <<"Gomory cuts using tolerance of 0.01 at root"
     4781                      <<"using OSL factorization"
    47794782                      <<CoinMessageEol;
    47804783                    generalMessageHandler->message(CLP_GENERAL,generalMessages)
    4781                       <<"Possible restart after 100 nodes if can fix many"
     4784                      <<"only 10 iterations for strong branching"
    47824785                      <<CoinMessageEol;
    47834786                    generalMessageHandler->message(CLP_GENERAL,generalMessages)
    4784                       <<"extra options - -diving C -diveopt 3 -rins on -tune 6 -probing on -passf 30!"
     4787                      <<"extra options - -rens on -extra4 24003 -passc 1000!"
    47854788                      <<CoinMessageEol;
    47864789                  }
    4787                   // try changing tolerance at root
    4788                   //gomoryGen.setAwayAtRoot(0.01);
    4789                   int iParam;
    4790                   iParam = whichParam(DIVEOPT,numberParameters_,parameters_);
    4791                   parameters_[iParam].setIntValue(3);
    4792                   iParam = whichParam(FPUMPITS,numberParameters_,parameters_);
    4793                   parameters_[iParam].setIntValue(30);
    4794                   iParam = whichParam(FPUMPTUNE,numberParameters_,parameters_);
    4795                   parameters_[iParam].setIntValue(1005043);
    4796                   initialPumpTune=1005043;
    4797                   iParam = whichParam(PROCESSTUNE,numberParameters_,parameters_);
    4798                   parameters_[iParam].setIntValue(6);
    4799                   tunePreProcess=6;
    4800                   iParam = whichParam(DIVINGC,numberParameters_,parameters_);
    4801                   parameters_[iParam].setCurrentOption("on");
    4802                   iParam = whichParam(RINS,numberParameters_,parameters_);
    4803                   parameters_[iParam].setCurrentOption("on");
    4804                   iParam = whichParam(PROBINGCUTS,numberParameters_,parameters_);
    4805                   parameters_[iParam].setCurrentOption("on");
    4806                   probingAction=1;
     4790                  parameters[whichParam(PROBINGCUTS,numberParameters,parameters)].setCurrentOption("forceOnStrong");
     4791                  probingAction=8;
     4792                  parameters_[whichParam(GOMORYCUTS,numberParameters_,parameters_)].setCurrentOption("onGlobal");
     4793                  gomoryAction=5;
     4794                  parameters_[whichParam(KNAPSACKCUTS,numberParameters_,parameters_)].setCurrentOption("onGlobal");
     4795                  knapsackAction=5;
     4796                  parameters_[whichParam(FACTORIZATION,numberParameters_,parameters_)].setCurrentOption("osl");
     4797                  lpSolver->factorization()->forceOtherFactorization(3);
     4798                  parameters_[whichParam(MAXHOTITS,numberParameters_,parameters_)].setIntValue(10);
     4799                  parameters[whichParam(CUTPASS,numberParameters,parameters)].setIntValue(1000);
     4800                  cutPass=1000;
     4801                  parameters[whichParam(EXTRA4,numberParameters,parameters)].setIntValue(24003);
     4802                  parameters[whichParam(RENS,numberParameters,parameters)].setCurrentOption("on");
    48074803                }
    48084804              } else if (parameters_[iParam].type()==STRATEGY) {
     
    56595655                extra[1] = parameters_[whichParam(EXTRA1,numberParameters_,parameters_)].intValue();
    56605656                if (parameters_[whichParam(EXPERIMENT,numberParameters_,
    5661                                            parameters_)].intValue()>=1&&
     5657                                           parameters_)].intValue()>=2&&
    56625658                    extra[1]==-1)
    56635659                  extra[1]=999998;
     
    67286724                  babModel_->setNumberBeforeTrust(10);
    67296725              }
    6730               int experimentFlag = parameters_[whichParam(EXPERIMENT,numberParameters_,
    6731                                                           parameters_)].intValue();
     6726              int experimentFlag = CoinMax(parameters_[whichParam(EXPERIMENT,numberParameters_,
     6727                                                                  parameters_)].intValue()-1,0);
    67326728              int strategyFlag = parameters_[whichParam(STRATEGY,numberParameters_,
    67336729                                                          parameters_)].intValue();
     
    67376733              int accuracyFlag[20];
    67386734              int numberGenerators=0;
    6739               int translate[]={-100,-1,-99,-98,1,-1098,-1099,1,1,1,-1};
     6735              int translate[]={-100,-1,-99,-98,1,-1098,-999,1,1,1,-1};
    67406736              if (probingAction) {
    67416737                int numberColumns=babModel_->solver()->getNumCols();
     
    69216917                else
    69226918                  babModel_->setMaximumCutPasses(cutPassInTree);
    6923               }
     6919              } else if (cutPass!=-1234567) {
     6920                babModel_->setMaximumCutPassesAtRoot(cutPass);
     6921              }
    69246922              // Do more strong branching if small
    69256923              //if (babModel_->getNumCols()<5000)
     
    70567054                  int method = extra4 % 100;
    70577055                  extra4 /=100;
    7058                   extra4 = strategy + method*8 + extra4*8*32;
     7056                  extra4 = strategy + method*8 + extra4*1024;
    70597057                  babModel_->setMoreSpecialOptions(extra4);
    70607058                }
     
    83208318                stuff[6]=parameters_[whichParam(EXTRA3,numberParameters_,parameters_)].intValue();
    83218319                stuff[7]=parameters_[whichParam(DEPTHMINIBAB,numberParameters_,parameters_)].intValue();
    8322                 stuff[8]=parameters_[whichParam(EXPERIMENT,numberParameters_,parameters_)].intValue();
    83238320                stuff[8]=bothFlags;
    83248321                stuff[9]=doVector;
Note: See TracChangeset for help on using the changeset viewer.