Changeset 2470


Ignore:
Timestamp:
May 3, 2019 6:46:09 AM (3 weeks ago)
Author:
stefan
Message:

sync with trunk

Location:
stable/1.17
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • stable/1.17

    • Property svn:mergeinfo changed
      /trunkmerged: 2469
  • stable/1.17/Clp

  • stable/1.17/Clp/src

  • stable/1.17/Clp/src/CbcOrClpParam.cpp

    r2468 r2470  
    15631563    p.setDoubleValue(0.0);
    15641564    p.setLonghelp(
    1565       "0.0 off - otherwise variables with costs >= this are treated as artificials and fixed to lower bound in feasibility pump");
     1565      "A value of 0.0 means off. Otherwise, variables with costs >= this are treated as artificial variables and fixed to lower bound in feasibility pump.");
    15661566    parameters.push_back(p);
    15671567  }
     
    17421742    p.setLonghelp(
    17431743      "This heuristic does branch and cut on the problem given by \
    1744 fixing variables which have same value in two or more solutions. \
     1744fixing variables which have the same value in two or more solutions. \
    17451745It obviously only tries after two or more solutions. "
    17461746      HEURISTICS_LONGHELP);
     
    19331933#if CLP_MULTIPLE_FACTORIZATIONS > 0
    19341934  {
    1935     CbcOrClpParam p("dense!Threshold", "Whether to use dense factorization",
     1935    CbcOrClpParam p("dense!Threshold", "Threshold for using dense factorization",
    19361936      -1, 10000, CBC_PARAM_INT_DENSE, 1);
    19371937    p.setLonghelp(
     
    19441944#ifdef COIN_HAS_CBC
    19451945  {
    1946     CbcOrClpParam p("depth!MiniBab", "Depth at which to try mini BAB",
     1946    CbcOrClpParam p("depth!MiniBab", "Depth at which to try mini branch-and-bound",
    19471947      -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_DEPTHMINIBAB);
    19481948
     
    20622062
    20632063    p.setLonghelp(
    2064       "If >0 then do up to this many solves.  Last digit is ignored \
    2065 and used for extra options - \
    2066          \n\t1-3 allow fixing of satisfied integers (but not at bound) \
    2067          \n\t1 switch off above for that dive if goes infeasible \
    2068          \n\t2 switch off above permanently if goes infeasible");
     2064      "If >0 then do up to this many solves. However, the last digit is ignored \
     2065and used for extra options: \
     2066      1-3 enables fixing of satisfied integer variables (but not at bound), \
     2067      where 1 switches this off for that dive if the dive goes infeasible, \
     2068      and 2 switches it off permanently if the dive goes infeasible.");
    20692069    p.setIntValue(100);
    20702070    parameters.push_back(p);
     
    22842284
    22852285    p.setLonghelp(
    2286       "Strategy for extra strong branching \n\
    2287 \n\t0 - normal\n\
    2288 \n\twhen to do all fractional\n\
    2289 \n\t1 - root node\n\
    2290 \n\t2 - depth less than modifier\n\
    2291 \n\t4 - if objective == best possible\n\
    2292 \n\t6 - as 2+4\n\
    2293 \n\twhen to do all including satisfied\n\
    2294 \n\t10 - root node etc.\n\
    2295 \n\tIf >=100 then do when depth <= strategy/100 (otherwise 5)");
     2286      "Strategy for extra strong branching. \
     22870 is normal strong branching. \
     22881, 2, 4, and 6 does strong branching on all fractional variables if \
     2289at the root node (1), \
     2290at depth less than modifier (2), \
     2291objective equals best possible (4), or \
     2292at depth less than modifier and objective equals best possible (6). \
     229311, 12, 14, and 16 are like 1, 2, 4, and 6, respecitively, but do strong branching on all integer (incl. non-fractional) variables. \
     2294Values >= 100 are used to specify a depth limit (value/100), otherwise 5 is used. \
     2295If the values >= 100, then above rules are applied to value%100.");
    22962296    p.setIntValue(0);
    22972297    parameters.push_back(p);
     
    23632363#ifndef ABC_INHERIT
    23642364      "The default is to use the normal CoinFactorization, but \
    2365 other choices are a dense one, osl's or one designed for small problems."
     2365other choices are a dense one, OSL's, or one designed for small problems."
    23662366#else
    23672367      "Normally the default is to use the normal CoinFactorization, but \
    2368 other choices are a dense one, osl's or one designed for small problems. \
     2368other choices are a dense one, OSL's, or one designed for small problems. \
    23692369However if at Aboca then the default is CoinAbcFactorization and other choices are \
    23702370a dense one, one designed for small problems or if enabled a long factorization."
     
    24302430    p.setDoubleValue(0.5);
    24312431    p.setLonghelp(
    2432       "After a pass in feasibility pump, variables which have not moved \
    2433 about are fixed and if the preprocessed model is small enough a few nodes \
    2434 of branch and bound are done on reduced problem.  Small problem has to be \
    2435 less than this fraction of original.");
     2432      "After a pass in the feasibility pump, variables which have not moved \
     2433about are fixed and if the preprocessed model is smaller than this fraction of the original problem, \
     2434a few nodes of branch and bound are done on the reduced problem.");
    24362435    parameters.push_back(p);
    24372436  }
     
    25482547    p.setIntValue(0);
    25492548    p.setLonghelp(
    2550       "1 says stop heuristic immediately allowable gap reached. \
    2551 Others are for feasibility pump - \
     2549      "Value 1 stops heuristics immediately if the allowable gap has been reached. \
     2550Other values are for the feasibility pump - \
    255225512 says do exact number of passes given, \
    2553 4 only applies if initial cutoff given and says relax after 50 passes, \
    2554 while 8 will adapt cutoff rhs after first solution if it looks as if code is stalling.");
     25524 only applies if an initial cutoff has been given and says relax after 50 passes, \
     2553while 8 will adapt the cutoff rhs after the first solution if it looks as if the code is stalling.");
    25552554    parameters.push_back(p);
    25562555  }
     
    26362635  }
    26372636  {
    2638     CbcOrClpParam p("KKT", "Whether to use KKT factorization",
     2637    CbcOrClpParam p("KKT", "Whether to use KKT factorization in barrier",
    26392638      "off", CLP_PARAM_STR_KKT, 7, 1);
    26402639    p.append("on");
     
    26812680So you don't use messy constraints generated by Gomory etc. \
    26822681A variant is to allow non messy cuts e.g. clique cuts. \
    2683 So 'only' does this while clean also allows integral valued cuts.  \
    2684 'End' is recommended which waits until other cuts have finished and then \
     2682So 'only' does this while 'clean' also allows integral valued cuts.  \
     2683'End' is recommended and waits until other cuts have finished before it \
    26852684does a few passes. \
    26862685The length options for gomory cuts are used.");
     
    27042703    p.append("bothinstead");
    27052704    p.setLonghelp(
    2706       "This is a lagrangean relaxation for TwoMir cuts.  See \
     2705      "This is a Lagrangean relaxation for TwoMir cuts.  See \
    27072706  lagomoryCuts for description of options.");
    27082707    parameters.push_back(p);
     
    30713070    p.setLonghelp(
    30723071      "This switches on Orbital branching. \
    3073 On just adds orbital, strong tries extra fixing in strong branching");
     3072Value 'on' just adds orbital, 'strong' tries extra fixing in strong branching.");
    30743073    parameters.push_back(p);
    30753074  }
     
    33423341 algorithm where you first get feasible then optimal.  So Clp is minimizing this weight times\
    33433342 the sum of primal infeasibilities plus the true objective function (in minimization sense).\
    3344   Too high a value may mean more iterations, while too low a bound means\
    3345  the code may go all the way and then have to increase the weight in order to get feasible.\
    3346   OSL had a heuristic to\
    3347  adjust bounds, maybe we need that here.");
    3348     parameters.push_back(p);
    3349   }
    3350   {
    3351     CbcOrClpParam p("psi", "Two-dimension pricing factor for Positive edge",
     3343  Too high a value may mean more iterations, while too low a value means\
     3344 the algorithm may iterate into the wrong directory for long and then has to increase the weight in order to get feasible."); // OSL had a heuristic to adjust bounds, maybe we need that here.
     3345    parameters.push_back(p);
     3346  }
     3347  {
     3348    CbcOrClpParam p("psi", "Two-dimension pricing factor for Positive Edge criterion",
    33523349      -1.1, 1.1, CLP_PARAM_DBL_PSI);
    33533350
     
    33563353      "The Positive Edge criterion has been added to \
    33573354select incoming variables to try and avoid degenerate moves. \
    3358 Variables not in promising set have their infeasibility weight multiplied by psi \
     3355Variables not in the promising set have their infeasibility weight multiplied by psi, \
    33593356so 0.01 would mean that if there were any promising variables, then they would always be chosen, \
    3360 while 1.0 effectively switches algorithm off. \
    3361 There are two ways of switching on this feature.  One way is to set psi positive and then \
    3362 the Positive Edge criterion will be used for Primal and Dual.  The other way is to select pesteep \
    3363 in dualpivot choice (for example), then the absolute value of psi is used - default 0.5. \
    3364 Until this settles down it is only implemented in clp. \
     3357while 1.0 effectively switches the algorithm off. \
     3358There are two ways of switching this feature on.  One way is to set psi to a positive value and then \
     3359the Positive Edge criterion will be used for both primal and dual simplex.  The other way is to select PEsteepest \
     3360in dualpivot choice (for example), then the absolute value of psi is used. \
    33653361Code donated by Jeremy Omer.  See \
    3366 Towhidi, M., Desrosiers, J., Soumis, F., The positive edge criterion within COIN-OR’s CLP. and \
    3367 Omer, J., Towhidi, M., Soumis, F., The positive edge pricing rule for the dual simplex.");
     3362Towhidi, M., Desrosiers, J., Soumis, F., The positive edge criterion within COIN-OR's CLP; \
     3363Omer, J., Towhidi, M., Soumis, F., The positive edge pricing rule for the dual simplex.");  // Until this settles down it is only implemented in CLP.
    33683364    parameters.push_back(p);
    33693365  }
     
    34673463    p.setDoubleValue(0.0);
    34683464    p.setLonghelp(
    3469       "0.0 off - otherwise add a constraint forcing objective below this value\
     3465      "A value of 0.0 means off. Otherwise, add a constraint forcing objective below this value\
    34703466 in feasibility pump");
    34713467    parameters.push_back(p);
     
    34763472    p.setDoubleValue(0.0);
    34773473    p.setLonghelp(
    3478       "0.0 off - otherwise use as absolute increment to cutoff \
     3474      "A value of 0.0 means off. Otherwise use as absolute increment to cutoff \
    34793475when solution found in feasibility pump");
    34803476    parameters.push_back(p);
     
    37813777#if CLP_MULTIPLE_FACTORIZATIONS > 0
    37823778  {
    3783     CbcOrClpParam p("small!Factorization", "Whether to use small factorization",
     3779    CbcOrClpParam p("small!Factorization", "Threshold for using small factorization",
    37843780      -1, 10000, CBC_PARAM_INT_SMALLFACT, 1);
    37853781    p.setLonghelp(
     
    38343830     p.append("orderlow");
    38353831     p.setLonghelp(
    3836        "This sets priorities for SOS.  The first two just set priority \
    3837     relative to integers.  Orderhigh gives first set highest priority and integers \
    3838     a low priority.  Orderlow gives integers high priority then SOS in order.");
     3832       "This sets priorities for SOS.  Values 'high' and 'low' just set a priority \
     3833    relative to the for integer variables.  Value 'orderhigh' gives first highest priority to the first SOS and integer variables \
     3834    a low priority.  Value 'orderlow' gives integer variables a high priority then SOS in order.");
    38393835    parameters.push_back(p);
    38403836  }
     
    39313927    p.setLonghelp(
    39323928      "Normally Presolve gets rid of 'free' variables when there are no more than 3 \
    3933  variables in column.  If you increase this the number of rows may decrease but number of \
    3934  elements may increase.");
     3929 coefficients in a row.  If you increase this, the number of rows may decrease but the number of \
     3930 coefficients may increase.");
    39353931    parameters.push_back(p);
    39363932  }
     
    39963992#ifdef COIN_HAS_CBC
    39973993  {
    3998     CbcOrClpParam p("tune!PreProcess", "Dubious tuning parameters",
     3994    CbcOrClpParam p("tune!PreProcess", "Dubious tuning parameters for preprocessing",
    39993995      0, COIN_INT_MAX, CLP_PARAM_INT_PROCESSTUNE, 1);
    40003996    p.setLonghelp(
Note: See TracChangeset for help on using the changeset viewer.