/home/coin/SVN-release/OS-2.4.0/Bcp/examples/MaxCut/LP/MC_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 "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    // Create the list of keywords for parameter file reading
00013    //--------------------------------------------------------------------------
00014    // CharPar
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 //    keys.push_back(make_pair(BCP_string("MC_"),
00031 //                          BCP_parameter(BCP_CharPar,
00032 //                                        )));
00033 
00034    //--------------------------------------------------------------------------
00035    // IntPar
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 //    keys.push_back(make_pair(BCP_string("MC_"),
00116 //                          BCP_parameter(BCP_IntPar,
00117 //                                        )));
00118    //--------------------------------------------------------------------------
00119    // DoublePar
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 //    keys.push_back(make_pair(BCP_string("MC_"),
00176 //                          BCP_parameter(BCP_DoublePar,
00177 //                                        )));
00178 
00179    //--------------------------------------------------------------------------
00180    // StringPar
00181 //    keys.push_back(make_pair(BCP_string("MC_"),
00182 //                          BCP_parameter(BCP_StringPar,
00183 //                                        )));
00184    //--------------------------------------------------------------------------
00185    // StringArrayPar
00186 //    keys.push_back(make_pair(BCP_string("MC_"),
00187 //                          BCP_parameter(BCP_StringArrayPar,
00188 //                                        )));
00189    //--------------------------------------------------------------------------
00190    // BooleanListPar
00191 //    keys.push_back(make_pair(BCP_string("MC_LpVerbosity_PrunedNodeInfo"),
00192 //                          BCP_parameter(BCP_BooleanListPar,
00193 //                                        Verbosity,
00194 //                                        BCP_LpVerb_PrunedNodeInfo)));
00195 }
00196 
00197 //#############################################################################
00198 
00199 template <>
00200 void BCP_parameter_set<MC_lp_par>::set_default_entries(){
00201    //--------------------------------------------------------------------------
00202    // CharPar
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    // IntPar
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); // no this kind of tailoff
00221    set_entry(TailoffLbAbsMinItcount, -1);  // no this kind of tailoff
00222    set_entry(TailoffLbRelMinItcount, -1);  // no this kind of tailoff
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    // DoublePar
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    // StringPar
00261    //--------------------------------------------------------------------------
00262    // StringArrayPar
00263    //--------------------------------------------------------------------------
00264    // BooleanListPar
00265 }

Generated on Thu Sep 22 03:05:51 2011 by  doxygen 1.4.7