/home/coin/SVN-release/OS-2.2.0/Bcp/src/LP/BCP_lp_param.cpp

Go to the documentation of this file.
00001 // Copyright (C) 2000, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
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     // Create the list of keywords for parameter file reading
00017     //-------------------------------------------------------------------------
00018     // CharPar
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     // BoolArrayPar
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     //    keys.push_back(make_pair(BCP_string("BCP_"),
00140     //                        BCP_parameter(BCP_CharPar, 
00141     //                                      )));
00142 
00143     //-------------------------------------------------------------------------
00144     // IntPar
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     //    keys.push_back(make_pair(BCP_string("BCP_"),
00229     //                        BCP_parameter(BCP_IntPar, 
00230     //                                      )));
00231     //--------------------------------------------------------------------------
00232     // DoublePar
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     //    keys.push_back(make_pair(BCP_string("BCP_"),
00282     //                        BCP_parameter(BCP_DoublePar, 
00283     //                                      )));
00284 
00285     //-------------------------------------------------------------------------
00286     // StringPar
00287     keys.push_back(make_pair(BCP_string("BCP_LogFileName"),
00288                              BCP_parameter(BCP_StringPar, 
00289                                            LogFileName)));
00290     //    keys.push_back(make_pair(BCP_string("BCP_"),
00291     //                      BCP_parameter(BCP_StringPar, 
00292     //                                    )));
00293 }
00294 
00295 //#############################################################################
00296 
00297 template <>
00298 void BCP_parameter_set<BCP_lp_par>::set_default_entries() {
00299     //-------------------------------------------------------------------------
00300     // CharPar
00301     set_entry(BranchOnCuts, false);
00302     set_entry(CompareNewCutsToOldOnes, true);
00303     set_entry(CompareNewVarsToOldOnes, true);
00304     set_entry(DoReducedCostFixingAtZero, true);
00305     set_entry(DoReducedCostFixingAtAnything, true);
00306     set_entry(MessagePassingIsSerial, false);
00307     set_entry(ReportWhenDefaultIsExecuted, true);
00308     set_entry(NoCompressionAtFathom, false);
00309     set_entry(SendFathomedNodeDesc, true);
00310     set_entry(UseExplicitStorage, false);
00311     set_entry(Lp_DumpNodeDescCuts, false);
00312     set_entry(Lp_DumpNodeDescVars, false);
00313     //-------------------------------------------------------------------------
00314     set_entry(LpVerb_AddedCutCount, true);
00315     set_entry(LpVerb_AddedVarCount, true);
00316     set_entry(LpVerb_ChildrenInfo, true);
00317     set_entry(LpVerb_ColumnGenerationInfo, true);
00318     set_entry(LpVerb_CutsToCutPoolCount, true);
00319     set_entry(LpVerb_VarsToVarPoolCount, true);
00320     set_entry(LpVerb_FathomInfo, true);
00321     set_entry(LpVerb_IterationCount, true);
00322     set_entry(LpVerb_RelaxedSolution, true);
00323     set_entry(LpVerb_FinalRelaxedSolution, true);
00324     set_entry(LpVerb_LpMatrixSize, true);
00325     set_entry(LpVerb_LpSolutionValue, true);
00326     set_entry(LpVerb_MatrixCompression, true);
00327     set_entry(LpVerb_NodeTime, false);
00328     set_entry(LpVerb_PresolvePositions, true);
00329     set_entry(LpVerb_PresolveResult, true);
00330     set_entry(LpVerb_ProcessedNodeIndex, true);
00331     set_entry(LpVerb_ReportCutGenTimeout, true);
00332     set_entry(LpVerb_ReportVarGenTimeout, true);
00333     set_entry(LpVerb_ReportLocalCutPoolSize, true);
00334     set_entry(LpVerb_ReportLocalVarPoolSize, true);
00335     set_entry(LpVerb_RepricingResult, true);
00336     set_entry(LpVerb_RowEffectivenessCount, true);
00337     set_entry(LpVerb_VarTightening, true);
00338     set_entry(LpVerb_StrongBranchPositions, true);
00339     set_entry(LpVerb_StrongBranchResult, true);
00340     set_entry(LpVerb_GeneratedCutCount, true);
00341     set_entry(LpVerb_GeneratedVarCount, true);
00342     //-------------------------------------------------------------------------
00343     // IntPar
00344     set_entry(NiceLevel, 0);
00345 
00346     set_entry(ScaleMatrix, 0);
00347 
00348     set_entry(SlackCutDiscardingStrategy, BCP_DiscardSlackCutsAtNewIteration);
00349     set_entry(CutEffectiveCountBeforePool, 1000);
00350     set_entry(CutPoolCheckFrequency, 10);
00351     set_entry(VarPoolCheckFrequency, 10);
00352     set_entry(IneffectiveConstraints, BCP_IneffConstr_ZeroDualValue);
00353     set_entry(IneffectiveBeforeDelete, 1);
00354 
00355     set_entry(MaxNonDualFeasToAdd_Min, 5);
00356     set_entry(MaxNonDualFeasToAdd_Max, 200);
00357 
00358     set_entry(CutViolationNorm, BCP_CutViolationNorm_Plain);
00359 
00360     set_entry(MaxCutsAddedPerIteration, 100000);
00361     set_entry(MaxVarsAddedPerIteration, 100000);
00362 
00363     set_entry(MaxLeftoverCutNum, 10000000); 
00364 
00365     set_entry(DeletedColToCompress_Min, 10);
00366     set_entry(DeletedRowToCompress_Min, 10);
00367 
00368     set_entry(MaxPresolveIter, 100000);
00369     set_entry(StrongBranchNum, 3);
00370     set_entry(BranchingObjectComparison, BCP_HighestLowObjval);
00371     set_entry(ChildPreference, BCP_PreferChild_LowBound);
00372 
00373     set_entry(FeasibilityTest, BCP_FullTest_Feasible);
00374     set_entry(WarmstartInfo, BCP_WarmstartParent);
00375     set_entry(InfoForCG, BCP_PrimalSolution_Nonzeros);
00376     set_entry(InfoForVG, BCP_DualSolution_Full);
00377     //-------------------------------------------------------------------------
00378     // DoublePar
00379     set_entry(Granularity, 1e-8);
00380     set_entry(DeletedColToCompress_Frac, 0.0);
00381     set_entry(DeletedRowToCompress_Frac, 0.0);
00382     set_entry(MaxNonDualFeasToAdd_Frac, 0.05);
00383     set_entry(MaxLeftoverCutFrac, 1.0);
00384     set_entry(IntegerTolerance, 1e-5);
00385 
00386     set_entry(FirstLP_FirstCutTimeout, -1.0);
00387     set_entry(LaterLP_FirstCutTimeout, -1.0);
00388     set_entry(FirstLP_AllCutsTimeout, -1.0);
00389     set_entry(LaterLP_AllCutsTimeout, -1.0);
00390 
00391     set_entry(FirstLP_FirstVarTimeout, -1.0);
00392     set_entry(LaterLP_FirstVarTimeout, -1.0);
00393     set_entry(FirstLP_AllVarsTimeout, -1.0);
00394     set_entry(LaterLP_AllVarsTimeout, -1.0);
00395 
00396     set_entry(MaxRunTime, 3600.0); // one hour
00397     //-------------------------------------------------------------------------
00398     // StringPar
00399     set_entry(LogFileName,"");
00400 }

Generated on Thu Aug 5 03:02:52 2010 by  doxygen 1.4.7