Changeset 179


Ignore:
Timestamp:
Oct 5, 2005 1:27:37 PM (14 years ago)
Author:
forrest
Message:

add heuristics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Test/CoinSolve.cpp

    r170 r179  
    6565#include "CbcModel.hpp"
    6666#include "CbcHeuristic.hpp"
     67#include "CbcHeuristicLocal.hpp"
     68#include "CbcHeuristicGreedy.hpp"
     69#include "CbcHeuristicFPump.hpp"
    6770#include "CbcCompareActual.hpp"
    6871#include  "CbcOrClpParam.hpp"
     
    177180    parameters[whichParam(RESTORE,numberParameters,parameters)].setStringValue(restoreFile);
    178181    parameters[whichParam(SAVE,numberParameters,parameters)].setStringValue(saveFile);
    179     parameters[whichParam(TIMELIMIT,numberParameters,parameters)].setDoubleValue(1.0e8);
     182    //parameters[whichParam(TIMELIMIT,numberParameters,parameters)].setDoubleValue(1.0e8);
    180183    parameters[whichParam(TIMELIMIT_BAB,numberParameters,parameters)].setDoubleValue(1.0e8);
    181184    parameters[whichParam(SOLUTION,numberParameters,parameters)].setStringValue(solutionFile);
     
    250253    bool useRounding=true;
    251254    parameters[whichParam(ROUNDING,numberParameters,parameters)].setCurrentOption("on");
     255    int useFpump=0;
     256    bool useGreedy=false;
     257    bool useLocal=false;
    252258   
    253259    // total number of commands read
     
    461467              else if (parameters[iParam].type()==PRINTOPTIONS)
    462468                printOptions = value;
     469              else if (parameters[iParam].type()==FPUMPITS)
     470                { useFpump = value;parameters[iParam].setIntValue(value);}
    463471              else
    464472                parameters[iParam].setIntParameter(lpSolver,value);
     
    638646              defaultSettings=false; // user knows what she is doing
    639647              useRounding = action;
     648              break;
     649            case FPUMP:
     650              defaultSettings=false; // user knows what she is doing
     651              if (action&&useFpump==0)
     652                useFpump=parameters[whichParam(FPUMPITS,numberParameters,parameters)].intValue();
     653              else if (!action)
     654                useFpump=0;
     655              break;
     656            case GREEDY:
     657              defaultSettings=false; // user knows what she is doing
     658              useGreedy = action;
     659              break;
     660            case LOCAL:
     661              defaultSettings=false; // user knows what she is doing
     662              useLocal = action;
    640663              break;
    641664            case COSTSTRATEGY:
     
    914937              if (useRounding)
    915938                model.addHeuristic(&heuristic1) ;
     939              CbcHeuristicLocal heuristic2(model);
     940              heuristic2.setSearchType(1);
     941              if (useLocal)
     942                model.addHeuristic(&heuristic2);
     943              CbcHeuristicGreedyCover heuristic3(model);
     944              CbcHeuristicGreedyEquality heuristic3a(model);
     945              if (useGreedy) {
     946                model.addHeuristic(&heuristic3);
     947                model.addHeuristic(&heuristic3a);
     948              }
     949              CbcHeuristicFPump heuristic4(model);
     950              if (useFpump) {
     951                heuristic4.setMaximumPasses(useFpump);
     952                model.addHeuristic(&heuristic4);
     953              }
    916954              // add cut generators if wanted
    917955              if (probingAction==1)
Note: See TracChangeset for help on using the changeset viewer.