linprog
Syntax
linprog(f, [A], [b], [Aeq], [beq], [lb], [ub], [method=’simplex’])
Details
Solve the following optimization problem with a linear objective function and a set of linear constraints.
\(\min_xf^Tx\text{ such that}\begin{cases}A\cdot x\le b\\Aeq\cdot x=beq\\lb\le x\le ub\end{cases}\)
The result is a 2-element tuple. The first element is the minimum value of the objective function. The second element is the value of x where the value of the objective function is minimized.
Arguments
A and Aeq must be matrices with the same number of columns.
f, b and beq are vectors.
lb and ub are scalars or vectors with the same length as x indicating the lower bounds and upper bounds of x.
If lb or ub is a scalar, all elements of x are subject to the same lower bound or upper bound constraint. If lb or ub is NULL, there is no lower bound or upper bound constraint for x.
If lb or ub is a vector, an element of x is subject to the lower bound or upper bound constraint specified by the corresponding element of lb or ub.
method is a string indicating the optimization algorithm. It can be either ‘simplex’ (recommended) or ‘interior-point’.
Examples
Example 1. Find the minimum of x+2y subject to the constraints of
\(\begin{cases}x\le2\\y\le2\\x+y\ge2\end{cases}\)
$ f = [1, 2];
$ A = [-1, -1]$1:2;
$ b = [-2];
$ ub = 2;
$ re = linprog(f, A, b, , , , ub);
$ re[0];
2
$ re[1];
[2,0]
Example 2. Find the minimum of -3x1-2x2 subject to the constraints of
\(\begin{cases}2x_1+x_2\le10\\x_1+x_2\le8\\x_1\le4,x_2\in\Re\end{cases}\)
$ f = [-3, -2];
$ A = [2, 1, 1, 1]$2:2;
$ b = [10, 8];
$ ub = [4, NULL];
$ re = linprog(f, A, b, , , , ub);
$ re[0];
-18
$ re[1];
[2,6]