lp_solve (1)  Linux Manuals
lp_solve: a mixed integer linear programming (MILP) solver
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 semicontinuous. 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 nonzero at once. If
sostype
is specified, then up to that number of variables can be nonzero as long as
they are all adjacent to each other (e.g. for an
sostype
of 2,
var1
and
var2
could be nonzero, 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.
Builtin 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 branchandbound 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 nonzero 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 keyvalue 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.

Available options:
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 1e7.
 g tolerance, ga tolerance
 Sets the absolute MIP gap used by the branch and bound algorithm. This tolerance is the difference between the bestfound solution yet and the current solution. If the difference is smaller than this tolerance then the solution (and all the subsolutions) is rejected. This can result in faster solving times, but results in a solution which is not the perfect solution. The default value is 1e11.
 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 1e11.
 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 noninteger 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 pseudocost of a variable.
 5
 extended pseudocosting strategy based on minimizing the number of integer infeasibilities.
 6
 extended pseudocosting strategy based on maximizing the normal pseudocost 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 branchandbound performance.
 c
 ReducedCostFixing  do bound tightening during B&B based of reduced cost info.
 i
 StringInit  initialize pseudocosts by strong branching.

These rules are mutually exclusive:
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 reinversion of the matrix. For stability reasons, lp_solve reinverts 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 2e7.
 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 1e9.
 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 1e10.
 epsel value
 Sets the value that is used as a tolerance for rounding values to zero. The default is 1e12.
 epsp value
 Sets the value that is used as perturbation scalar for degenerative problems. The default is 1e5.
 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
 lowcost 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.

These rules are mutually exclusive:
 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

Available options:
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 knapsacktype constraints through addition of an extra variable, which also helps bound the objective function.
 q
 ElimEQ2  direct substitution of one variable in 2element 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 fullrow 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 nonzero).

Available options:
 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
 CurtisReid scaling.
 3
 scale to convergence using largest absolute value.
 4
 numerical rangebased 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.

These rules are mutually exclusive:
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