


LP_SOLVE(1ES)       UNIX Programmer's Manual        LP_SOLVE(1ES)



NAME
     lp_solve  - Solve (mixed integer) linear programming prob-
     lem.

SYNOPSIS
     lp_solve [option]* "<" <input-file>

OPTIONS
     -v          Verbose mode

     -h          Help mode, prints the usage

     -d          Debug mode, all intermediate results are
                 printed, and the branch-and-bound decissions in
                 case of (mixed) integer problems.

     -b <bound>  Specify a lower limit for the value of the
                 objective function to the program. Only useful
                 for (mixed) integer problems.  If close enough,
                 may speed up the calculations.

     -i          Print all intermediate valid solutions. Can give
                 you useful solutions even if the total run time
                 is too long.  Only useful for (mixed) integer
                 problems.

DESCRIPTION
     The linear programming problem can be formulated as: Solve
     A.x >= V1, with V2.x maximal. A is a matrix, x a vector of
     variables, V1 a vector called the right hand side, and V2 a
     vector specifying the objective function.
     Any of the variables may be specified integer.
     This program solves problems of this kind. It is slightly
     more general than the above problem, in that every row of A
     (specifying one equation) can have its own (un)equality, <=,
     >= or =. Also there is a possibility to specify bounds and
     ranges for individual variables (which could also be done in
     A of course). The result specifies values for all variables.
     Uses a 'Simplex' algorithm and sparse matrix methods, for
     pure LP problems.  If one or more of the variables is
     declared integer, the Simplex algorithm is iterated with a
     branch and bound algorithm, until the desired optimal solu-
     tion is found.

INTERRUPT
     In order to make it possible to get useful solutions for a
     mixed integer problem which takes too long to finish com-
     pletely, the "interrupt" signal (kill -INT, ^C for many peo-
     ple) will not terminate the program, but print the best
     valid solution found sofar. If you see all zeros, it implies
     that no valid solution has been found yet. To really ter-
     minate the program, use a different signal, like KILL.



Printed 6/17/92                                                 1






LP_SOLVE(1ES)       UNIX Programmer's Manual        LP_SOLVE(1ES)



INPUT SYNTAX
     The input syntax is a set of algebraic expressions and "int"
     declarations in the following order:

     <objective function>
     <constraint>+
     <declaration>*

     where:

     - <objective function> is a linear combination of variables,
       ending with a semicolon.

     - <constraint> is a linear combination of variables and con-
       stants, followed by a relational operator, followed again
       by a linear combination of variables and constants, ending
       with a semicolon. The relational operator can be any of
       the following: "<" "<=" "=" ">" ">=".

     - <declaration> is of the form: "int" <var>+ ";" Commas are
       allowed between variables.

       So, the simplest linear problem consists of an objective
       function and 1 constraint.

EXAMPLE
     The simple problem:

     x1 >= 1
     x2 >= 1
     minimise x1 + x2 (= maximise -(x1 + x2)), with x1 integer

     can be written as follows:

     -x1 + -x2;
     x1 > 1;
     x2 > 1;
     int x1;

     The correct result for (x1, x2) is of course (1, 1).

BUGS
     Due to the implementation, bounds (constraints on just one
     variable), do not enter into the A-matrix. Therefore,
     extremely simple problems with only bounds sometimes cannot
     be solved, because they define the empty problem. Real-life
     examples probably never have this property.

SEE ALSO
     The implementation of the simplex kernel was mainly based
     on:
     W. Orchard-Hays: "Advanced Linear Programming Computing



Printed 6/17/92                                                 2






LP_SOLVE(1ES)       UNIX Programmer's Manual        LP_SOLVE(1ES)



     Techniques", McGrawhill 1968

CONTRIBUTED BY
     M.R.C.M. Berkelaar
     Eindhoven University of Technology
     Design Automation Section
     P.O. Box 513
     NL-5600 MB Eindhoven, The Netherlands
     phone ...-31-40-473345
     E-mail: michel@es.ele.tue.nl

STATUS
     Use at own risk. Bug reports are welcome, as well as succes
     stories.









































Printed 6/17/92                                                 3



