matlab中fmincon函数的用法?

我建立一个myfunction.m文件function f=myfuncion(x)
M=[2,-1;-1,2];
B=[3;-3];
f=1/2*x'*M*x+B'*x;然后在matlab窗口中输入 x0=[0;0];
>> A=[];
>> B=[];
>> Aeq=[];
>> Beq=[];
>> lb=[-2;-2];
>> ub=[2;2];
>> x = fmincon('myfunction',x0,[],[],[],[],lb,ub)结果出现:
Warning: Trust-region-reflective method does not currently solve this type of problem,
using active-set (line search) instead.
In fmincon at 422
??? Error using ==> fmincon at 504
FMINCON cannot continue because user supplied objective function failed with the following error:
Undefined function or method 'myfunction' for input arguments of type 'double'.
然后我用
options = optimset('Algorithm','active-set');
>> x = fmincon('myfunction',x0,[],[],[],[],lb,ub)还是不对,请大侠们指教!谢谢!

慕尼黑8549860
浏览 1993回答 2
2回答

森林海

fmincon函数在MATLAB中用于求解非线性多元函数最小值,应用十分广泛。使用该函数的关键是定义目标函数,以及在约束条件中有非线性约束时准确定义。具体介绍如下:一、求解问题的标准型为:min F(X)s.tAX <= bAeqX = beqG(x) <= 0Ceq(X) = 0VLB <= X <= VUB其中X为n维变元向量,G(x)与Ceq(X)均为非线性函数组成的向量,其他变量的含义与线性规划、二次规划中相同。注意:(1)fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options 参数的GradObj设置为'on'),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法,当既有等式约束又有梯度约束时,使用中型算法。(2)fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。(3)fmincon函数可能会给出局部最优解,这与初值X0的选取有关。
打开App,查看更多内容
随时随地看视频慕课网APP