fmincon函数应用实例
时间: 2023-07-30 11:06:59 浏览: 212
fmincon函数是MATLAB中用于非线性约束优化的函数。下面是一个简单的实例,展示如何使用fmincon函数来求解一个带有约束的优化问题。
假设我们要最小化函数f(x) = x1^2 + x2^2,其中x = [x1, x2]是一个2维向量。我们需要满足以下约束条件:
1. x1 + x2 = 1
2. x1 >= 0
3. x2 >= 0
我们可以使用fmincon函数来解决这个问题。首先,我们需要定义一个函数,计算f(x)和它的梯度。代码如下:
```
function [f, grad] = objective(x)
f = x(1)^2 + x(2)^2;
grad = [2*x(1); 2*x(2)];
end
```
然后,我们需要定义一个函数,计算约束条件和它们的梯度。代码如下:
```
function [c, ceq, gradc, gradceq] = constraints(x)
c = [x(1) + x(2) - 1; -x(1); -x(2)];
ceq = [];
gradc = [1 1; -1 0; 0 -1];
gradceq = [];
end
```
最后,我们可以使用fmincon函数来求解优化问题。代码如下:
```
x0 = [0.5; 0.5];
options = optimoptions('fmincon', 'Display', 'iter');
[x, fval] = fmincon(@objective, x0, [], [], [], [], [], [], @constraints, options);
```
其中,x0是初始值,options是优化选项,@objective是计算f(x)和它的梯度的函数句柄,@constraints是计算约束条件和它们的梯度的函数句柄。执行以上代码后,我们可以得到最优解x和最小值fval。
阅读全文