BCP_lp_param.cpp
Go to the documentation of this file.
1 // Copyright (C) 2000, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 #include "BCP_lp_param.hpp"
4 #include "BCP_parameters.hpp"
5 
6 #include "BCP_enum.hpp"
7 #include "BCP_enum_branch.hpp"
8 
9 using std::make_pair;
10 
11 template <>
13 
14  obsolete_keys.push_back(BCP_string("BCP_FixVarsBeforeFathom"));
15 
16  // Create the list of keywords for parameter file reading
17  //-------------------------------------------------------------------------
18  // CharPar
19  keys.push_back(make_pair(BCP_string("BCP_BranchOnCuts"),
21  BranchOnCuts)));
22  keys.push_back(make_pair(BCP_string("BCP_CompareNewCutsToOldOnes"),
24  CompareNewCutsToOldOnes)));
25  keys.push_back(make_pair(BCP_string("BCP_CompareNewVarsToOldOnes"),
27  CompareNewVarsToOldOnes)));
28  keys.push_back(make_pair(BCP_string("BCP_DoReducedCostFixingAtZero"),
30  DoReducedCostFixingAtZero)));
31  keys.push_back(make_pair(BCP_string("BCP_DoReducedCostFixingAtAnything"),
33  DoReducedCostFixingAtAnything)));
34  keys.push_back(make_pair(BCP_string("BCP_DoReducedCostFixing"),
36  DoReducedCostFixingAtAnything)));
37  keys.push_back(make_pair(BCP_string("BCP_ReportWhenDefaultIsExecuted"),
39  ReportWhenDefaultIsExecuted)));
40  keys.push_back(make_pair(BCP_string("BCP_NoCompressionAtFathom"),
42  NoCompressionAtFathom)));
43  keys.push_back(make_pair(BCP_string("BCP_SendFathomedNodeDesc"),
45  SendFathomedNodeDesc)));
46  keys.push_back(make_pair(BCP_string("BCP_Lp_DumpNodeDescCuts"),
48  Lp_DumpNodeDescCuts)));
49  keys.push_back(make_pair(BCP_string("BCP_Lp_DumpNodeDescVars"),
51  Lp_DumpNodeDescVars)));
52  //-------------------------------------------------------------------------
53  // BoolArrayPar
54  keys.push_back(make_pair(BCP_string("BCP_LpVerb_AddedCutCount"),
56  LpVerb_AddedCutCount)));
57  keys.push_back(make_pair(BCP_string("BCP_LpVerb_AddedVarCount"),
59  LpVerb_AddedVarCount)));
60  keys.push_back(make_pair(BCP_string("BCP_LpVerb_ChildrenInfo"),
62  LpVerb_ChildrenInfo)));
63  keys.push_back(make_pair(BCP_string("BCP_LpVerb_ColumnGenerationInfo"),
65  LpVerb_ColumnGenerationInfo)));
66  keys.push_back(make_pair(BCP_string("BCP_LpVerb_CutsToCutPoolCount"),
68  LpVerb_CutsToCutPoolCount)));
69  keys.push_back(make_pair(BCP_string("BCP_LpVerb_VarsToVarPoolCount"),
71  LpVerb_VarsToVarPoolCount)));
72  keys.push_back(make_pair(BCP_string("BCP_LpVerb_FathomInfo"),
74  LpVerb_FathomInfo)));
75  keys.push_back(make_pair(BCP_string("BCP_LpVerb_IterationCount"),
77  LpVerb_IterationCount)));
78  keys.push_back(make_pair(BCP_string("BCP_LpVerb_RelaxedSolution"),
80  LpVerb_RelaxedSolution)));
81  keys.push_back(make_pair(BCP_string("BCP_LpVerb_FinalRelaxedSolution"),
83  LpVerb_FinalRelaxedSolution)));
84  keys.push_back(make_pair(BCP_string("BCP_LpVerb_LpMatrixSize"),
86  LpVerb_LpMatrixSize)));
87  keys.push_back(make_pair(BCP_string("BCP_LpVerb_LpSolutionValue"),
89  LpVerb_LpSolutionValue)));
90  keys.push_back(make_pair(BCP_string("BCP_LpVerb_MatrixCompression"),
92  LpVerb_MatrixCompression)));
93  keys.push_back(make_pair(BCP_string("BCP_LpVerb_NodeTime"),
95  LpVerb_NodeTime)));
96  keys.push_back(make_pair(BCP_string("BCP_LpVerb_PresolvePositions"),
98  LpVerb_PresolvePositions)));
99  keys.push_back(make_pair(BCP_string("BCP_LpVerb_PresolveResult"),
101  LpVerb_PresolveResult)));
102  keys.push_back(make_pair(BCP_string("BCP_LpVerb_ProcessedNodeIndex"),
104  LpVerb_ProcessedNodeIndex)));
105  keys.push_back(make_pair(BCP_string("BCP_LpVerb_ReportCutGenTimeout"),
107  LpVerb_ReportCutGenTimeout)));
108  keys.push_back(make_pair(BCP_string("BCP_LpVerb_ReportVarGenTimeout"),
110  LpVerb_ReportVarGenTimeout)));
111  keys.push_back(make_pair(BCP_string("BCP_LpVerb_ReportLocalCutPoolSize"),
113  LpVerb_ReportLocalCutPoolSize)));
114  keys.push_back(make_pair(BCP_string("BCP_LpVerb_ReportLocalVarPoolSize"),
116  LpVerb_ReportLocalVarPoolSize)));
117  keys.push_back(make_pair(BCP_string("BCP_LpVerb_RepricingResult"),
119  LpVerb_RepricingResult)));
120  keys.push_back(make_pair(BCP_string("BCP_LpVerb_RowEffectivenessCount"),
122  LpVerb_RowEffectivenessCount)));
123  keys.push_back(make_pair(BCP_string("BCP_LpVerb_VarTightening"),
125  LpVerb_VarTightening)));
126  keys.push_back(make_pair(BCP_string("BCP_LpVerb_StrongBranchPositions"),
128  LpVerb_StrongBranchPositions)));
129  keys.push_back(make_pair(BCP_string("BCP_LpVerb_StrongBranchResult"),
131  LpVerb_StrongBranchResult)));
132  keys.push_back(make_pair(BCP_string("BCP_LpVerb_GeneratedCutCount"),
134  LpVerb_GeneratedCutCount)));
135  keys.push_back(make_pair(BCP_string("BCP_LpVerb_GeneratedVarCount"),
137  LpVerb_GeneratedVarCount)));
138 
139  // keys.push_back(make_pair(BCP_string("BCP_"),
140  // BCP_parameter(BCP_CharPar,
141  // )));
142 
143  //-------------------------------------------------------------------------
144  // IntPar
145  keys.push_back(make_pair(BCP_string("BCP_NiceLevel"),
147  NiceLevel)));
148  keys.push_back(make_pair(BCP_string("BCP_ScaleMatrix"),
150  ScaleMatrix)));
151 
152  keys.push_back(make_pair(BCP_string("BCP_SlackCutDiscardingStrategy"),
154  SlackCutDiscardingStrategy)));
155  keys.push_back(make_pair(BCP_string("BCP_CutEffectiveCountBeforePool"),
157  CutEffectiveCountBeforePool)));
158  keys.push_back(make_pair(BCP_string("BCP_CutPoolCheckFrequency"),
160  CutPoolCheckFrequency)));
161  keys.push_back(make_pair(BCP_string("BCP_VarPoolCheckFrequency"),
163  VarPoolCheckFrequency)));
164  keys.push_back(make_pair(BCP_string("BCP_IneffectiveConstraints"),
166  IneffectiveConstraints)));
167  keys.push_back(make_pair(BCP_string("BCP_IneffectiveBeforeDelete"),
169  IneffectiveBeforeDelete)));
170 
171  keys.push_back(make_pair(BCP_string("BCP_MaxNonDualFeasToAdd_Min"),
173  MaxNonDualFeasToAdd_Min)));
174  keys.push_back(make_pair(BCP_string("BCP_MaxNonDualFeasToAdd_Max"),
176  MaxNonDualFeasToAdd_Max)));
177 
178  keys.push_back(make_pair(BCP_string("BCP_CutViolationNorm"),
180  CutViolationNorm)));
181 
182  keys.push_back(make_pair(BCP_string("BCP_MaxCutsAddedPerIteration"),
184  MaxCutsAddedPerIteration)));
185  keys.push_back(make_pair(BCP_string("BCP_MaxVarsAddedPerIteration"),
187  MaxVarsAddedPerIteration)));
188 
189  keys.push_back(make_pair(BCP_string("BCP_MaxLeftoverCutNum"),
191  MaxLeftoverCutNum)));
192 
193  keys.push_back(make_pair(BCP_string("BCP_DeletedColToCompress_Min"),
195  DeletedColToCompress_Min)));
196  keys.push_back(make_pair(BCP_string("BCP_DeletedRowToCompress_Min"),
198  DeletedRowToCompress_Min)));
199 
200  keys.push_back(make_pair(BCP_string("BCP_MaxPresolveIter"),
202  MaxPresolveIter)));
203  keys.push_back(make_pair(BCP_string("BCP_StrongBranchNum"),
205  StrongBranchNum)));
206  keys.push_back(make_pair(BCP_string("BCP_StrongBranch_CloseToHalfNum"),
208  StrongBranchNum)));
209  keys.push_back(make_pair(BCP_string("BCP_BranchingObjectComparison"),
211  BranchingObjectComparison)));
212  keys.push_back(make_pair(BCP_string("BCP_ChildPreference"),
214  ChildPreference)));
215 
216  keys.push_back(make_pair(BCP_string("BCP_FeasibilityTest"),
218  FeasibilityTest)));
219  keys.push_back(make_pair(BCP_string("BCP_WarmstartInfo"),
221  WarmstartInfo)));
222  keys.push_back(make_pair(BCP_string("BCP_InfoForCG"),
224  InfoForCG)));
225  keys.push_back(make_pair(BCP_string("BCP_InfoForVG"),
227  InfoForVG)));
228  // keys.push_back(make_pair(BCP_string("BCP_"),
229  // BCP_parameter(BCP_IntPar,
230  // )));
231  //--------------------------------------------------------------------------
232  // DoublePar
233  keys.push_back(make_pair(BCP_string("BCP_Granularity"),
235  Granularity)));
236  keys.push_back(make_pair(BCP_string("BCP_DeletedColToCompress_Frac"),
238  DeletedColToCompress_Frac)));
239  keys.push_back(make_pair(BCP_string("BCP_DeletedRowToCompress_Frac"),
241  DeletedRowToCompress_Frac)));
242  keys.push_back(make_pair(BCP_string("BCP_MaxNonDualFeasToAdd_Frac"),
244  MaxNonDualFeasToAdd_Frac)));
245  keys.push_back(make_pair(BCP_string("BCP_MaxLeftoverCutFrac"),
247  MaxLeftoverCutFrac)));
248  keys.push_back(make_pair(BCP_string("BCP_IntegerTolerance"),
250  IntegerTolerance)));
251 
252  keys.push_back(make_pair(BCP_string("BCP_FirstLP_FirstCutTimeout"),
254  FirstLP_FirstCutTimeout)));
255  keys.push_back(make_pair(BCP_string("BCP_LaterLP_FirstCutTimeout"),
257  LaterLP_FirstCutTimeout)));
258  keys.push_back(make_pair(BCP_string("BCP_FirstLP_AllCutsTimeout"),
260  FirstLP_AllCutsTimeout)));
261  keys.push_back(make_pair(BCP_string("BCP_LaterLP_AllCutsTimeout"),
263  LaterLP_AllCutsTimeout)));
264 
265  keys.push_back(make_pair(BCP_string("BCP_FirstLP_FirstVarTimeout"),
267  FirstLP_FirstVarTimeout)));
268  keys.push_back(make_pair(BCP_string("BCP_LaterLP_FirstVarTimeout"),
270  LaterLP_FirstVarTimeout)));
271  keys.push_back(make_pair(BCP_string("BCP_FirstLP_AllVarsTimeout"),
273  FirstLP_AllVarsTimeout)));
274  keys.push_back(make_pair(BCP_string("BCP_LaterLP_AllVarsTimeout"),
276  LaterLP_AllVarsTimeout)));
277  keys.push_back(make_pair(BCP_string("BCP_MaxRunTime"),
279  MaxRunTime)));
281  // keys.push_back(make_pair(BCP_string("BCP_"),
282  // BCP_parameter(BCP_DoublePar,
283  // )));
284 
285  //-------------------------------------------------------------------------
286  // StringPar
287  keys.push_back(make_pair(BCP_string("BCP_LogFileName"),
289  LogFileName)));
290  // keys.push_back(make_pair(BCP_string("BCP_"),
291  // BCP_parameter(BCP_StringPar,
292  // )));
293 }
294 
295 //#############################################################################
296 
297 template <>
299  //-------------------------------------------------------------------------
300  // CharPar
301  set_entry(BranchOnCuts, false);
302  set_entry(CompareNewCutsToOldOnes, true);
303  set_entry(CompareNewVarsToOldOnes, true);
304  set_entry(DoReducedCostFixingAtZero, true);
305  set_entry(DoReducedCostFixingAtAnything, true);
306  set_entry(MessagePassingIsSerial, false);
307  set_entry(ReportWhenDefaultIsExecuted, true);
308  set_entry(NoCompressionAtFathom, false);
309  set_entry(SendFathomedNodeDesc, true);
310  set_entry(UseExplicitStorage, false);
311  set_entry(Lp_DumpNodeDescCuts, false);
312  set_entry(Lp_DumpNodeDescVars, false);
313  //-------------------------------------------------------------------------
314  set_entry(LpVerb_AddedCutCount, true);
315  set_entry(LpVerb_AddedVarCount, true);
316  set_entry(LpVerb_ChildrenInfo, true);
317  set_entry(LpVerb_ColumnGenerationInfo, true);
318  set_entry(LpVerb_CutsToCutPoolCount, true);
319  set_entry(LpVerb_VarsToVarPoolCount, true);
320  set_entry(LpVerb_FathomInfo, true);
321  set_entry(LpVerb_IterationCount, true);
322  set_entry(LpVerb_RelaxedSolution, true);
323  set_entry(LpVerb_FinalRelaxedSolution, true);
324  set_entry(LpVerb_LpMatrixSize, true);
325  set_entry(LpVerb_LpSolutionValue, true);
326  set_entry(LpVerb_MatrixCompression, true);
327  set_entry(LpVerb_NodeTime, false);
328  set_entry(LpVerb_PresolvePositions, true);
329  set_entry(LpVerb_PresolveResult, true);
330  set_entry(LpVerb_ProcessedNodeIndex, true);
331  set_entry(LpVerb_ReportCutGenTimeout, true);
332  set_entry(LpVerb_ReportVarGenTimeout, true);
333  set_entry(LpVerb_ReportLocalCutPoolSize, true);
334  set_entry(LpVerb_ReportLocalVarPoolSize, true);
335  set_entry(LpVerb_RepricingResult, true);
336  set_entry(LpVerb_RowEffectivenessCount, true);
337  set_entry(LpVerb_VarTightening, true);
338  set_entry(LpVerb_StrongBranchPositions, true);
339  set_entry(LpVerb_StrongBranchResult, true);
340  set_entry(LpVerb_GeneratedCutCount, true);
341  set_entry(LpVerb_GeneratedVarCount, true);
342  //-------------------------------------------------------------------------
343  // IntPar
344  set_entry(NiceLevel, 0);
345 
346  set_entry(ScaleMatrix, 0);
347 
348  set_entry(SlackCutDiscardingStrategy, BCP_DiscardSlackCutsAtNewIteration);
349  set_entry(CutEffectiveCountBeforePool, 1000);
350  set_entry(CutPoolCheckFrequency, 10);
351  set_entry(VarPoolCheckFrequency, 10);
352  set_entry(IneffectiveConstraints, BCP_IneffConstr_ZeroDualValue);
353  set_entry(IneffectiveBeforeDelete, 1);
354 
355  set_entry(MaxNonDualFeasToAdd_Min, 5);
356  set_entry(MaxNonDualFeasToAdd_Max, 200);
357 
358  set_entry(CutViolationNorm, BCP_CutViolationNorm_Plain);
359 
360  set_entry(MaxCutsAddedPerIteration, 100000);
361  set_entry(MaxVarsAddedPerIteration, 100000);
362 
363  set_entry(MaxLeftoverCutNum, 10000000);
364 
365  set_entry(DeletedColToCompress_Min, 10);
366  set_entry(DeletedRowToCompress_Min, 10);
367 
368  set_entry(MaxPresolveIter, 100000);
369  set_entry(StrongBranchNum, 3);
370  set_entry(BranchingObjectComparison, BCP_HighestLowObjval);
371  set_entry(ChildPreference, BCP_PreferChild_LowBound);
372 
373  set_entry(FeasibilityTest, BCP_FullTest_Feasible);
374  set_entry(WarmstartInfo, BCP_WarmstartParent);
376  set_entry(InfoForVG, BCP_DualSolution_Full);
377  //-------------------------------------------------------------------------
378  // DoublePar
379  set_entry(Granularity, 1e-8);
380  set_entry(DeletedColToCompress_Frac, 0.0);
381  set_entry(DeletedRowToCompress_Frac, 0.0);
382  set_entry(MaxNonDualFeasToAdd_Frac, 0.05);
383  set_entry(MaxLeftoverCutFrac, 1.0);
384  set_entry(IntegerTolerance, 1e-5);
385 
386  set_entry(FirstLP_FirstCutTimeout, -1.0);
387  set_entry(LaterLP_FirstCutTimeout, -1.0);
388  set_entry(FirstLP_AllCutsTimeout, -1.0);
389  set_entry(LaterLP_AllCutsTimeout, -1.0);
390 
391  set_entry(FirstLP_FirstVarTimeout, -1.0);
392  set_entry(LaterLP_FirstVarTimeout, -1.0);
393  set_entry(FirstLP_AllVarsTimeout, -1.0);
394  set_entry(LaterLP_AllVarsTimeout, -1.0);
395 
396  set_entry(MaxRunTime, 3600.0); // one hour
397  //-------------------------------------------------------------------------
398  // StringPar
399  set_entry(LogFileName,"");
400 }
BCP_vec< BCP_string > obsolete_keys
list of obsolete keywords.
Pack all dual variables.
Definition: BCP_enum.hpp:152
Character parameter.
void create_keyword_list()
Method for creating the list of keyword looked for in the parameter file.
Double parameter.
Pack only those variables that are currently at nonzero levels.
Definition: BCP_enum.hpp:135
The problem is feasible if all non-continuous variables are integral.
Definition: BCP_enum.hpp:225
Purge the slack cuts at every iteration while processing search tree nodes.
Definition: BCP_enum.hpp:21
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.
Constraints with dual variables at level zero are considered ineffective.
Definition: BCP_enum.hpp:188
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.
The violation is interpreted in the normal sense, i.e., max(0, max(lb-lhs, lhs-ub)) ...
Definition: BCP_enum.hpp:34
Keep the child that has the lowest presolved objective value.
Integer parameter.