BCP_tm_param.cpp
Go to the documentation of this file.
1 // Copyright (C) 2000, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 
4 #include "BCP_math.hpp"
5 #include "BCP_tm_param.hpp"
6 #include "BCP_parameters.hpp"
7 
8 #include "BCP_enum.hpp"
9 #include "BCP_enum_tm.hpp"
10 
11 using std::make_pair;
12 
13 template <>
15  // Create the list of keywords for parameter file reading
16  //-------------------------------------------------------------------------
17  // CharPar
18  keys.push_back(make_pair(BCP_string("BCP_DebugLpProcesses"),
20  DebugLpProcesses)));
21  keys.push_back(make_pair(BCP_string("BCP_DebugCgProcesses"),
23  DebugCgProcesses)));
24  keys.push_back(make_pair(BCP_string("BCP_DebugVgProcesses"),
26  DebugVgProcesses)));
27  keys.push_back(make_pair(BCP_string("BCP_DebugCpProcesses"),
29  DebugCpProcesses)));
30  keys.push_back(make_pair(BCP_string("BCP_DebugVpProcesses"),
32  DebugVpProcesses)));
33  keys.push_back(make_pair(BCP_string("BCP_GenerateVars"),
35  GenerateVars)));
36  keys.push_back(make_pair(BCP_string("BCP_ReportWhenDefaultIsExecuted"),
38  ReportWhenDefaultIsExecuted)));
39  keys.push_back(make_pair(BCP_string("BCP_TrimTreeBeforeNewPhase"),
41  TrimTreeBeforeNewPhase)));
42  keys.push_back(make_pair(BCP_string("BCP_RemoveExploredBranches"),
44  RemoveExploredBranches)));
45 
46  //-------------------------------------------------------------------------
47  keys.push_back(make_pair(BCP_string("BCP_VerbosityShutUp"),
49  VerbosityShutUp)));
50  keys.push_back(make_pair(BCP_string("BCP_TmVerb_AllFeasibleSolutionValue"),
52  TmVerb_AllFeasibleSolutionValue)));
53  keys.push_back(make_pair(BCP_string("BCP_TmVerb_AllFeasibleSolution"),
55  TmVerb_AllFeasibleSolution)));
56  keys.push_back(make_pair(BCP_string("BCP_TmVerb_BetterFeasibleSolutionValue"),
58  TmVerb_BetterFeasibleSolutionValue)));
59  keys.push_back(make_pair(BCP_string("BCP_TmVerb_BetterFeasibleSolution"),
61  TmVerb_BetterFeasibleSolution)));
62  keys.push_back(make_pair(BCP_string("BCP_TmVerb_BestFeasibleSolution"),
64  TmVerb_BestFeasibleSolution)));
65  keys.push_back(make_pair(BCP_string("BCP_TmVerb_NewPhaseStart"),
67  TmVerb_NewPhaseStart)));
68  keys.push_back(make_pair(BCP_string("BCP_TmVerb_PrunedNodeInfo"),
70  TmVerb_PrunedNodeInfo)));
71  keys.push_back(make_pair(BCP_string("BCP_TmVerb_TimeOfImprovingSolution"),
73  TmVerb_TimeOfImprovingSolution)));
74  keys.push_back(make_pair(BCP_string("BCP_TmVerb_TrimmedNum"),
76  TmVerb_TrimmedNum)));
77  keys.push_back(make_pair(BCP_string("BCP_TmVerb_FinalStatistics"),
79  TmVerb_FinalStatistics)));
80  keys.push_back(make_pair(BCP_string("BCP_TmVerb_ReportDefault"),
82  TmVerb_ReportDefault)));
83 
84  // keys.push_back(make_pair(BCP_string("BCP_"),
85  // BCP_parameter(BCP_CharPar,
86  // )));
87 
88  //-------------------------------------------------------------------------
89  // IntPar
90  keys.push_back(make_pair(BCP_string("BCP_WarmstartInfo"),
92  WarmstartInfo)));
93  keys.push_back(make_pair(BCP_string("BCP_MaxHeapSize"),
95  MaxHeapSize)));
96  keys.push_back(make_pair(BCP_string("BCP_TmVerb_SingleLineInfoFrequency"),
98  TmVerb_SingleLineInfoFrequency)));
99  keys.push_back(make_pair(BCP_string("BCP_TreeSearchStrategy"),
101  TreeSearchStrategy)));
102  keys.push_back(make_pair(BCP_string("BCP_NiceLevel"),
104  NiceLevel)));
105  keys.push_back(make_pair(BCP_string("BCP_LpProcessNum"),
107  LpProcessNum)));
108  keys.push_back(make_pair(BCP_string("BCP_CgProcessNum"),
110  CgProcessNum)));
111  keys.push_back(make_pair(BCP_string("BCP_CpProcessNum"),
113  CpProcessNum)));
114  keys.push_back(make_pair(BCP_string("BCP_VgProcessNum"),
116  VgProcessNum)));
117  keys.push_back(make_pair(BCP_string("BCP_VpProcessNum"),
119  VpProcessNum)));
120  keys.push_back(make_pair(BCP_string("BCP_TmTimeout"),
122  TmTimeout)));
123  keys.push_back(make_pair(BCP_string("BCP_LPscheduler_MaxNodeIdNum"),
125  LPscheduler_MaxNodeIdNum)));
126  keys.push_back(make_pair(BCP_string("BCP_LPscheduler_MaxSbIdNum"),
128  LPscheduler_MaxSbIdNum)));
129  keys.push_back(make_pair(BCP_string("BCP_LPscheduler_MinSbIdNum"),
131  LPscheduler_MinSbIdNum)));
132  // keys.push_back(make_pair(BCP_string("BCP_"),
133  // BCP_parameter(BCP_IntPar,
134  // )));
135 
136  //-------------------------------------------------------------------------
137  // DoublePar
138  keys.push_back(make_pair(BCP_string("BCP_UnconditionalDiveProbability"),
140  UnconditionalDiveProbability)));
141  keys.push_back(make_pair(BCP_string("BCP_QualityRatioToAllowDiving_HasUB"),
143  QualityRatioToAllowDiving_HasUB)));
144  keys.push_back(make_pair(BCP_string("BCP_QualityRatioToAllowDiving_NoUB"),
146  QualityRatioToAllowDiving_NoUB)));
147  keys.push_back(make_pair(BCP_string("BCP_Granularity"),
149  Granularity)));
150  keys.push_back(make_pair(BCP_string("BCP_MaxRunTime"),
152  MaxRunTime)));
153  keys.push_back(make_pair(BCP_string("BCP_UpperBound"),
155  UpperBound)));
156  keys.push_back(make_pair(BCP_string("BCP_TerminationGap_Absolute"),
158  TerminationGap_Absolute)));
159  keys.push_back(make_pair(BCP_string("BCP_TerminationGap_Relative"),
161  TerminationGap_Relative)));
162  keys.push_back(make_pair(BCP_string("BCP_LPscheduler_OverEstimationStatic"),
164  LPscheduler_OverEstimationStatic)));
165  keys.push_back(make_pair(BCP_string("BCP_LPscheduler_SwitchToRateThreshold"),
167  LPscheduler_SwitchToRateThreshold)));
168  keys.push_back(make_pair(BCP_string("BCP_LPscheduler_FactorTimeHorizon"),
170  LPscheduler_FactorTimeHorizon)));
171  keys.push_back(make_pair(BCP_string("BCP_LPscheduler_OverEstimationRate"),
173  LPscheduler_OverEstimationRate)));
174  keys.push_back(make_pair(BCP_string("BCP_LPscheduler_MaxNodeIdRatio"),
176  LPscheduler_MaxNodeIdRatio)));
177  // keys.push_back(make_pair(BCP_string("BCP_"),
178  // BCP_parameter(BCP_DoublePar,
179  // )));
180 
181  //-------------------------------------------------------------------------
182  // StringPar
183  keys.push_back(make_pair(BCP_string("BCP_ReadRootCutsFrom"),
185  ReadRootCutsFrom)));
186  keys.push_back(make_pair(BCP_string("BCP_SaveRootCutsTo"),
188  SaveRootCutsTo)));
189  keys.push_back(make_pair(BCP_string("BCP_ExecutableName"),
191  ExecutableName)));
192  keys.push_back(make_pair(BCP_string("BCP_LogFileName"),
194  LogFileName)));
195  // keys.push_back(make_pair(BCP_string("BCP_"),
196  // BCP_parameter(BCP_StringPar,
197  // )));
198 
199  //-------------------------------------------------------------------------
200  // StringArrayPar
201  keys.push_back(make_pair(BCP_string("BCP_LpMachine"),
203  LpMachines)));
204  keys.push_back(make_pair(BCP_string("BCP_CgMachine"),
206  CgMachines)));
207  keys.push_back(make_pair(BCP_string("BCP_VgMachine"),
209  VgMachines)));
210  keys.push_back(make_pair(BCP_string("BCP_CpMachine"),
212  CpMachines)));
213  keys.push_back(make_pair(BCP_string("BCP_VpMachine"),
215  VpMachines)));
216  // keys.push_back(make_pair(BCP_string("BCP_"),
217  // BCP_parameter(BCP_StringArrayPar,
218  // )));
219 }
220 
221 //#############################################################################
222 
223 template <>
225  //-------------------------------------------------------------------------
226  // CharPar
227  set_entry(DebugLpProcesses, false);
228  set_entry(DebugCgProcesses, false);
229  set_entry(DebugVgProcesses, false);
230  set_entry(DebugCpProcesses, false);
231  set_entry(DebugVpProcesses, false);
232  set_entry(GenerateVars, false);
233  set_entry(MessagePassingIsSerial, false);
234  set_entry(ReportWhenDefaultIsExecuted, true);
235  set_entry(TrimTreeBeforeNewPhase, false);
236  set_entry(RemoveExploredBranches, false);
237  //-------------------------------------------------------------------------
238  set_entry(VerbosityShutUp, false);
239  set_entry(TmVerb_AllFeasibleSolutionValue, true);
240  set_entry(TmVerb_AllFeasibleSolution, false);
241  set_entry(TmVerb_BetterFeasibleSolutionValue, true);
242  set_entry(TmVerb_BetterFeasibleSolution, false);
243  set_entry(TmVerb_BestFeasibleSolution, true);
244  set_entry(TmVerb_NewPhaseStart, true);
245  set_entry(TmVerb_TrimmedNum, true);
246  set_entry(TmVerb_TimeOfImprovingSolution, true);
247  set_entry(TmVerb_PrunedNodeInfo, true);
248  set_entry(TmVerb_FinalStatistics, true);
249  set_entry(TmVerb_ReportDefault, true);
250  //-------------------------------------------------------------------------
251  // IntPar
252  set_entry(WarmstartInfo, BCP_WarmstartParent);
253  set_entry(MaxHeapSize, -1);
254  set_entry(TmVerb_SingleLineInfoFrequency, 0);
255  set_entry(TreeSearchStrategy, BCP_BestFirstSearch);
256  set_entry(NiceLevel, 0);
257  set_entry(LpProcessNum, 1);
258  set_entry(CgProcessNum, 0);
259  set_entry(CpProcessNum, 0);
260  set_entry(VgProcessNum, 0);
261  set_entry(VpProcessNum, 0);
262  set_entry(TmTimeout, -1);
263  set_entry(LPscheduler_MaxNodeIdNum, 2000);
264  set_entry(LPscheduler_MaxSbIdNum, 100000);
265  set_entry(LPscheduler_MinSbIdNum, 1);
266  //-------------------------------------------------------------------------
267  // DoublePar
268  set_entry(UnconditionalDiveProbability, 0.02);
269  set_entry(QualityRatioToAllowDiving_HasUB, 1.2);
270  set_entry(QualityRatioToAllowDiving_NoUB, 2.0);
271  set_entry(Granularity, 1e-8);
272  set_entry(MaxRunTime, 3600.0); // one hour
273  set_entry(TerminationGap_Absolute, 0.0);
274  set_entry(TerminationGap_Relative, 0.0);
275  set_entry(UpperBound, BCP_DBL_MAX);
276  set_entry(LPscheduler_OverEstimationStatic, 2.0);
277  set_entry(LPscheduler_SwitchToRateThreshold, 1.0); // stick to static
278  set_entry(LPscheduler_FactorTimeHorizon, 10.0);
279  set_entry(LPscheduler_OverEstimationRate, 2.0);
280  set_entry(LPscheduler_MaxNodeIdRatio, 0.2);
281  //-------------------------------------------------------------------------
282  // StringPar
283  set_entry(ReadRootCutsFrom, "");
284  set_entry(SaveRootCutsTo, "");
285  set_entry(ExecutableName, "bcpp");
286  set_entry(LogFileName,"");
287 }
Character parameter.
void create_keyword_list()
Method for creating the list of keyword looked for in the parameter file.
Double parameter.
The parameter is an array of strings.
void set_default_entries()
Method for setting the default values for the parameters.
BCP_vec< std::pair< BCP_string, BCP_parameter > > keys
The keyword, parameter pairs.
This class is a very simple impelementation of a constant length string.
Definition: BCP_string.hpp:13
String parameter.
void push_back(const_reference x)
Append x to the end of the vector.
#define BCP_DBL_MAX
Definition: BCP_math.hpp:6
void fint fint fint real fint real real real real real real real real real * e
void set_entry(const chr_params key, const char val)
Use the warmstart info from the end of the parent in the children.
Definition: BCP_enum.hpp:240
This parameter indeintifies a single parameter entry.
Integer parameter.