00001
00002
00003 #include "BCP_lp_param.hpp"
00004 #include "BCP_parameters.hpp"
00005
00006 #include "BCP_enum.hpp"
00007 #include "BCP_enum_branch.hpp"
00008
00009 using std::make_pair;
00010
00011 template <>
00012 void BCP_parameter_set<BCP_lp_par>::create_keyword_list() {
00013
00014 obsolete_keys.push_back(BCP_string("BCP_FixVarsBeforeFathom"));
00015
00016
00017
00018
00019 keys.push_back(make_pair(BCP_string("BCP_BranchOnCuts"),
00020 BCP_parameter(BCP_CharPar,
00021 BranchOnCuts)));
00022 keys.push_back(make_pair(BCP_string("BCP_CompareNewCutsToOldOnes"),
00023 BCP_parameter(BCP_CharPar,
00024 CompareNewCutsToOldOnes)));
00025 keys.push_back(make_pair(BCP_string("BCP_CompareNewVarsToOldOnes"),
00026 BCP_parameter(BCP_CharPar,
00027 CompareNewVarsToOldOnes)));
00028 keys.push_back(make_pair(BCP_string("BCP_DoReducedCostFixingAtZero"),
00029 BCP_parameter(BCP_CharPar,
00030 DoReducedCostFixingAtZero)));
00031 keys.push_back(make_pair(BCP_string("BCP_DoReducedCostFixingAtAnything"),
00032 BCP_parameter(BCP_CharPar,
00033 DoReducedCostFixingAtAnything)));
00034 keys.push_back(make_pair(BCP_string("BCP_DoReducedCostFixing"),
00035 BCP_parameter(BCP_CharPar,
00036 DoReducedCostFixingAtAnything)));
00037 keys.push_back(make_pair(BCP_string("BCP_ReportWhenDefaultIsExecuted"),
00038 BCP_parameter(BCP_CharPar,
00039 ReportWhenDefaultIsExecuted)));
00040 keys.push_back(make_pair(BCP_string("BCP_NoCompressionAtFathom"),
00041 BCP_parameter(BCP_CharPar,
00042 NoCompressionAtFathom)));
00043 keys.push_back(make_pair(BCP_string("BCP_SendFathomedNodeDesc"),
00044 BCP_parameter(BCP_CharPar,
00045 SendFathomedNodeDesc)));
00046 keys.push_back(make_pair(BCP_string("BCP_Lp_DumpNodeDescCuts"),
00047 BCP_parameter(BCP_CharPar,
00048 Lp_DumpNodeDescCuts)));
00049 keys.push_back(make_pair(BCP_string("BCP_Lp_DumpNodeDescVars"),
00050 BCP_parameter(BCP_CharPar,
00051 Lp_DumpNodeDescVars)));
00052
00053
00054 keys.push_back(make_pair(BCP_string("BCP_LpVerb_AddedCutCount"),
00055 BCP_parameter(BCP_CharPar,
00056 LpVerb_AddedCutCount)));
00057 keys.push_back(make_pair(BCP_string("BCP_LpVerb_AddedVarCount"),
00058 BCP_parameter(BCP_CharPar,
00059 LpVerb_AddedVarCount)));
00060 keys.push_back(make_pair(BCP_string("BCP_LpVerb_ChildrenInfo"),
00061 BCP_parameter(BCP_CharPar,
00062 LpVerb_ChildrenInfo)));
00063 keys.push_back(make_pair(BCP_string("BCP_LpVerb_ColumnGenerationInfo"),
00064 BCP_parameter(BCP_CharPar,
00065 LpVerb_ColumnGenerationInfo)));
00066 keys.push_back(make_pair(BCP_string("BCP_LpVerb_CutsToCutPoolCount"),
00067 BCP_parameter(BCP_CharPar,
00068 LpVerb_CutsToCutPoolCount)));
00069 keys.push_back(make_pair(BCP_string("BCP_LpVerb_VarsToVarPoolCount"),
00070 BCP_parameter(BCP_CharPar,
00071 LpVerb_VarsToVarPoolCount)));
00072 keys.push_back(make_pair(BCP_string("BCP_LpVerb_FathomInfo"),
00073 BCP_parameter(BCP_CharPar,
00074 LpVerb_FathomInfo)));
00075 keys.push_back(make_pair(BCP_string("BCP_LpVerb_IterationCount"),
00076 BCP_parameter(BCP_CharPar,
00077 LpVerb_IterationCount)));
00078 keys.push_back(make_pair(BCP_string("BCP_LpVerb_RelaxedSolution"),
00079 BCP_parameter(BCP_CharPar,
00080 LpVerb_RelaxedSolution)));
00081 keys.push_back(make_pair(BCP_string("BCP_LpVerb_FinalRelaxedSolution"),
00082 BCP_parameter(BCP_CharPar,
00083 LpVerb_FinalRelaxedSolution)));
00084 keys.push_back(make_pair(BCP_string("BCP_LpVerb_LpMatrixSize"),
00085 BCP_parameter(BCP_CharPar,
00086 LpVerb_LpMatrixSize)));
00087 keys.push_back(make_pair(BCP_string("BCP_LpVerb_LpSolutionValue"),
00088 BCP_parameter(BCP_CharPar,
00089 LpVerb_LpSolutionValue)));
00090 keys.push_back(make_pair(BCP_string("BCP_LpVerb_MatrixCompression"),
00091 BCP_parameter(BCP_CharPar,
00092 LpVerb_MatrixCompression)));
00093 keys.push_back(make_pair(BCP_string("BCP_LpVerb_NodeTime"),
00094 BCP_parameter(BCP_CharPar,
00095 LpVerb_NodeTime)));
00096 keys.push_back(make_pair(BCP_string("BCP_LpVerb_PresolvePositions"),
00097 BCP_parameter(BCP_CharPar,
00098 LpVerb_PresolvePositions)));
00099 keys.push_back(make_pair(BCP_string("BCP_LpVerb_PresolveResult"),
00100 BCP_parameter(BCP_CharPar,
00101 LpVerb_PresolveResult)));
00102 keys.push_back(make_pair(BCP_string("BCP_LpVerb_ProcessedNodeIndex"),
00103 BCP_parameter(BCP_CharPar,
00104 LpVerb_ProcessedNodeIndex)));
00105 keys.push_back(make_pair(BCP_string("BCP_LpVerb_ReportCutGenTimeout"),
00106 BCP_parameter(BCP_CharPar,
00107 LpVerb_ReportCutGenTimeout)));
00108 keys.push_back(make_pair(BCP_string("BCP_LpVerb_ReportVarGenTimeout"),
00109 BCP_parameter(BCP_CharPar,
00110 LpVerb_ReportVarGenTimeout)));
00111 keys.push_back(make_pair(BCP_string("BCP_LpVerb_ReportLocalCutPoolSize"),
00112 BCP_parameter(BCP_CharPar,
00113 LpVerb_ReportLocalCutPoolSize)));
00114 keys.push_back(make_pair(BCP_string("BCP_LpVerb_ReportLocalVarPoolSize"),
00115 BCP_parameter(BCP_CharPar,
00116 LpVerb_ReportLocalVarPoolSize)));
00117 keys.push_back(make_pair(BCP_string("BCP_LpVerb_RepricingResult"),
00118 BCP_parameter(BCP_CharPar,
00119 LpVerb_RepricingResult)));
00120 keys.push_back(make_pair(BCP_string("BCP_LpVerb_RowEffectivenessCount"),
00121 BCP_parameter(BCP_CharPar,
00122 LpVerb_RowEffectivenessCount)));
00123 keys.push_back(make_pair(BCP_string("BCP_LpVerb_VarTightening"),
00124 BCP_parameter(BCP_CharPar,
00125 LpVerb_VarTightening)));
00126 keys.push_back(make_pair(BCP_string("BCP_LpVerb_StrongBranchPositions"),
00127 BCP_parameter(BCP_CharPar,
00128 LpVerb_StrongBranchPositions)));
00129 keys.push_back(make_pair(BCP_string("BCP_LpVerb_StrongBranchResult"),
00130 BCP_parameter(BCP_CharPar,
00131 LpVerb_StrongBranchResult)));
00132 keys.push_back(make_pair(BCP_string("BCP_LpVerb_GeneratedCutCount"),
00133 BCP_parameter(BCP_CharPar,
00134 LpVerb_GeneratedCutCount)));
00135 keys.push_back(make_pair(BCP_string("BCP_LpVerb_GeneratedVarCount"),
00136 BCP_parameter(BCP_CharPar,
00137 LpVerb_GeneratedVarCount)));
00138
00139
00140
00141
00142
00143
00144
00145 keys.push_back(make_pair(BCP_string("BCP_NiceLevel"),
00146 BCP_parameter(BCP_IntPar,
00147 NiceLevel)));
00148 keys.push_back(make_pair(BCP_string("BCP_ScaleMatrix"),
00149 BCP_parameter(BCP_IntPar,
00150 ScaleMatrix)));
00151
00152 keys.push_back(make_pair(BCP_string("BCP_SlackCutDiscardingStrategy"),
00153 BCP_parameter(BCP_IntPar,
00154 SlackCutDiscardingStrategy)));
00155 keys.push_back(make_pair(BCP_string("BCP_CutEffectiveCountBeforePool"),
00156 BCP_parameter(BCP_IntPar,
00157 CutEffectiveCountBeforePool)));
00158 keys.push_back(make_pair(BCP_string("BCP_CutPoolCheckFrequency"),
00159 BCP_parameter(BCP_IntPar,
00160 CutPoolCheckFrequency)));
00161 keys.push_back(make_pair(BCP_string("BCP_VarPoolCheckFrequency"),
00162 BCP_parameter(BCP_IntPar,
00163 VarPoolCheckFrequency)));
00164 keys.push_back(make_pair(BCP_string("BCP_IneffectiveConstraints"),
00165 BCP_parameter(BCP_IntPar,
00166 IneffectiveConstraints)));
00167 keys.push_back(make_pair(BCP_string("BCP_IneffectiveBeforeDelete"),
00168 BCP_parameter(BCP_IntPar,
00169 IneffectiveBeforeDelete)));
00170
00171 keys.push_back(make_pair(BCP_string("BCP_MaxNonDualFeasToAdd_Min"),
00172 BCP_parameter(BCP_IntPar,
00173 MaxNonDualFeasToAdd_Min)));
00174 keys.push_back(make_pair(BCP_string("BCP_MaxNonDualFeasToAdd_Max"),
00175 BCP_parameter(BCP_IntPar,
00176 MaxNonDualFeasToAdd_Max)));
00177
00178 keys.push_back(make_pair(BCP_string("BCP_CutViolationNorm"),
00179 BCP_parameter(BCP_IntPar,
00180 CutViolationNorm)));
00181
00182 keys.push_back(make_pair(BCP_string("BCP_MaxCutsAddedPerIteration"),
00183 BCP_parameter(BCP_IntPar,
00184 MaxCutsAddedPerIteration)));
00185 keys.push_back(make_pair(BCP_string("BCP_MaxVarsAddedPerIteration"),
00186 BCP_parameter(BCP_IntPar,
00187 MaxVarsAddedPerIteration)));
00188
00189 keys.push_back(make_pair(BCP_string("BCP_MaxLeftoverCutNum"),
00190 BCP_parameter(BCP_IntPar,
00191 MaxLeftoverCutNum)));
00192
00193 keys.push_back(make_pair(BCP_string("BCP_DeletedColToCompress_Min"),
00194 BCP_parameter(BCP_IntPar,
00195 DeletedColToCompress_Min)));
00196 keys.push_back(make_pair(BCP_string("BCP_DeletedRowToCompress_Min"),
00197 BCP_parameter(BCP_IntPar,
00198 DeletedRowToCompress_Min)));
00199
00200 keys.push_back(make_pair(BCP_string("BCP_MaxPresolveIter"),
00201 BCP_parameter(BCP_IntPar,
00202 MaxPresolveIter)));
00203 keys.push_back(make_pair(BCP_string("BCP_StrongBranchNum"),
00204 BCP_parameter(BCP_IntPar,
00205 StrongBranchNum)));
00206 keys.push_back(make_pair(BCP_string("BCP_StrongBranch_CloseToHalfNum"),
00207 BCP_parameter(BCP_IntPar,
00208 StrongBranchNum)));
00209 keys.push_back(make_pair(BCP_string("BCP_BranchingObjectComparison"),
00210 BCP_parameter(BCP_IntPar,
00211 BranchingObjectComparison)));
00212 keys.push_back(make_pair(BCP_string("BCP_ChildPreference"),
00213 BCP_parameter(BCP_IntPar,
00214 ChildPreference)));
00215
00216 keys.push_back(make_pair(BCP_string("BCP_FeasibilityTest"),
00217 BCP_parameter(BCP_IntPar,
00218 FeasibilityTest)));
00219 keys.push_back(make_pair(BCP_string("BCP_WarmstartInfo"),
00220 BCP_parameter(BCP_IntPar,
00221 WarmstartInfo)));
00222 keys.push_back(make_pair(BCP_string("BCP_InfoForCG"),
00223 BCP_parameter(BCP_IntPar,
00224 InfoForCG)));
00225 keys.push_back(make_pair(BCP_string("BCP_InfoForVG"),
00226 BCP_parameter(BCP_IntPar,
00227 InfoForVG)));
00228
00229
00230
00231
00232
00233 keys.push_back(make_pair(BCP_string("BCP_Granularity"),
00234 BCP_parameter(BCP_DoublePar,
00235 Granularity)));
00236 keys.push_back(make_pair(BCP_string("BCP_DeletedColToCompress_Frac"),
00237 BCP_parameter(BCP_DoublePar,
00238 DeletedColToCompress_Frac)));
00239 keys.push_back(make_pair(BCP_string("BCP_DeletedRowToCompress_Frac"),
00240 BCP_parameter(BCP_DoublePar,
00241 DeletedRowToCompress_Frac)));
00242 keys.push_back(make_pair(BCP_string("BCP_MaxNonDualFeasToAdd_Frac"),
00243 BCP_parameter(BCP_DoublePar,
00244 MaxNonDualFeasToAdd_Frac)));
00245 keys.push_back(make_pair(BCP_string("BCP_MaxLeftoverCutFrac"),
00246 BCP_parameter(BCP_DoublePar,
00247 MaxLeftoverCutFrac)));
00248 keys.push_back(make_pair(BCP_string("BCP_IntegerTolerance"),
00249 BCP_parameter(BCP_DoublePar,
00250 IntegerTolerance)));
00251
00252 keys.push_back(make_pair(BCP_string("BCP_FirstLP_FirstCutTimeout"),
00253 BCP_parameter(BCP_DoublePar,
00254 FirstLP_FirstCutTimeout)));
00255 keys.push_back(make_pair(BCP_string("BCP_LaterLP_FirstCutTimeout"),
00256 BCP_parameter(BCP_DoublePar,
00257 LaterLP_FirstCutTimeout)));
00258 keys.push_back(make_pair(BCP_string("BCP_FirstLP_AllCutsTimeout"),
00259 BCP_parameter(BCP_DoublePar,
00260 FirstLP_AllCutsTimeout)));
00261 keys.push_back(make_pair(BCP_string("BCP_LaterLP_AllCutsTimeout"),
00262 BCP_parameter(BCP_DoublePar,
00263 LaterLP_AllCutsTimeout)));
00264
00265 keys.push_back(make_pair(BCP_string("BCP_FirstLP_FirstVarTimeout"),
00266 BCP_parameter(BCP_DoublePar,
00267 FirstLP_FirstVarTimeout)));
00268 keys.push_back(make_pair(BCP_string("BCP_LaterLP_FirstVarTimeout"),
00269 BCP_parameter(BCP_DoublePar,
00270 LaterLP_FirstVarTimeout)));
00271 keys.push_back(make_pair(BCP_string("BCP_FirstLP_AllVarsTimeout"),
00272 BCP_parameter(BCP_DoublePar,
00273 FirstLP_AllVarsTimeout)));
00274 keys.push_back(make_pair(BCP_string("BCP_LaterLP_AllVarsTimeout"),
00275 BCP_parameter(BCP_DoublePar,
00276 LaterLP_AllVarsTimeout)));
00277 keys.push_back(make_pair(BCP_string("BCP_MaxRunTime"),
00278 BCP_parameter(BCP_DoublePar,
00279 MaxRunTime)));
00281 MaxRunTime,
00282
00283
00284
00285
00286
00287
00288 keys.push_back(make_pair(BCP_string("BCP_LogFileName"),
00289 BCP_parameter(BCP_StringPar,
00290 LogFileName)));
00291
00292
00293
00294 }
00295
00296
00297
00298 template <>
00299 void BCP_parameter_set<BCP_lp_par>::set_default_entries() {
00300
00301
00302 set_entry(BranchOnCuts, false);
00303 set_entry(CompareNewCutsToOldOnes, true);
00304 set_entry(CompareNewVarsToOldOnes, true);
00305 set_entry(DoReducedCostFixingAtZero, true);
00306 set_entry(DoReducedCostFixingAtAnything, true);
00307 set_entry(MessagePassingIsSerial, false);
00308 set_entry(ReportWhenDefaultIsExecuted, true);
00309 set_entry(NoCompressionAtFathom, false);
00310 set_entry(SendFathomedNodeDesc, true);
00311 set_entry(UseExplicitStorage, false);
00312 set_entry(Lp_DumpNodeDescCuts, false);
00313 set_entry(Lp_DumpNodeDescVars, false);
00314
00315 set_entry(LpVerb_AddedCutCount, true);
00316 set_entry(LpVerb_AddedVarCount, true);
00317 set_entry(LpVerb_ChildrenInfo, true);
00318 set_entry(LpVerb_ColumnGenerationInfo, true);
00319 set_entry(LpVerb_CutsToCutPoolCount, true);
00320 set_entry(LpVerb_VarsToVarPoolCount, true);
00321 set_entry(LpVerb_FathomInfo, true);
00322 set_entry(LpVerb_IterationCount, true);
00323 set_entry(LpVerb_RelaxedSolution, true);
00324 set_entry(LpVerb_FinalRelaxedSolution, true);
00325 set_entry(LpVerb_LpMatrixSize, true);
00326 set_entry(LpVerb_LpSolutionValue, true);
00327 set_entry(LpVerb_MatrixCompression, true);
00328 set_entry(LpVerb_NodeTime, false);
00329 set_entry(LpVerb_PresolvePositions, true);
00330 set_entry(LpVerb_PresolveResult, true);
00331 set_entry(LpVerb_ProcessedNodeIndex, true);
00332 set_entry(LpVerb_ReportCutGenTimeout, true);
00333 set_entry(LpVerb_ReportVarGenTimeout, true);
00334 set_entry(LpVerb_ReportLocalCutPoolSize, true);
00335 set_entry(LpVerb_ReportLocalVarPoolSize, true);
00336 set_entry(LpVerb_RepricingResult, true);
00337 set_entry(LpVerb_RowEffectivenessCount, true);
00338 set_entry(LpVerb_VarTightening, true);
00339 set_entry(LpVerb_StrongBranchPositions, true);
00340 set_entry(LpVerb_StrongBranchResult, true);
00341 set_entry(LpVerb_GeneratedCutCount, true);
00342 set_entry(LpVerb_GeneratedVarCount, true);
00343
00344
00345 set_entry(NiceLevel, 0);
00346
00347 set_entry(ScaleMatrix, 0);
00348
00349 set_entry(SlackCutDiscardingStrategy, BCP_DiscardSlackCutsAtNewIteration);
00350 set_entry(CutEffectiveCountBeforePool, 1000);
00351 set_entry(CutPoolCheckFrequency, 10);
00352 set_entry(VarPoolCheckFrequency, 10);
00353 set_entry(IneffectiveConstraints, BCP_IneffConstr_ZeroDualValue);
00354 set_entry(IneffectiveBeforeDelete, 1);
00355
00356 set_entry(MaxNonDualFeasToAdd_Min, 5);
00357 set_entry(MaxNonDualFeasToAdd_Max, 200);
00358
00359 set_entry(CutViolationNorm, BCP_CutViolationNorm_Plain);
00360
00361 set_entry(MaxCutsAddedPerIteration, 100000);
00362 set_entry(MaxVarsAddedPerIteration, 100000);
00363
00364 set_entry(MaxLeftoverCutNum, 10000000);
00365
00366 set_entry(DeletedColToCompress_Min, 10);
00367 set_entry(DeletedRowToCompress_Min, 10);
00368
00369 set_entry(MaxPresolveIter, 100000);
00370 set_entry(StrongBranchNum, 3);
00371 set_entry(BranchingObjectComparison, BCP_HighestLowObjval);
00372 set_entry(ChildPreference, BCP_PreferChild_LowBound);
00373
00374 set_entry(FeasibilityTest, BCP_FullTest_Feasible);
00375 set_entry(WarmstartInfo, BCP_WarmstartParent);
00376 set_entry(InfoForCG, BCP_PrimalSolution_Nonzeros);
00377 set_entry(InfoForVG, BCP_DualSolution_Full);
00378
00379
00380 set_entry(Granularity, 1e-8);
00381 set_entry(DeletedColToCompress_Frac, 0.0);
00382 set_entry(DeletedRowToCompress_Frac, 0.0);
00383 set_entry(MaxNonDualFeasToAdd_Frac, 0.05);
00384 set_entry(MaxLeftoverCutFrac, 1.0);
00385 set_entry(IntegerTolerance, 1e-5);
00386
00387 set_entry(FirstLP_FirstCutTimeout, -1.0);
00388 set_entry(LaterLP_FirstCutTimeout, -1.0);
00389 set_entry(FirstLP_AllCutsTimeout, -1.0);
00390 set_entry(LaterLP_AllCutsTimeout, -1.0);
00391
00392 set_entry(FirstLP_FirstVarTimeout, -1.0);
00393 set_entry(LaterLP_FirstVarTimeout, -1.0);
00394 set_entry(FirstLP_AllVarsTimeout, -1.0);
00395 set_entry(LaterLP_AllVarsTimeout, -1.0);
00396
00397 set_entry(MaxRunTime, 3600.0);
00398
00399
00400 set_entry(LogFileName,"");
00401 }