Changeset 2469
 Timestamp:
 May 3, 2019 5:36:37 AM (18 months ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/Clp/src/CbcOrClpParam.cpp
r2467 r2469 1563 1563 p.setDoubleValue(0.0); 1564 1564 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."); 1566 1566 parameters.push_back(p); 1567 1567 } … … 1742 1742 p.setLonghelp( 1743 1743 "This heuristic does branch and cut on the problem given by \ 1744 fixing variables which have same value in two or more solutions. \1744 fixing variables which have the same value in two or more solutions. \ 1745 1745 It obviously only tries after two or more solutions. " 1746 1746 HEURISTICS_LONGHELP); … … 1933 1933 #if CLP_MULTIPLE_FACTORIZATIONS > 0 1934 1934 { 1935 CbcOrClpParam p("dense!Threshold", " Whether to usedense factorization",1935 CbcOrClpParam p("dense!Threshold", "Threshold for using dense factorization", 1936 1936 1, 10000, CBC_PARAM_INT_DENSE, 1); 1937 1937 p.setLonghelp( … … 1944 1944 #ifdef COIN_HAS_CBC 1945 1945 { 1946 CbcOrClpParam p("depth!MiniBab", "Depth at which to try mini BAB",1946 CbcOrClpParam p("depth!MiniBab", "Depth at which to try mini branchandbound", 1947 1947 COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_DEPTHMINIBAB); 1948 1948 … … 2062 2062 2063 2063 p.setLonghelp( 2064 "If >0 then do up to this many solves. Last digit is ignored \2065 and used for extra options \2066 \n\t13 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 \ 2065 and used for extra options: \ 2066 13 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."); 2069 2069 p.setIntValue(100); 2070 2070 parameters.push_back(p); … … 2284 2284 2285 2285 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. \ 2287 0 is normal strong branching. \ 2288 1, 2, 4, and 6 does strong branching on all fractional variables if \ 2289 at the root node (1), \ 2290 at depth less than modifier (2), \ 2291 objective equals best possible (4), or \ 2292 at depth less than modifier and objective equals best possible (6). \ 2293 11, 12, 14, and 16 are like 1, 2, 4, and 6, respecitively, but do strong branching on all integer (incl. nonfractional) variables. \ 2294 Values >= 100 are used to specify a depth limit (value/100), otherwise 5 is used. \ 2295 If the values >= 100, then above rules are applied to value%100."); 2296 2296 p.setIntValue(0); 2297 2297 parameters.push_back(p); … … 2363 2363 #ifndef ABC_INHERIT 2364 2364 "The default is to use the normal CoinFactorization, but \ 2365 other choices are a dense one, osl'sor one designed for small problems."2365 other choices are a dense one, OSL's, or one designed for small problems." 2366 2366 #else 2367 2367 "Normally the default is to use the normal CoinFactorization, but \ 2368 other choices are a dense one, osl'sor one designed for small problems. \2368 other choices are a dense one, OSL's, or one designed for small problems. \ 2369 2369 However if at Aboca then the default is CoinAbcFactorization and other choices are \ 2370 2370 a dense one, one designed for small problems or if enabled a long factorization." … … 2430 2430 p.setDoubleValue(0.5); 2431 2431 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 \ 2433 about are fixed and if the preprocessed model is smaller than this fraction of the original problem, \ 2434 a few nodes of branch and bound are done on the reduced problem."); 2436 2435 parameters.push_back(p); 2437 2436 } … … 2548 2547 p.setIntValue(0); 2549 2548 p.setLonghelp( 2550 " 1 says stop heuristic immediately allowable gapreached. \2551 Other s are forfeasibility pump  \2549 "Value 1 stops heuristics immediately if the allowable gap has been reached. \ 2550 Other values are for the feasibility pump  \ 2552 2551 2 says do exact number of passes given, \ 2553 4 only applies if initial cutoffgiven and says relax after 50 passes, \2554 while 8 will adapt cutoff rhs after first solution if it looks as ifcode is stalling.");2552 4 only applies if an initial cutoff has been given and says relax after 50 passes, \ 2553 while 8 will adapt the cutoff rhs after the first solution if it looks as if the code is stalling."); 2555 2554 parameters.push_back(p); 2556 2555 } … … 2636 2635 } 2637 2636 { 2638 CbcOrClpParam p("KKT", "Whether to use KKT factorization ",2637 CbcOrClpParam p("KKT", "Whether to use KKT factorization in barrier", 2639 2638 "off", CLP_PARAM_STR_KKT, 7, 1); 2640 2639 p.append("on"); … … 2681 2680 So you don't use messy constraints generated by Gomory etc. \ 2682 2681 A variant is to allow non messy cuts e.g. clique cuts. \ 2683 So 'only' does this while cleanalso allows integral valued cuts. \2684 'End' is recommended which waits until other cuts have finished and then\2682 So 'only' does this while 'clean' also allows integral valued cuts. \ 2683 'End' is recommended and waits until other cuts have finished before it \ 2685 2684 does a few passes. \ 2686 2685 The length options for gomory cuts are used."); … … 2704 2703 p.append("bothinstead"); 2705 2704 p.setLonghelp( 2706 "This is a lagrangean relaxation for TwoMir cuts. See \2705 "This is a Lagrangean relaxation for TwoMir cuts. See \ 2707 2706 lagomoryCuts for description of options."); 2708 2707 parameters.push_back(p); … … 3071 3070 p.setLonghelp( 3072 3071 "This switches on Orbital branching. \ 3073 On just adds orbital, strong tries extra fixing in strong branching");3072 Value 'on' just adds orbital, 'strong' tries extra fixing in strong branching."); 3074 3073 parameters.push_back(p); 3075 3074 } … … 3342 3341 algorithm where you first get feasible then optimal. So Clp is minimizing this weight times\ 3343 3342 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", "Twodimension 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", "Twodimension pricing factor for Positive Edge criterion", 3352 3349 1.1, 1.1, CLP_PARAM_DBL_PSI); 3353 3350 … … 3356 3353 "The Positive Edge criterion has been added to \ 3357 3354 select incoming variables to try and avoid degenerate moves. \ 3358 Variables not in promising set have their infeasibility weight multiplied by psi\3355 Variables not in the promising set have their infeasibility weight multiplied by psi, \ 3359 3356 so 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. \ 3357 while 1.0 effectively switches the algorithm off. \ 3358 There are two ways of switching this feature on. One way is to set psi to a positive value and then \ 3359 the Positive Edge criterion will be used for both primal and dual simplex. The other way is to select PEsteepest \ 3360 in dualpivot choice (for example), then the absolute value of psi is used. \ 3365 3361 Code donated by Jeremy Omer. See \ 3366 Towhidi, M., Desrosiers, J., Soumis, F., The positive edge criterion within COINOR âs CLP. and\3367 Omer, J., Towhidi, M., Soumis, F., The positive edge pricing rule for the dual simplex."); 3362 Towhidi, M., Desrosiers, J., Soumis, F., The positive edge criterion within COINOR's CLP; \ 3363 Omer, J., Towhidi, M., Soumis, F., The positive edge pricing rule for the dual simplex."); // Until this settles down it is only implemented in CLP. 3368 3364 parameters.push_back(p); 3369 3365 } … … 3467 3463 p.setDoubleValue(0.0); 3468 3464 p.setLonghelp( 3469 " 0.0 off  otherwiseadd a constraint forcing objective below this value\3465 "A value of 0.0 means off. Otherwise, add a constraint forcing objective below this value\ 3470 3466 in feasibility pump"); 3471 3467 parameters.push_back(p); … … 3476 3472 p.setDoubleValue(0.0); 3477 3473 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 \ 3479 3475 when solution found in feasibility pump"); 3480 3476 parameters.push_back(p); … … 3781 3777 #if CLP_MULTIPLE_FACTORIZATIONS > 0 3782 3778 { 3783 CbcOrClpParam p("small!Factorization", " Whether to usesmall factorization",3779 CbcOrClpParam p("small!Factorization", "Threshold for using small factorization", 3784 3780 1, 10000, CBC_PARAM_INT_SMALLFACT, 1); 3785 3781 p.setLonghelp( … … 3834 3830 p.append("orderlow"); 3835 3831 p.setLonghelp( 3836 "This sets priorities for SOS. The first two just setpriority \3837 relative to integers. Orderhigh gives first set highest priority and integers \3838 a low priority. Orderlow gives integershigh 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."); 3839 3835 parameters.push_back(p); 3840 3836 } … … 3931 3927 p.setLonghelp( 3932 3928 "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 butnumber 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."); 3935 3931 parameters.push_back(p); 3936 3932 } … … 3996 3992 #ifdef COIN_HAS_CBC 3997 3993 { 3998 CbcOrClpParam p("tune!PreProcess", "Dubious tuning parameters ",3994 CbcOrClpParam p("tune!PreProcess", "Dubious tuning parameters for preprocessing", 3999 3995 0, COIN_INT_MAX, CLP_PARAM_INT_PROCESSTUNE, 1); 4000 3996 p.setLonghelp(
Note: See TracChangeset
for help on using the changeset viewer.