00001
00002
00003 #include "MC_lp_param.hpp"
00004 #include "BCP_parameters.hpp"
00005
00006 #include "CoinFinite.hpp"
00007
00008 using std::make_pair;
00009
00010 template <>
00011 void BCP_parameter_set<MC_lp_par>::create_keyword_list() {
00012
00013
00014
00015 keys.push_back(make_pair(BCP_string("MC_DoEdgeSwitchHeur"),
00016 BCP_parameter(BCP_CharPar,
00017 DoEdgeSwitchHeur)));
00018 keys.push_back(make_pair(BCP_string("MC_ReportAllSPCycleCuts"),
00019 BCP_parameter(BCP_CharPar,
00020 ReportAllSPCycleCuts)));
00021 keys.push_back(make_pair(BCP_string("MC_ExplicitSlacksInOpt"),
00022 BCP_parameter(BCP_CharPar,
00023 ExplicitSlacksInOpt)));
00024 keys.push_back(make_pair(BCP_string("MC_OnceOptAlwaysOpt"),
00025 BCP_parameter(BCP_CharPar,
00026 OnceOptAlwaysOpt)));
00027 keys.push_back(make_pair(BCP_string("MC_SwitchToSimplex"),
00028 BCP_parameter(BCP_CharPar,
00029 SwitchToSimplex)));
00030
00031
00032
00033
00034
00035
00036 keys.push_back(make_pair(BCP_string("MC_LpSolver"),
00037 BCP_parameter(BCP_IntPar,
00038 LpSolver)));
00039 keys.push_back(make_pair(BCP_string("MC_MaxDepth"),
00040 BCP_parameter(BCP_IntPar,
00041 MaxDepth)));
00042 keys.push_back(make_pair(BCP_string("MC_MstCycleCutGeneration"),
00043 BCP_parameter(BCP_IntPar,
00044 MstCycleCutGeneration)));
00045 keys.push_back(make_pair(BCP_string("MC_SPCycleCutGeneration"),
00046 BCP_parameter(BCP_IntPar,
00047 SPCycleCutGeneration)));
00048 keys.push_back(make_pair(BCP_string("MC_StructureSwitchHeur"),
00049 BCP_parameter(BCP_IntPar,
00050 StructureSwitchHeur)));
00051 keys.push_back(make_pair(BCP_string("MC_MstHeurNum"),
00052 BCP_parameter(BCP_IntPar,
00053 MstHeurNum)));
00054 keys.push_back(make_pair(BCP_string("MC_CycleCutHeurNum"),
00055 BCP_parameter(BCP_IntPar,
00056 CycleCutHeurNum)));
00057 keys.push_back(make_pair(BCP_string("MC_MaxCycleCutNum"),
00058 BCP_parameter(BCP_IntPar,
00059 MaxCycleCutNum)));
00060 keys.push_back(make_pair(BCP_string("MC_SB_CandidateNum"),
00061 BCP_parameter(BCP_IntPar,
00062 SB_CandidateNum)));
00063 keys.push_back(make_pair(BCP_string("MC_HeurSwitchImproveRound"),
00064 BCP_parameter(BCP_IntPar,
00065 HeurSwitchImproveRound)));
00066 keys.push_back(make_pair(BCP_string("MC_TailoffGapRelMinItcount"),
00067 BCP_parameter(BCP_IntPar,
00068 TailoffGapRelMinItcount)));
00069 keys.push_back(make_pair(BCP_string("MC_TailoffLbAbsMinItcount"),
00070 BCP_parameter(BCP_IntPar,
00071 TailoffLbAbsMinItcount)));
00072 keys.push_back(make_pair(BCP_string("MC_TailoffLbRelMinItcount"),
00073 BCP_parameter(BCP_IntPar,
00074 TailoffLbRelMinItcount)));
00075 keys.push_back(make_pair(BCP_string("MC_MaxCutsAddedPerIterVol"),
00076 BCP_parameter(BCP_IntPar,
00077 MaxCutsAddedPerIterVol)));
00078 keys.push_back(make_pair(BCP_string("MC_MaxCutsAddedPerIterSim"),
00079 BCP_parameter(BCP_IntPar,
00080 MaxCutsAddedPerIterSim)));
00081 keys.push_back(make_pair(BCP_string("MC_MaxPresolveIterVol"),
00082 BCP_parameter(BCP_IntPar,
00083 MaxPresolveIterVol)));
00084 keys.push_back(make_pair(BCP_string("MC_MaxPresolveIterSim"),
00085 BCP_parameter(BCP_IntPar,
00086 MaxPresolveIterSim)));
00087
00088 keys.push_back(make_pair(BCP_string("Vol_ascentFirstCheck"),
00089 BCP_parameter(BCP_IntPar,
00090 Vol_ascentFirstCheck)));
00091 keys.push_back(make_pair(BCP_string("Vol_ascentCheckInterval"),
00092 BCP_parameter(BCP_IntPar,
00093 Vol_ascentCheckInterval)));
00094 keys.push_back(make_pair(BCP_string("Vol_printFlag"),
00095 BCP_parameter(BCP_IntPar,
00096 Vol_printFlag)));
00097 keys.push_back(make_pair(BCP_string("Vol_printInterval"),
00098 BCP_parameter(BCP_IntPar,
00099 Vol_printInterval)));
00100 keys.push_back(make_pair(BCP_string("Vol_greenTestInterval"),
00101 BCP_parameter(BCP_IntPar,
00102 Vol_greenTestInterval)));
00103 keys.push_back(make_pair(BCP_string("Vol_yellowTestInterval"),
00104 BCP_parameter(BCP_IntPar,
00105 Vol_yellowTestInterval)));
00106 keys.push_back(make_pair(BCP_string("Vol_redTestInterval"),
00107 BCP_parameter(BCP_IntPar,
00108 Vol_redTestInterval)));
00109 keys.push_back(make_pair(BCP_string("Vol_alphaInt"),
00110 BCP_parameter(BCP_IntPar,
00111 Vol_alphaInt)));
00112 keys.push_back(make_pair(BCP_string("Vol_maxSubGradientIterations"),
00113 BCP_parameter(BCP_IntPar,
00114 Vol_maxSubGradientIterations)));
00115
00116
00117
00118
00119
00120 keys.push_back(make_pair(BCP_string("MC_IntegerTolerance"),
00121 BCP_parameter(BCP_DoublePar,
00122 IntegerTolerance)));
00123 keys.push_back(make_pair(BCP_string("MC_MinIsingCutViolation"),
00124 BCP_parameter(BCP_DoublePar,
00125 MinIsingCutViolation)));
00126 keys.push_back(make_pair(BCP_string("MC_MinMstCycleCutViolation"),
00127 BCP_parameter(BCP_DoublePar,
00128 MinMstCycleCutViolation)));
00129 keys.push_back(make_pair(BCP_string("MC_MinSPCycleCutViolation"),
00130 BCP_parameter(BCP_DoublePar,
00131 MinSPCycleCutViolation)));
00132 keys.push_back(make_pair(BCP_string("MC_MaxPerturbInMstCycleCutGen"),
00133 BCP_parameter(BCP_DoublePar,
00134 MaxPerturbInMstCycleCutGen)));
00135 keys.push_back(make_pair(BCP_string("MC_MaxPerturbInMstHeur"),
00136 BCP_parameter(BCP_DoublePar,
00137 MaxPerturbInMstHeur)));
00138 keys.push_back(make_pair(BCP_string("MC_TailoffGapRelMinImprovement"),
00139 BCP_parameter(BCP_DoublePar,
00140 TailoffGapRelMinImprovement)));
00141 keys.push_back(make_pair(BCP_string("MC_TailoffLbAbsMinImprovement"),
00142 BCP_parameter(BCP_DoublePar,
00143 TailoffLbAbsMinImprovement)));
00144 keys.push_back(make_pair(BCP_string("MC_TailoffLbRelMinImprovement"),
00145 BCP_parameter(BCP_DoublePar,
00146 TailoffLbRelMinImprovement)));
00147
00148 keys.push_back(make_pair(BCP_string("Vol_lambdaInit"),
00149 BCP_parameter(BCP_DoublePar,
00150 Vol_lambdaInit)));
00151 keys.push_back(make_pair(BCP_string("Vol_alphaInit"),
00152 BCP_parameter(BCP_DoublePar,
00153 Vol_alphaInit)));
00154 keys.push_back(make_pair(BCP_string("Vol_alphaFactor"),
00155 BCP_parameter(BCP_DoublePar,
00156 Vol_alphaFactor)));
00157 keys.push_back(make_pair(BCP_string("Vol_alphaMin"),
00158 BCP_parameter(BCP_DoublePar,
00159 Vol_alphaMin)));
00160 keys.push_back(make_pair(BCP_string("Vol_primalAbsPrecision"),
00161 BCP_parameter(BCP_DoublePar,
00162 Vol_primalAbsPrecision)));
00163 keys.push_back(make_pair(BCP_string("Vol_gapAbsPrecision"),
00164 BCP_parameter(BCP_DoublePar,
00165 Vol_gapAbsPrecision)));
00166 keys.push_back(make_pair(BCP_string("Vol_gapRelPrecision"),
00167 BCP_parameter(BCP_DoublePar,
00168 Vol_gapRelPrecision)));
00169 keys.push_back(make_pair(BCP_string("Vol_granularity"),
00170 BCP_parameter(BCP_DoublePar,
00171 Vol_granularity)));
00172 keys.push_back(make_pair(BCP_string("Vol_minimumRelAscent"),
00173 BCP_parameter(BCP_DoublePar,
00174 Vol_minimumRelAscent)));
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195 }
00196
00197
00198
00199 template <>
00200 void BCP_parameter_set<MC_lp_par>::set_default_entries(){
00201
00202
00203 set_entry(DoEdgeSwitchHeur, true);
00204 set_entry(ReportAllSPCycleCuts, true);
00205 set_entry(ExplicitSlacksInOpt, false);
00206 set_entry(OnceOptAlwaysOpt, false);
00207 set_entry(SwitchToSimplex, true);
00208
00209
00210 set_entry(LpSolver, MC_UseVol | MC_UseClp);
00211 set_entry(MaxDepth, 10000000);
00212 set_entry(MstCycleCutGeneration, MC_AlwaysGenerateMstCycleCuts);
00213 set_entry(SPCycleCutGeneration, MC_AlwaysGenerateSPCycleCuts);
00214 set_entry(StructureSwitchHeur, COIN_INT_MAX);
00215 set_entry(MstHeurNum, 3);
00216 set_entry(CycleCutHeurNum, 3);
00217 set_entry(MaxCycleCutNum, 1000);
00218 set_entry(SB_CandidateNum, 1);
00219 set_entry(HeurSwitchImproveRound, 10);
00220 set_entry(TailoffGapRelMinItcount, -1);
00221 set_entry(TailoffLbAbsMinItcount, -1);
00222 set_entry(TailoffLbRelMinItcount, -1);
00223
00224 set_entry(MaxCutsAddedPerIterVol, 1500);
00225 set_entry(MaxCutsAddedPerIterSim, 1000);
00226 set_entry(MaxPresolveIterVol, -1);
00227 set_entry(MaxPresolveIterSim, 0);
00228
00229 set_entry(Vol_ascentFirstCheck, 500);
00230 set_entry(Vol_ascentCheckInterval, 100);
00231 set_entry(Vol_printFlag, 3);
00232 set_entry(Vol_printInterval, 50);
00233 set_entry(Vol_greenTestInterval, 1);
00234 set_entry(Vol_yellowTestInterval, 400);
00235 set_entry(Vol_redTestInterval, 10);
00236 set_entry(Vol_alphaInt, 50);
00237 set_entry(Vol_maxSubGradientIterations, 2000);
00238
00239
00240 set_entry(IntegerTolerance, .001);
00241 set_entry(MinIsingCutViolation, .02);
00242 set_entry(MinMstCycleCutViolation, .02);
00243 set_entry(MinSPCycleCutViolation, .02);
00244 set_entry(MaxPerturbInMstCycleCutGen, .03);
00245 set_entry(MaxPerturbInMstHeur, .1);
00246 set_entry(TailoffGapRelMinImprovement, .02);
00247 set_entry(TailoffLbAbsMinImprovement, .02);
00248 set_entry(TailoffLbRelMinImprovement, .02);
00249
00250 set_entry(Vol_lambdaInit, 0.1);
00251 set_entry(Vol_alphaInit, 0.1);
00252 set_entry(Vol_alphaFactor, 0.5);
00253 set_entry(Vol_alphaMin, 0.0001);
00254 set_entry(Vol_primalAbsPrecision, 0.02);
00255 set_entry(Vol_gapAbsPrecision, 1.0);
00256 set_entry(Vol_gapRelPrecision, 0.01);
00257 set_entry(Vol_granularity, .999);
00258 set_entry(Vol_minimumRelAscent, 0.0001);
00259
00260
00261
00262
00263
00264
00265 }