source: branches/devel/Bonmin/src/CbcBonmin/BonCbcParam.hpp @ 99

Last change on this file since 99 was 99, checked in by pbonami, 13 years ago

Add option to choose branching strategy,
include cmath in BonCurvatureEstimator?

  • Property svn:eol-style set to native
  • Property svn:keywords set to "Author Date Id Revision"
File size: 4.7 KB
Line 
1// (C) Copyright International Business Machines Corporation and Carnegie Mellon University 2006
2// All Rights Reserved.
3// This code is published under the Common Public License.
4//
5// Authors :
6// Laszlo Ladanyi, International Business Machines Corporation
7// Pierre Bonami, Carnegie Mellon University,
8//
9// Date : 03/15/2006
10
11#ifndef BonminCbcParam_H
12#define BonminCbcParam_H
13
14#include "BonOsiTMINLPInterface.hpp"
15namespace Bonmin
16{
17  class BonminCbcParam
18  {
19  public:
20    /** Algorithm type
21        <ul>
22        <li> 0 "B-BB"
23        <li> 1 "B-OA"
24        <li> 2 "B-QG"
25        <li> 3 "B-Hyb"
26        </ul>
27    */
28    int algo;
29    /** log level for the branch-and-bound */
30    int bbLogLevel;
31    /** Display information every logIntervval nodes.*/
32    int logInterval;
33    /** log level for the continuous subsolver */
34    int lpLogLevel;
35    /** log level for milp sub-solver in OA. */
36    int milpLogLevel;
37    /** log level for OA decomposition */
38    int oaLogLevel;
39    /** log frequency for OA */
40    double oaLogFrequency;
41    /** log level for the nlp subsolver interface (different from ipopt
42        log and log level which should be set with print_level).*/
43    int nlpLogLevel;
44    /** Max number of failures in a branch.*/
45    int maxFailures;
46    /** Behavior of the algorithm in the case of a failure.*/
47    int failureBehavior;
48    /** Max number of consecutive infeasible problem in a branch
49        before fathoming.*/
50    int maxInfeasible;
51    /** Amount by which cutoff is incremented */
52    double cutoffDecr;
53    /** cutoff value */
54    double cutoff;
55    /** Stop if absolute gap is less than :*/
56    double allowableGap;
57    /** Stop if relative gap is less than :*/
58    double allowableFractionGap;
59    /** Node selection strategy :
60        <ul>
61        <li> 0: best bound,
62        <li> 1: DFS,
63        <li> 2: BFS,
64        <li> 3: dynamic (see
65        <a href="http://www.coin-or.org/Doxygen/Cbc/class_cbc_branch_dynamic_decision.html">
66        CbcBranchActual.hpp </a>
67        </ul>
68    */
69    int nodeSelection;
70    /** Variable selection strategy :
71        <ul>
72        <li> 0: most fractional,
73        <li> 1: strong branching,
74        <li> 2: reliability branching,
75        <li> 3: Curvature estimation.
76        </ul>
77    */
78    int varSelection;
79    /** Number of candidates for strong branching.*/
80    int numberStrong;
81    /** Minimum reliability before trust pseudo-costs.*/
82    int minReliability;
83    /** Global time limit. */
84    double maxTime;
85    /** Global node limit.*/
86    int maxNodes;
87    /** Integer tolerance.*/
88    double intTol;
89    /** Conssider or not SOS constraints.*/
90    int disableSos;
91    /** frequency to solve nlp's in B-Hyb.*/
92    int nlpSolveFrequency;
93    /** Max OA decomposition time in B-Hyb.*/
94    double oaDecMaxTime;
95    /** milp subsolver:
96        <ul>
97        <li> 0 Cbc with defaults,
98        <li> 1 Cbc with passed parameters,
99        <li> 2 Cplex.
100        </ul>
101    */
102    int milpSubSolver;
103    /** Mig cuts generation frequency.*/
104    int migFreq;
105    /** Probing cuts generation frequency.*/
106    int probFreq;
107    /** Mir cuts generation frequency.*/
108    int mirFreq;
109    /** Cover cuts generation frequency.*/
110    int coverFreq;
111
112    /** (only set if milpSubSolver is 1) milpsubsolver
113        Node selection strategy :
114        <ul>
115        <li> 0: best boud,
116        <li> 1: DFS,
117        <li> 2: BFS,
118        <li> 3: dynamic (see
119        <a href="http://www.coin-or.org/Doxygen/Cbc/class_cbc_branch_dynamic_decision.html">
120        CbcBranchActual.hpp </a>
121        </ul>
122    */
123    int milpSubSolver_nodeSelection;
124    /** (only set if milpSubSolver is 1) milpsubsolver
125        Number of candidates for strong branching.*/
126    int milpSubSolver_numberStrong;
127    /** (only set if milpSubSolver is 1) milpsubsolver
128        Minimum reliability before trust pseudo-costs.*/
129    int milpSubSolver_minReliability;
130    /** (only set if milpSubSolver is 1) milpsubsolver Mig cuts generation frequency.*/
131    int milpSubSolver_migFreq;
132    /** (only set if milpSubSolver is 1) milpsubsolver Probing cuts generation frequency.*/
133    int milpSubSolver_probFreq;
134    /** (only set if milpSubSolver is 1) milpsubsolver Mir cuts generation frequency.*/
135    int milpSubSolver_mirFreq;
136    /** (only set if milpSubSolver is 1) milpsubsolver Cover cuts generation frequency.*/
137    int milpSubSolver_coverFreq;
138
139  public:
140    /** Empty constructor. */
141    BonminCbcParam()
142    {}
143    /** Destructor.*/
144    ~BonminCbcParam()
145    {}
146    ///Process parameter file and extract MIP options.
147    bool extractParams(OsiTMINLPInterface * solver);
148    ///operator() will extractParameters from IpoptInterface.
149    bool operator()(OsiTMINLPInterface * solver)
150    {
151      return extractParams(solver);
152    }
153  };
154} //end namespace Bonmin
155#endif
156
Note: See TracBrowser for help on using the repository browser.