Optimization[LPSolve](Matrix Form)  solve a linear program in Matrix Form

Calling Sequence


LPSolve(c, lc, bd, opts)


Parameters


c



Vector or NoUserValue; linear objective function

lc



(optional) list; linear constraints

bd



(optional) list; bounds

opts



(optional) equation(s) of the form option = value where option is one of assume, binaryvariables, depthlimit, feasibilitytolerance, infinitebound, initialpoint, integertolerance, integervariables, iterationlimit, maximize, method, nodelimit or output; specify options for the LPSolve command





Description



minimize (or maximize)


(linear inequality constraints)


(linear equality constraints)


(bounds)

•

Continuous, integer, mixedinteger and binary (or zeroone) LPs can be solved. Throughout this page, the term
integer programming
is used to represent all forms of integer programs. Integer programs are specified using the assume, integervariables or binaryvariables options. See the following Integer Programming Options section for more information.

•

This help page describes how to specify the problem in Matrix form. For details about the exact format of the objective function and the constraints, see the Optimization/MatrixForm help page. The algebraic form for specifying an LP is described in the Optimization[LPSolve] help page. The Matrix form is more complex, but leads to more efficient computation.

•

The first parameter c is usually a Vector of objective function coefficients. The dimension, , of this Vector is taken to be the number of problem variables. However, if you only need a
feasible
point, supply the name NoUserValue as the first parameter c followed by constraints and/or bounds. This parameter is required.


The second parameter lc is an optional list of linear constraints. The most general form is , where A and Aeq are Matrices, and b and beq are Vectors. This parameter can take other forms if either inequality or equality constraints do not exist. For a full description of how to specify general linear constraints, refer to the Optimization/MatrixForm help page.

•

Maple returns the solution as a list containing the final minimum (or maximum) value and a point (the extremum). If the output = solutionmodule option is provided, then a module is returned. See the Optimization/Solution help page for more information.

•

The Optimization[ImportMPS] command can be used to import MPS(X) data files. This command returns a combined Matrix and Vector representation of the LP that can be sent to the LPSolve command.



General Options



The opts argument can contain one or more of the following options. These options apply to all forms of LPs accepted by the LPSolve command and are described in more detail in the Optimization/Options help page. See the following Integer Programming Options and Continuous Programming Options sections for additional options that only apply to either integer or continuous programs.

•

assume = nonnegative  Assume that all variables are nonnegative.

•

feasibilitytolerance = realcons(positive)  For the activeset method, set the maximum absolute allowable constraint violation. For the interior point method, set the tolerance for the sum of the relative constraint violation and relative duality gap.

•

infinitebound = realcons(positive)  For the activeset method, set any value of a variable greater than the infinitebound value to be equivalent to infinity during the computation. This option is ignored when using the interior point method.

•

initialpoint = Vector  Use the provided initial point, which is an ndimensional Vector of numeric values.

•

iterationlimit = posint  Set the maximum number of iterations performed by the activeset or interior point algorithm.

•

maximize or maximize = truefalse  Maximize the objective function when equal to true and minimize when equal to false. The option 'maximize' is equivalent to maximize = true. The default is maximize = false.



Integer Programming Options



The opts argument can contain one or more of the following options. These options only apply to integer programs and are described in more detail in the Optimization/Options help page.

•

assume = binary, integer or nonnegint  Assume all variables take on binary (0 or 1), integer or nonnegative integer values.

•

binaryvariables = list(posint) or set(posint)  Specify the positions in the Vector of problem variables that only take the values 0 or 1.

•

depthlimit = posint  Set the maximum depth of the branchandbound tree.

•

integertolerance = realcons(positive)  Specify the maximum acceptable absolute violation in a value for it to be considered an integer.

•

integervariables = list(posint) or set(posint)  Specify the positions in the Vector of problem variables that only take integer values.

•

nodelimit = nonnegint  Set the maximum number of nodes searched in the branchandbound tree. A value of 0 means all nodes are investigated.



Continuous Programming Options



The opts argument can contain one or more of the following options. These options only apply to continuous programs and are described in more detail in the Optimization/Options help page.

•

method = activeset, interiorpoint  Specify whether to use the activeset or interior point algorithms. If neither method is requested, a heuristic is used to choose the method. In general, the interior point method will be more efficient for large, sparse problems. See the notes below for further details on each algorithm. If the input is given in Matrix form and the constraint matrices have the storage=sparse option set, the interior point method will be used. Otherwise, the heuristic is based on the number of variables, constraints, and the density of the constraint coefficient matrices.



Compatibility


•

The c parameter was updated in Maple 15.

•

The method option was introduced in Maple 15.



Notes


•

For continuous programs, the LPSolve command uses one of two methods. The first method is an iterative activeset method implemented in a builtin library provided by the Numerical Algorithms Group (NAG). The second method is a sparse iterative interior point method developed by Dr. H. Wolkowicz at the University of Waterloo and colleagues, based on the following paper:


M. GonzalezLima, H. Wei, H. Wolkowicz. "A stable primaldual approach for linear programming under nondegeneracy assumptions." Computational Optimization and Applications. Vol. 44. (2009): 213247.


For both methods, an initial point can be provided using the initialpoint option. Otherwise, a default point is used.

•

Integer programs are solved using a
branchandbound
strategy in which a tree of nodes is created. Each node corresponds to a continuous LP subproblem which is solved using the activeset method.

•

The computation is performed in floatingpoint. Therefore, all data provided must have type realcons and all returned solutions are floatingpoint, even if the problem is specified with exact values. For best performance, Vectors and Matrices should be constructed with the datatype = float option, and when using the interior point method, Matrices should also be constructed with the storage = sparse option. For more information about numeric computation in the Optimization package and suggestions on how to obtain the best performance using the Matrix form of input, see the Optimization/Computation help page.

•

Although parameters lc and bd are optional, LPSolve returns an error if it does not detect at least one constraint (in the form of a general constraint), a bound, or the assume = nonnegative option.

•

LPSolve returns an error if the problem is
infeasible
. If the problem appears to be
unbounded
, LPSolve issues a warning and returns the last computed result. This result may be meaningless.

•

Although the assume option is accepted, general assumptions are not supported by commands in the Optimization package.



Examples


>


Use LPSolve to minimize a linear function of two variables, subject to 4 inequality constraints. Aeq and beq can be omitted from the second parameter when there are no equality constraints.
>


>


>


>


 (1) 
You can use the assume = nonnegative option instead of including nonnegative constraints explicitly.
>


>


>


>


 (2) 
Bounds can be added separately. In the following example, there are no other constraints.
>


>


>


>


 (3) 
Replace A and b in the second parameter by the name NoUserValue when there are only equality constraints.
>


>


>


>


 (4) 
Use the maximize option to maximize the objective function.
>


>


>


>


>


>


 (5) 
For integer programming problems, you can use the assume = integer option.
>


>


>


>


 (6) 
The integervariables option can be used to specify mixedinteger problems.
>


>


>


>


 (7) 

