0
$\begingroup$

I have a function $f(x,y,z)$ I want to find the minimum/maximum of the function with some constraints like

$0 < x < C_1$ $0 < y+z

where $C_1$ and $C_2$ are some integer constants.

Right now the function that I have is $ax + by + cz\;$ ($a,$ $b$ and $c$ are constants). But is there a generic way to do this in Matlab.

  • 0
    yes that is what i mean by generic2012-04-04

1 Answers 1

2

You can use linprog (help page has good examples):

x = linprog(f,A,b,Aeq,beq,lb,ub) defines a set of lower and upper bounds on the design variables, x, so that the solution is always in the range lb ≤ x ≤ ub. Set Aeq = [] and beq = [] if no equalities exist.

f, x, b, beq, lb, and ub are vectors, and A and Aeq are matrices.

So

f = [a; b; c]

lb = []

ub = []

Aeq = []

beq = []

We need to setup the constraints in a matrix format $A{\mathbf x} \le b -\epsilon$. Separate $0 < x < c$ into $-x < 0,$ and $x < c,$ etc. Subtract eps to $-x < 0 -\epsilon,$ etc. So $ \begin{pmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 1 & 1 \\ 0 & -1 & -1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \end{pmatrix} \le \begin{pmatrix} c_1 -\epsilon \\ 0 -\epsilon \\ c_2 -\epsilon \\ 0 -\epsilon \end{pmatrix} $ Now, we can invoke: linprog.

  • 0
    Done. Updated my answer.2012-04-04