0% found this document useful (0 votes)
117 views

Função Matlab: Fmincon

fmincon finds the minimum of a constrained nonlinear function using sequential quadratic programming. It can handle linear inequality and equality constraints, nonlinear inequality constraints, and variable bounds. Common usage involves passing an objective function handle, initial guess, and optional linear constraint matrices to fmincon. Two examples are given that minimize objective functions subject to different constraint types, defining the constraints in separate M-files passed to fmincon.

Uploaded by

rabuja1
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
117 views

Função Matlab: Fmincon

fmincon finds the minimum of a constrained nonlinear function using sequential quadratic programming. It can handle linear inequality and equality constraints, nonlinear inequality constraints, and variable bounds. Common usage involves passing an objective function handle, initial guess, and optional linear constraint matrices to fmincon. Two examples are given that minimize objective functions subject to different constraint types, defining the constraints in separate M-files passed to fmincon.

Uploaded by

rabuja1
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Examples of Using fmincon in MATLAB

fmincon finds a minimum of a constrained nonlinear multivariable function, and by


default is based on the SQP (Sequential Quadratic Programming) algorithm.
fmincon solves problems of the form:
min f(x) subject to:
x
A*x B
Aeq*x = Beq

linear constraints

C(x) 0
Ceq(x) = 0
LB x UB

(nonlinear constraints)

bounding of variables

Common Syntax:
x = fmincon(fun, x0, A, b)
x = fmincon(fun, x0, A, b, Aeq, Beq)
x = fmincon(fun, x0, A, b, Aeq, Beq, lb, ub)
x = fmincon(fun, x0, A, b, Aeq, Beq, lb, ub, nonlcon)
[x, fval, exitflag, output, lambda] = fmincon(fun, x0, A, b, Aeq, Beq, lb, ub,
nonlcon)
where x0 is the initial guess for the minimum, nonlcon is an M-file function call for the
nonlinear constraints and defines C(x) and Ceq(x) . Note that if any argument is not
present, it should be set to a null set []. If lb and ub are not known, they should be set to
null sets as well. Lambda is the Lagrange multipliers.
Example 1:

Minimize

f(x) = x1x2x3
s.t.
0 x1 + 2x2 + 2x3 72

x0 = [10 10 10]T
Rewrite the linear inequality constraints as:
x1 2x2 2x3 0

and x1 + 2x2 + 2x3 72

Write an M-file for f(x):


function f = myfun(x)
f = x(1)*x(2)*x(3);
The MATLAB input is:
>> A = [1 2 2; 1 2 2];
>> b = [0; 72];
>> x0 = [10; 10; 10];
>> [x, fval] = fmincon(@myfun, x0, A, b)
x=
24.0000

12.0000

12.0000

fval =
3.456e+03
Example 2:

Minimize

f(x) = ex1[4x12 + 2x22 + 4x1x2 + 2x2 + 1]


s.t.
1.5 + x1x2 x1 x2 0
x1x2 10

x0 = [1 1]T
Write an M-file for the objective function:
function f = objfun(x)
f = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
Write an M-file for the nonlinear constraints:
function [c, ceq] = confun(x)
c = [1.5+x(1)*x(2) x(1) x(2); x(1)*x(2) 10];
ceq = [];
The MATLAB input is:
>> x0 = [1; 1];
>> [x, fval] = fmincon(@objfun, x0, [], [], [], [], [], [], @confun)
x=

9.5474

1.0474

fval =
0.0236

You might also like