Provided by: lp-solve_5.5.2.5-2build2_amd64 bug

NAME

       lp_solve - a mixed integer linear programming (MILP) solver

SYNOPSIS

       lp_solve [options] [input file]

DESCRIPTION

       lp_solve  solves  mixed integer linear programming problems. The program accepts models of
       problems in various different formats (including custom formats through XLIs) and attempts
       to  solve  them.  There are a large number of different options which can be used to alter
       the solving process to improve performance or get more accurate results.

   lp file format
       The lp file format is a simple, human readable file format for linear programming  models.
       It is the default format used by lp_solve.

       The  format  consists  of  series  of  statements,  each  ending in a semicolon. The first
       statement is always the  objective  function,  followed  by  any  number  of  constraints,
       followed by any number of declarations.

       The  objective  function consists of an expression to be optimized, optionally prefixed by
       max: or min: to specify which direction to optimize. The default is to maximize.

       Each constraint consists of  a  relational  expression,  optionally  prefixed  by  a  name
       followed  by a colon. The expression must contain at least one relational operator (<, <=,
       =, =>, >).  You can specify ranges two operators at once (e.g. 2 < x < 4) instead  of  two
       separate constraints.

       Declarations can be one of:

       int var1 [, var2]... ;
              Marks the variables as integers.

       bin var1 [, var2]... ;
              Marks the variables as binary (can only take 0 or 1).

       sec var1 [, var2]... ;
              Marks the variables as semi-continuous. These variables can always take the value 0
              even if it is outside the variable's range.

       free var1 [, var2]... ;
              Marks the variables as free. These variables have  no  lower  bound,  unlike  other
              variables which have a default lower bound of 0.

       sos [name:] var1 [, var2]... [< sostype];
              Marks  the  variables  as part of a special ordered set (SOS). Out of the variables
              listed, only one can be non-zero at once. If sostype is specified, then up to  that
              number  of variables can be non-zero as long as they are all adjacent to each other
              (e.g. for an sostype of 2, var1 and var2 could be non-zero, but not var1 and var3).

       Both C style comments (/* comment here */) and C++ style comments (// comment until end of
       line) can be used anywhere in the file.

OPTIONS

   General options
       -wafter
              Writes  the  model  after  solving it (normally any model conversions are processed
              before solving). This is useful if presolving is used to simplify the model.

       -parse_only
              Parse the input model, but stop before solving it. This  can  be  used  to  convert
              models between formats without solving them.

       -timeout sec
              Timeout if no solution has be found after sec seconds.

       -nonames
              Ignore  variable  and  constraint  names  in  the  input model (this is the same as
              combining both -norownames -nocolnames).

       -norownames
              Ignore constraint names in the input model.

       -nocolnames
              Ignore variable names in the input model.

       -min   Minimizes the LP problem, overriding the setting in the input model.

       -max   Maximizes the LP problem, overriding the setting in the input model.

   Built-in model languages
       -lp    Read the model from a file in LP format. This the the default.

       -mps   Read the model from a file in 'fixed width' MPS format.

       -fmps  Read the model from a file in 'free' MPS format. This is the same  as  -mps  except
              that  fields  are  separated  by  a  number  of blanks instead of starting at fixed
              columns.

       -wlp filename
              Converts the input model to LP format and writes it to the a file.

       -wmps filename
              Converts the input model to 'fixed width' MPS format and writes it to a file.

       -wfmps filename
              Converts the input model to 'free' MPS format and writes it to a file.

   External language interface (XLI)
       -rxli xliname filename
              Read the model using an external language interface (XLI).  xliname  specifies  the
              path to the shared library containing the XLI, and is searched for according to the
              normal library search rules in ld.so(8) with the addition that the library filename
              is prefixed with lib and suffixed with .so if necessary.

       -rxlidata datafilename
              Provides a file containing extra data used by the reading XLI library.

       -rxliopt options
              Extra options to pass to the reading XLI library.

       -wxli xliname filename
              Converts the input model to the format used by an XLI and writes it to a file.  The
              format of xliname is described in -rxli above.

       -wxliopt options
              Extra options to pass to the writing XLI library.

       -wxlisol xliname filename
              Writes the model's solution to a file using an XLI library. The format  of  xliname
              is described in -rxli above.

       -wxlisolopt options
              Extra options to pass to the solution writing XLI library.

   Printing, verbosity and debugging
       -h     Print a usage message and exit.

       -Slevel
              Solution  detail. Each level builds on top of the previous one and adds more detail
              to the solution.

              0    print nothing
              1    objective value only
              2    variables (default level)
              3    constraints
              4    duals
              5    lp model
              6    scales
              7    lp tableau

       -time  Print CPU time to parse input and to calculate solution.

       -v[level]
              Verbosity level. Controls the level of messages printed about the operation of  the
              program.

              0    neutral
              1    critical
              2    severe
              3    important (default when -v is provided with no level)
              4    normal (default when no -v option is given)
              5    detailed
              6    full

       -t     Trace pivot selection.

       -d     Debug mode. All intermediate results and branch-and-bound decisions are printed.

       -R     Report information while solving the model.

       -Db filename
              Create a dump of internal model variables before solving the model to given file.

       -Da filename
              Create a dump of internal model variables after solving the model, to given file.

       -i[a]  Print  all intermediate valid solutions. If a is used, prints only non-zero values.
              Can give useful solutions even if the total run time is too long.

   Parameter files
       -rpar filename
              Reads a list of parameters from a file. The parameters file can  specify  the  same
              options  as  you can by passing arguments to lp_solve but can be more convenient if
              you need to change lots of settings. The format of the parameters file  is  in  the
              INI  format  often used by Windows applications.  All parameters are read from key-
              value pairs in a single section. The default section is [Default].

       -rparopt '-h header'
              Sets options for reading the parameters file. Currently the only option is -h which
              changes the section within the file to read the parameters from.

       -wpar filename
              Writes a parameters file based on the arguments given to lp_solve.

       -wparopt '-h header'
              Sets  options for writing the parameter file. Currently the only option is -h which
              changes the section within the file to write the parameters to.

   Basis files
       -rbas filename
              Reads a basis file which is used as the starting point for solving  the  LP  model.
              Basis files must be in MPS basis format.

       -gbas filename
              Computes a basis from a list of initial guesses for each variable. Each line of the
              given file is in the format: variable:value where value is the  initial  guess  for
              variable.

       -wbas filename
              After  solving  the  LP  model, writes a basis file in MPS format. This file can be
              read back using -rbas.

              Available options:
              0    no crash basis (default).
              1    most feasible basis.
              2    least degenerate basis.

   Integer and branch and bound options
       -noint Ignore integer restrictions on variables.

       -f     Stops the branch and bound algorithm immediately after finding its first solution.

       -o bound
              Stops the branch and bound algorithm immediately after  finding  a  solution  whose
              objective function has a value greater than this bound.

       -b bound
              Sets  a lower bound for the objective function. The branch and bound algorithm will
              immediately reject all solutions lower than this value.

       -depth limit
              Sets the depth limit for the branch and bound algorithm.  A  value  of  0  disables
              depth limiting. A negative value sets a relative depth limit based on the number of
              variables in the input model. The default limit is -50.

       -e tolerance
              Sets the tolerance which is used to determine whether a floating point number is an
              integer.  A  number has to be within this value of an integer to be considered one.
              The default value is 1e-7.

       -g tolerance, -ga tolerance
              Sets the absolute MIP gap used by the branch and bound algorithm. This tolerance is
              the difference between the best-found solution yet and the current solution. If the
              difference is smaller than this tolerance then  the  solution  (and  all  the  sub-
              solutions)  is  rejected. This can result in faster solving times, but results in a
              solution which is not the perfect solution. The default value is 1e-11.

       -gr tolerance
              Sets the relative MIP gap used by the branch and bound algorithm. This  is  similar
              to  the  absolute  tolerance except that the difference is scaled by the best found
              solution before being compared to this tolerance. The default value is 1e-11.

       -c, -cc
              During branch and bound, take the ceiling branch first.

       -cf    During branch and bound, take the floor branch first.

       -ca    During branch and bound, allow the algorithm to decide which branch to take.   This
              is the default.

       -n solution
              If  the  branch  and  bound  algorithm  produces  multiple  solutions with the same
              objective function value, prints the nth solution. Solution numbers start at 1.

       -Brule Sets a branch and bound rule to use. The default rules are: -B5 -Bg -Bd -Bc

              These rules are mutually exclusive:
              0    select lowest indexed non-integer column.
              1    selection based on distance from the current bounds.
              2    selection based on the largest current bound.
              3    selection based on largest fractional value.
              4    simple, unweighted pseudo-cost of a variable.
              5    extended pseudo-costing strategy based on minimizing  the  number  of  integer
                   infeasibilities.
              6    extended  pseudo-costing  strategy  based on maximizing the normal pseudo-cost
                   divided by the number of infeasibilities.

              The above rules can be combined with any of the following:
              w    WeightReverse - select by criterion minimum  (worst),  rather  than  criterion
                   maximum (best).
              b    BranchReverse - when -ca is selected, choose the opposite direction.
              g    Greedy
              p    PseudoCost  -  toggles  between  weighting  based  on  pseudocost or objective
                   function value.
              f    DepthFirst - select the node that has already been selected  before  the  most
                   number of times.
              r    Randomize - ddds a randomization factor to the score for any node candidate.
              G    GubMode
              d    Dynamic  - when -Bf is selected, switch off this mode when a first solution is
                   found.
              s    RestartMode - enables regular restarts of pseudocost value calculations.
              B    BreadthFirst - select the node that has been selected before the fewest number
                   of times or not at all.
              o    AutoOrder - order variables to improve branch-and-bound performance.
              c    ReducedCostFixing - do bound tightening during B&B based of reduced cost info.
              i    StringInit - initialize pseudo-costs by strong branching.

   Simplex algorithm options
       -prim, -simplexpp
              Prefer the primal simplex method for both phase 1 and phase 2.

       -dual, -simplexdd
              Prefer the dual simplex method for both phase 1 and phase 2.

       -simplexdp
              Prefer  the  dual simplex method for phase 1 and primal method for phase 2. This is
              the default.

       -simplexpd
              Prefer the primal simplex method for phase 1 and dual method for phase 2.

       -bfp filename
              Sets the basis factorization package to use.  filename refers to a  shared  library
              loaded in the same way -rxli loads libraries.

       -ovalue
              Sets  whether  the  objective  function  is stored in the top row of the constraint
              matrix or in separate storage.  -o0 places the matrix in separate storage, and  -o1
              (the default) places it in the constraint matrix.

       -Cmode Sets  the  basis  crash  mode.  When  base  crash  is  enabled,  a heuristic 'crash
              procedure' is executed before the first simplex iteration to quickly choose a basis
              matrix  that  has  fewer  artificial  variables. This procedure tends to reduce the
              number of iterations to optimality since a number of iterations are skipped.

       -r value
              Sets the maximum number of  pivots  between  a  re-inversion  of  the  matrix.  For
              stability  reasons, lp_solve re-inverts the matrix on regular times. The default is
              250 for the LUSOL bfp and 42 for the other BFPs.

       -trej value
              Sets the value that is used as a tolerance pivot element  to  determine  whether  a
              value should be considered as 0. The default is 2e-7.

       -epsd value
              Sets the value that is used as a tolerance for reduced costs to determine whether a
              value should be considered as 0. The default is 1e-9.

       -epsb value
              Sets the value that is used as a  tolerance  for  the  Right  Hand  Side  (RHS)  to
              determine whether a value should be considered as 0.  The default is 1e-10.

       -epsel value
              Sets the value that is used as a tolerance for rounding values to zero. The default
              is 1e-12.

       -epsp value
              Sets the value that is used as perturbation scalar for degenerative problems.   The
              default is 1e-5.

       -improvelevel
              Sets  the  iterative  improvement level.  level is a number which can be created by
              combining the different levels below. The default is -improve6.

              0    none.
              1    running accuracy measurement of solved equations on Bx=r.
              2    improve initial dual feasibility by bound flips.
              4    low-cost accuracy monitoring in the dual.
              8    check for primal/dual feasibility at the node level.

       -pivrule
              Sets a simplex pivot rule or mode to use. The default rules are: -piv2 -piva

              These rules are mutually exclusive:
              0    select first.
              1    select according to Dantzig.
              2    select Devex pricing from Paula Harris.
              3    select steepest edge.

              The above rules can be combined with any of the following modes:
              f    PrimalFallback - when steepest edge (-priv3) is selected, fallback to Devex in
                   primal.
              m    Multiple  -  preliminary  implementation  of the multiple pricing scheme. This
                   means that attractive candidate entering columns from  one  iteration  may  be
                   used  in the subsequent iteration, avoiding full updating of reduced costs. In
                   the current implementation, lp_solve only reuses the 2nd best entering  column
                   alternative
              a    Adaptive - temporarily use alternative strategy if cycling is detected.
              r    Randomize - adds a small randomization effect to the selected pricer.
              ll   LoopLeft - scan entering/leaving columns left rather than right.
              la   LoopAlternate - scan entering/leaving columns alternating left/right.
              h    HarrisTwoPass - use Harris' primal pivot logic rather than the default.
              t    TrueNormInit - use true norms for Devex and Steepest Edge initializations.

       -degenoption
              Specifies  if  special  handling  must  be  done to reduce degeneracy/cycling while
              solving. The default options are: -degenf -degens.

              Available options:
              c    ColumnCheck
              d    Dynamic
              f    FixedVars
              s    Stalling
              n    NumFailure
              l    Lostfeas
              i    Infeasible
              b    DuringBB
              r    RHSPerturb
              p    BoundFlip

   Other solving options
       -presolve[option]
              Enables a presolve option. These  options  attempt  to  speed  up  calculations  by
              simplifying  the  model  before  solving  it.  Any of these options can be combined
              together. If option is not specified, row and column presolving is enabled  (as  if
              -presolverow -presolvecol had been used). The default not to presolve.

              Available options:
              row  Rows - presolve rows.
              col  Cols - presolve columns.
              l    LinDep - eliminate linearly dependent rows.
              s    Sos - convert constraints to SOSes (only SOS type 1 handled).
              r    ReduceMip  -  if  the  phase  1  solution  process  finds that a constraint is
                   redundant then this constraint is deleted.
              k    Knapsack - simplification of knapsack-type constraints through addition of  an
                   extra variable, which also helps bound the objective function.
              q    ElimEQ2   -   direct  substitution  of  one  variable  in  2-element  equality
                   constraints; this requires changes to the constraint matrix.
              m    MergeRows - merges neighboring >= or  <=  constraints  when  the  vectors  are
                   otherwise relatively identical into a single ranged constraint.
              fd   ColFixDual  -  variable  fixing  and removal based on considering signs of the
                   associated dual constraint.
              bnd  Bounds - does bound tightening based on full-row constraint information.
              d    Duals - presolve duals.
              f    ImpliedFree -  identify  implied  free  variables  (releasing  their  explicit
                   bounds).
              slk  ImpliedSlk-  converts  qualifying  equalities  to inequalities by converting a
                   column singleton variable to slack.
              g    ReduceGCD - reduce (tighten) coefficients  in  integer  models  based  on  GCD
                   argument.
              b    ProbeFix - attempt to fix binary variables at one of their bounds.
              c    ProbeReduce - attempt to reduce coefficients in binary models.
              rowd RowDominate - identify and delete qualifying constraints that are dominated by
                   others, also fixes variables at a bound.
              cold ColDominate - deletes variables (mainly binary), that are dominated by  others
                   (only one can be non-zero).

       -s[mode] [scalelimit]
              Sets  the  scaling  algorithm  and/or scaling limit to use.  scalelimit can only be
              specified when using the mutually exclusive integer modes.  Omitting  mode  is  the
              equivalent of using -s4.  The default algorithm and limit is: -s1 5 -si -se

              These rules are mutually exclusive:
              0    no scaling.
              1    geometric scaling.
              2    Curtis-Reid scaling.
              3    scale to convergence using largest absolute value.
              4    numerical range-based scaling.
              5    scale to convergence using logarithmic mean of all values.
              6    scale based on the simple numerical range.
              7    scale quadratic.

              The above rules can be combined with any of the following:
              p    also do power scaling.
              i    also scale integer variables.
              e    ensure no scaled number is outside the range -1..1.

EXAMPLE

   Model solving
       The following example shows a model being solved by lp_solve.  The first line contains the
       objective function to be maximized and the last 3 lines contain the constraints.

       $ cat example.lp
       max: 143 x + 60 y;

       120 x + 210 y <= 15000;
       110 x + 30 y <= 4000;
       x + y <= 75;

       $ lp_solve -S3 example.lp
       Value of objective function: 6315.63

       Actual values of the variables:
       x                          21.875
       y                          53.125

       Actual values of the constraints:
       R1                        13781.2
       R2                           4000
       R3                             75

   Format conversion
       This example converts a file in lp format to mps format.

       $ lp_solve -parse_only -lp example.lp -wmps example.mps

SEE ALSO

       ld.so(8)

                                          September 2015                              lp_solve(1)