MC_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 "MC_lp_param.hpp"
4 #include "BCP_parameters.hpp"
5 
6 #include "CoinFinite.hpp"
7 
8 using std::make_pair;
9 
10 template <>
12  // Create the list of keywords for parameter file reading
13  //--------------------------------------------------------------------------
14  // CharPar
15  keys.push_back(make_pair(BCP_string("MC_DoEdgeSwitchHeur"),
17  DoEdgeSwitchHeur)));
18  keys.push_back(make_pair(BCP_string("MC_ReportAllSPCycleCuts"),
20  ReportAllSPCycleCuts)));
21  keys.push_back(make_pair(BCP_string("MC_ExplicitSlacksInOpt"),
23  ExplicitSlacksInOpt)));
24  keys.push_back(make_pair(BCP_string("MC_OnceOptAlwaysOpt"),
26  OnceOptAlwaysOpt)));
27  keys.push_back(make_pair(BCP_string("MC_SwitchToSimplex"),
29  SwitchToSimplex)));
30 // keys.push_back(make_pair(BCP_string("MC_"),
31 // BCP_parameter(BCP_CharPar,
32 // )));
33 
34  //--------------------------------------------------------------------------
35  // IntPar
36  keys.push_back(make_pair(BCP_string("MC_LpSolver"),
38  LpSolver)));
39  keys.push_back(make_pair(BCP_string("MC_MaxDepth"),
41  MaxDepth)));
42  keys.push_back(make_pair(BCP_string("MC_MstCycleCutGeneration"),
44  MstCycleCutGeneration)));
45  keys.push_back(make_pair(BCP_string("MC_SPCycleCutGeneration"),
47  SPCycleCutGeneration)));
48  keys.push_back(make_pair(BCP_string("MC_StructureSwitchHeur"),
50  StructureSwitchHeur)));
51  keys.push_back(make_pair(BCP_string("MC_MstHeurNum"),
53  MstHeurNum)));
54  keys.push_back(make_pair(BCP_string("MC_CycleCutHeurNum"),
56  CycleCutHeurNum)));
57  keys.push_back(make_pair(BCP_string("MC_MaxCycleCutNum"),
59  MaxCycleCutNum)));
60  keys.push_back(make_pair(BCP_string("MC_SB_CandidateNum"),
62  SB_CandidateNum)));
63  keys.push_back(make_pair(BCP_string("MC_HeurSwitchImproveRound"),
65  HeurSwitchImproveRound)));
66  keys.push_back(make_pair(BCP_string("MC_TailoffGapRelMinItcount"),
68  TailoffGapRelMinItcount)));
69  keys.push_back(make_pair(BCP_string("MC_TailoffLbAbsMinItcount"),
71  TailoffLbAbsMinItcount)));
72  keys.push_back(make_pair(BCP_string("MC_TailoffLbRelMinItcount"),
74  TailoffLbRelMinItcount)));
75  keys.push_back(make_pair(BCP_string("MC_MaxCutsAddedPerIterVol"),
77  MaxCutsAddedPerIterVol)));
78  keys.push_back(make_pair(BCP_string("MC_MaxCutsAddedPerIterSim"),
80  MaxCutsAddedPerIterSim)));
81  keys.push_back(make_pair(BCP_string("MC_MaxPresolveIterVol"),
83  MaxPresolveIterVol)));
84  keys.push_back(make_pair(BCP_string("MC_MaxPresolveIterSim"),
86  MaxPresolveIterSim)));
87  //--------------------------------------------------------------------------
88  keys.push_back(make_pair(BCP_string("Vol_ascentFirstCheck"),
90  Vol_ascentFirstCheck)));
91  keys.push_back(make_pair(BCP_string("Vol_ascentCheckInterval"),
93  Vol_ascentCheckInterval)));
94  keys.push_back(make_pair(BCP_string("Vol_printFlag"),
96  Vol_printFlag)));
97  keys.push_back(make_pair(BCP_string("Vol_printInterval"),
99  Vol_printInterval)));
100  keys.push_back(make_pair(BCP_string("Vol_greenTestInterval"),
102  Vol_greenTestInterval)));
103  keys.push_back(make_pair(BCP_string("Vol_yellowTestInterval"),
105  Vol_yellowTestInterval)));
106  keys.push_back(make_pair(BCP_string("Vol_redTestInterval"),
108  Vol_redTestInterval)));
109  keys.push_back(make_pair(BCP_string("Vol_alphaInt"),
111  Vol_alphaInt)));
112  keys.push_back(make_pair(BCP_string("Vol_maxSubGradientIterations"),
114  Vol_maxSubGradientIterations)));
115 // keys.push_back(make_pair(BCP_string("MC_"),
116 // BCP_parameter(BCP_IntPar,
117 // )));
118  //--------------------------------------------------------------------------
119  // DoublePar
120  keys.push_back(make_pair(BCP_string("MC_IntegerTolerance"),
122  IntegerTolerance)));
123  keys.push_back(make_pair(BCP_string("MC_MinIsingCutViolation"),
125  MinIsingCutViolation)));
126  keys.push_back(make_pair(BCP_string("MC_MinMstCycleCutViolation"),
128  MinMstCycleCutViolation)));
129  keys.push_back(make_pair(BCP_string("MC_MinSPCycleCutViolation"),
131  MinSPCycleCutViolation)));
132  keys.push_back(make_pair(BCP_string("MC_MaxPerturbInMstCycleCutGen"),
134  MaxPerturbInMstCycleCutGen)));
135  keys.push_back(make_pair(BCP_string("MC_MaxPerturbInMstHeur"),
137  MaxPerturbInMstHeur)));
138  keys.push_back(make_pair(BCP_string("MC_TailoffGapRelMinImprovement"),
140  TailoffGapRelMinImprovement)));
141  keys.push_back(make_pair(BCP_string("MC_TailoffLbAbsMinImprovement"),
143  TailoffLbAbsMinImprovement)));
144  keys.push_back(make_pair(BCP_string("MC_TailoffLbRelMinImprovement"),
146  TailoffLbRelMinImprovement)));
147  //--------------------------------------------------------------------------
148  keys.push_back(make_pair(BCP_string("Vol_lambdaInit"),
150  Vol_lambdaInit)));
151  keys.push_back(make_pair(BCP_string("Vol_alphaInit"),
153  Vol_alphaInit)));
154  keys.push_back(make_pair(BCP_string("Vol_alphaFactor"),
156  Vol_alphaFactor)));
157  keys.push_back(make_pair(BCP_string("Vol_alphaMin"),
159  Vol_alphaMin)));
160  keys.push_back(make_pair(BCP_string("Vol_primalAbsPrecision"),
162  Vol_primalAbsPrecision)));
163  keys.push_back(make_pair(BCP_string("Vol_gapAbsPrecision"),
165  Vol_gapAbsPrecision)));
166  keys.push_back(make_pair(BCP_string("Vol_gapRelPrecision"),
168  Vol_gapRelPrecision)));
169  keys.push_back(make_pair(BCP_string("Vol_granularity"),
171  Vol_granularity)));
172  keys.push_back(make_pair(BCP_string("Vol_minimumRelAscent"),
174  Vol_minimumRelAscent)));
175 // keys.push_back(make_pair(BCP_string("MC_"),
176 // BCP_parameter(BCP_DoublePar,
177 // )));
178 
179  //--------------------------------------------------------------------------
180  // StringPar
181 // keys.push_back(make_pair(BCP_string("MC_"),
182 // BCP_parameter(BCP_StringPar,
183 // )));
184  //--------------------------------------------------------------------------
185  // StringArrayPar
186 // keys.push_back(make_pair(BCP_string("MC_"),
187 // BCP_parameter(BCP_StringArrayPar,
188 // )));
189  //--------------------------------------------------------------------------
190  // BooleanListPar
191 // keys.push_back(make_pair(BCP_string("MC_LpVerbosity_PrunedNodeInfo"),
192 // BCP_parameter(BCP_BooleanListPar,
193 // Verbosity,
194 // BCP_LpVerb_PrunedNodeInfo)));
195 }
196 
197 //#############################################################################
198 
199 template <>
201  //--------------------------------------------------------------------------
202  // CharPar
203  set_entry(DoEdgeSwitchHeur, true);
204  set_entry(ReportAllSPCycleCuts, true);
205  set_entry(ExplicitSlacksInOpt, false);
206  set_entry(OnceOptAlwaysOpt, false);
207  set_entry(SwitchToSimplex, true);
208  //--------------------------------------------------------------------------
209  // IntPar
210  set_entry(LpSolver, MC_UseVol | MC_UseClp);
211  set_entry(MaxDepth, 10000000);
212  set_entry(MstCycleCutGeneration, MC_AlwaysGenerateMstCycleCuts);
213  set_entry(SPCycleCutGeneration, MC_AlwaysGenerateSPCycleCuts);
214  set_entry(StructureSwitchHeur, COIN_INT_MAX);
215  set_entry(MstHeurNum, 3);
216  set_entry(CycleCutHeurNum, 3);
217  set_entry(MaxCycleCutNum, 1000);
218  set_entry(SB_CandidateNum, 1);
219  set_entry(HeurSwitchImproveRound, 10);
220  set_entry(TailoffGapRelMinItcount, -1); // no this kind of tailoff
221  set_entry(TailoffLbAbsMinItcount, -1); // no this kind of tailoff
222  set_entry(TailoffLbRelMinItcount, -1); // no this kind of tailoff
223 
224  set_entry(MaxCutsAddedPerIterVol, 1500);
225  set_entry(MaxCutsAddedPerIterSim, 1000);
226  set_entry(MaxPresolveIterVol, -1);
227  set_entry(MaxPresolveIterSim, 0);
228 
229  set_entry(Vol_ascentFirstCheck, 500);
230  set_entry(Vol_ascentCheckInterval, 100);
231  set_entry(Vol_printFlag, 3);
232  set_entry(Vol_printInterval, 50);
233  set_entry(Vol_greenTestInterval, 1);
234  set_entry(Vol_yellowTestInterval, 400);
235  set_entry(Vol_redTestInterval, 10);
236  set_entry(Vol_alphaInt, 50);
237  set_entry(Vol_maxSubGradientIterations, 2000);
238  //--------------------------------------------------------------------------
239  // DoublePar
240  set_entry(IntegerTolerance, .001);
241  set_entry(MinIsingCutViolation, .02);
242  set_entry(MinMstCycleCutViolation, .02);
243  set_entry(MinSPCycleCutViolation, .02);
244  set_entry(MaxPerturbInMstCycleCutGen, .03);
245  set_entry(MaxPerturbInMstHeur, .1);
246  set_entry(TailoffGapRelMinImprovement, .02);
247  set_entry(TailoffLbAbsMinImprovement, .02);
248  set_entry(TailoffLbRelMinImprovement, .02);
249 
250  set_entry(Vol_lambdaInit, 0.1);
251  set_entry(Vol_alphaInit, 0.1);
252  set_entry(Vol_alphaFactor, 0.5);
253  set_entry(Vol_alphaMin, 0.0001);
254  set_entry(Vol_primalAbsPrecision, 0.02);
255  set_entry(Vol_gapAbsPrecision, 1.0);
256  set_entry(Vol_gapRelPrecision, 0.01);
257  set_entry(Vol_granularity, .999);
258  set_entry(Vol_minimumRelAscent, 0.0001);
259  //--------------------------------------------------------------------------
260  // StringPar
261  //--------------------------------------------------------------------------
262  // StringArrayPar
263  //--------------------------------------------------------------------------
264  // BooleanListPar
265 }
Character parameter.
void create_keyword_list()
Method for creating the list of keyword looked for in the parameter file.
Double parameter.
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
void push_back(const_reference x)
Append x to the end of the vector.
void set_entry(const chr_params key, const char val)
This parameter indeintifies a single parameter entry.
Integer parameter.