dwww Home | Manual pages | Find package

lp_solve(1)                 General Commands Manual                lp_solve(1)

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 cus-
       tom 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  semi-
       colon.  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,  op-
       tionally  prefixed  by max: or min: to specify which direction to opti-
       mize. The default is to maximize.

       Each constraint consists of a relational  expression,  optionally  pre-
       fixed  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  al-
              ways  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  conver-
              sions  are processed before solving). This is useful if presolv-
              ing 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).  xli-
              name 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 deci-
              sions 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 to-
              tal 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 sec-
              tion 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 solv-
              ing the LP model. Basis files must be in MPS basis format.

       -gbas filename
              Computes a basis from a list of initial guesses for  each  vari-
              able.  Each  line  of  the  given  file  is in the format: vari-
              able: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 algo-
              rithm. 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 algo-
              rithm. 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  infeasibili-
                   ties.

              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  be-
                   fore 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 heuris-
              tic 'crash procedure' is executed before the first simplex iter-
              ation to quickly choose a basis matrix that has fewer artificial
              variables. This procedure tends to reduce the number  of  itera-
              tions 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  de-
              termine  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 degenera-
              tive 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 de-
              fault 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 pric-
                   ing  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  se-
                   lected 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 degener-
              acy/cycling while solving. The default options are: -degenf -de-
              gens.

              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 speci-
              fied, 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 han-
                   dled).
              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  con-
                   straint matrix.
              m    MergeRows  -  merges  neighboring >= or <= constraints when
                   the vectors are otherwise relatively identical into a  sin-
                   gle ranged constraint.
              fd   ColFixDual - variable fixing and removal based on consider-
                   ing 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 mod-
                   els.
              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.  scale-
              limit 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)

Generated by dwww version 1.15 on Sun Jun 23 20:49:19 CEST 2024.