# NOT a param since it affects numerical stability. -r specify max nbr of pivots between a re-inversion of the matrix See set_maxpivot # Issue in pivoting: options PRICE_PARTIAL and PRICE_AUTOPARTIAL are listed at http://lpsolve.sourceforge.net/5.5/ but not in lp_solve -h #scaleloop {} [1] # integer. I don't the default for this! Syntax: -s # The set_anti_degen function specifies if special handling must be done to reduce degeneracy/cycling while solving. Setting this flag can avoid cycling, but can also increase numerical instability. The default is ANTIDEGEN_INFEASIBLE + ANTIDEGEN_STALLING + ANTIDEGEN_FIXEDVARS (37). # Leaving this at default for now. #degen use perturbations to reduce degeneracy, # can increase numerical instability See set_anti_degen #-degenc use column check to reduce degeneracy See set_anti_degen #-degend dynamic check to reduce degeneracy See set_anti_degen #-degenf anti-degen fixedvars See set_anti_degen #-degens anti-degen stalling See set_anti_degen #-degenn anti-degen numfailure See set_anti_degen #-degenl anti-degen lostfeas See set_anti_degen #-degeni anti-degen infeasible See set_anti_degen #-degenb anti-degen B&B See set_anti_degen #-degenr anti-degen Perturbation of the working RHS at refactorization See set_anti_degen #-degenp anti-degen Limit bound flips See set_anti_degen # # This *is* a parameter, but activating it on Mittelmann's instance mzzv11.mps yields a segmentation fault! # presolvecold in 0,1, def: 0 # cat. Deletes variables (mainly binary), that are dominated by others (only one can be non-zero) # likewise on miplib instance /global/home/hutter/projects/MIP_data/miplib3/cap6000.mps # # Likewise, another parameter. This one makes neos4 seem infeasible. # presolvef in 0,1, def 0 # cat. Identify implied free variables (releasing their expl. bounds) # # And another parameter, which changes the objective function and is probably bogeous! presolves in 0,1, def 0 # cat. also convert constraints to SOSes (only SOS1 handled) # # not changing the numerical constants for now (these may or may not change solution accuracy, not sure) #-trej set minimum pivot value See set_epspivot (numerical) #-epsd set minimum tolerance for reduced costs See set_epsd #-epsb set minimum tolerance for the RHS See set_epsb #-epsel set tolerance for rounding values to zero See set_epsel #-epsp set the value that is used as perturbation scalar for degenerative problems See set_epsperturb # # Numerical constants that definitely change the problem: #-e specifies the tolerance which is used to determine whether a floating point number is in fact an integer. Should be < 0.5 See set_epsint #-ga specifies the absolute MIP gap for branch-and-bound. See set_mip_gap # This specifies the absolute allowed tolerance # on the object function. Can result in faster solving times. #-gr specifies the relative MIP gap for branch-and-bound. See set_mip_gap # This specifies the relative allowed tolerance # on the object function. Can result in faster solving times. # # -noint Ignore integer restrictions # # -g # no idea what this does # -f specifies that branch-and-bound algorithm stops at first found solution # -b specify a lower bound for the objective function See set_obj_bound to the program. If close enough, may speed up the calculations. # -o specifies that branch-and-bound algorithm stops when objective value is better than value # -n specify which solution number to return See set_solutionlimit # # depth {0}[0] #set branch-and-bound depth limit. 0 means no limit. Default actually has a limit, which risks not finding the optimum, or even no sol. at all! # # bfp {"bfp_etaPFI", "bfp_LUSOL", "bfp_GLPK", NULL}[NULL] # cat. Doesn't find package. # # Removed option -s0 (no scaling, one possible value of "scaling"---with that option, lpsolve reports infeasibility for instance /global/home/hutter/projects/MIP_data/coral_2009_12/neos4.mps # Removed option sp in 0,1, default 0 # cat. # also do power scaling---with that option, lpsolve reports infeasibility for instance /global/home/hutter/projects/MIP_data/coral_2009_12/neos4.mps # Removed option se in 0,1, default 0 # cat. also do equilibration to scale to the -1..1 range (default). piv {0,1,2,3}[2] # cat. Syntax for calling: -pivX, where X in {0,1,2,3} pivf {0,1}[0] # cat. Syntax for calling this and the following: -pivf if 1, otherwise nothing. Conditional: in case of Steepest Edge, fall back to DEVEX in primal. pivm {0,1}[0] # cat. Multiple pricing. piva {0,1}[1] # cat. Temporarily use First Index if cycling is detected. pivr {0,1}[0] # cat. Adds a small randomization effect to the selected pricer. pivll {0,1}[0] # cat. Scan entering/leaving columns left rather than right. pivla {0,1}[0] # cat. Scan entering/leaving columns alternatingly left/right. See set_pivoting pivh {0,1}[0] # cat. Use Harris' primal pivot logic rather than the default. See set_pivoting pivt {0,1}[0] # cat. Use true norms for Devex and Steepest Edge initializations. See set_pivoting o {0,1}[1] # cat. Syntax for calling: -oX, where X in {0,1}. Put objective in basis. See set_obj_in_basis s {1,5}[1] # cat. Removed values: 0,2,3,4,6,7, since they all lead to infeasibility for neos4. Alleged "syntax: -s " But e.g. "-s2" works just fine. s0: No scaling, s1: Geometric scaling (default), s2: Curtis-reid scaling, s3: Scale to convergence using largest absolute value, s4: Numerical range-based scaling, s5: Scale to convergence using logarithmic mean of all values, s6: Scale based on the simple numerical range, s7: Scale quadratic si {0,1}[1] # cat. also do Integer scaling (default). presolverowcol {0,1,2,3}[0] # cat. Syntax: -presolve for 1: "presolve problem before start optimizing (rows+columns)", -presolverow for 2: only row, -presolvecol for 3: only col, nothing for 0: nothing. presolvel {0,1}[0] # cat. also eliminate linearly dependent rows presolver {0,1}[0] # cat. If the phase 1 solution process finds that a constraint is redundant then this constraint is deleted presolvek {0,1}[0] # cat. Simplification of knapsack-type constraints through addition of an extra variable, which also helps bound the OF presolveq {0,1}[0] # cat. Direct substitution of one variable in 2-element equality constraints; this requires changes to the constraint matrix presolvem {0,1}[0] # cat. Merge rows presolvefd {0,1}[0] # cat. COLFIXDUAL presolvebnd {0,1}[0] # cat. Presolve bounds presolved {0,1}[0] # cat. Presolve duals presolverowd {0,1}[0] # cat. Idenfify and delete qualifying constraints that are dominated by others, also fixes variables at a bound presolveslk {0,1}[0] # cat. IMPLIEDSLK presolveg {0,1}[0] # cat. Reduce (tighten) coef. in integer models based on GCD argument presolveb {0,1}[0] # cat. Attempt to fix binary variables at one of their bounds presolvec {0,1}[0] # cat. Attempt to reduce coefficients in binary models C {0,2,3}[0] # cat. -C0: No crash basis, -C2: Most feasible basis, -C3: Least degenerate basis simplex_type {6,10}[6] # cat., SIMPLEX_DUAL_PRIMAL (6), Phase1 Dual, Phase2 Primal (-simplexdp); SIMPLEX_DUAL_DUAL (10), Phase1 Dual, Phase2 Dual (-simplexdd). Only 2/4 values work; the first phase is always fixed to DUAL, even if you use -prim, but also with -simplexpp and -simplexpd. improve1 {0,1}[0] # cat. iterative improvement level: Running accuracy measurement of solved equations on Bx=r improve2 {0,1}[1] # cat. iterative improvement level: Improve initial dual feasibility by bound flips (default) improve4 {0,1}[1] # cat. iterative improvement level: Low-cost accuracy monitoring in the dual (default) improve8 {0,1}[0] # cat. iterative improvement level: check for primal/dual feasibility at the node level bfirst {0,1,2}[2] # cat. during branch-and-bound, take -cc (0) the ceiling branch first; -cf (1) the floor branch first; -ca (2) the algorithm chooses branch B {0,1,2,3,4,5,6}[5] # cat. specify branch-and-bound rule. Default specified in -h is NOT the one used; the one listed online is right. Syntax: -B0: Select Lowest indexed non-integer column, -B1: Selection based on distance from the current bounds, -B2: Selection based on the largest current bound, -B3: Selection based on largest fractional value, -B4: Simple, unweighted pseudo-cost of a variable, -B5: This is an extended pseudo-costing strategy based on minimizing, the number of integer infeasibilities, -B6: This is an extended pseudo-costing strategy based on maximizing the normal pseudo-cost divided by the number of infeasibilities. Similar to (the reciprocal of) a cost/benefit ratio Bw {0,1}[0] # cat. WeightReverse branch-and-bound Bb {0,1}[0] # cat. BranchReverse branch-and-bound Bg {0,1}[1] # cat. Greedy branch-and-bound Bp {0,1}[0] # cat. PseudoCost branch-and-bound Bf {0,1}[0] # cat. DepthFirst branch-and-bound Br {0,1}[0] # cat. Randomize branch-and-bound BG {0,1}[0] # cat. GubMode branch-and-bound Bd {0,1}[1] # cat. Dynamic branch-and-bound Bs {0,1}[0] # cat. RestartMode branch-and-bound BB {0,1}[0] # cat. BreadthFirst branch-and-bound Bo {0,1}[0] # cat. Order variables to improve branch-and-bound performance Bc {0,1}[1] # cat. Do bound tightening during B&B based of reduced cost info Bi {0,1}[0] # cat. Initialize pseudo-costs by strong branching Conditionals: pivf|piv in {3} Forbidden: {presolverowd=1,presolves=1} {C=2,presolveslk=1} {C=3,presolveslk=1,o=0,pivt=1,pivla=1,piv=0} {C=3,presolveslk=1,pivt=1,piv=3} {C=2,presolveslk=1,pivla=1,s=5} {si=1,piv=0} {Bc=1,B=1,Bg=1,piv=3,bfirst=1} {C=3,s=5} {si=1,presolvef=1,improve1=1,C=2,improve2=1,s=5} {presolverowcol=2,o=0} {presolverowcol=1,C=2,o=0,improve1=1,pivla=1,piv=3}