目标函数和fmincon()的MatLab输入参数错误

h43kikqp  于 2022-11-24  发布在  Matlab
关注(0)|答案(1)|浏览(249)

我正在使用fmincon()完成一个示例。
我将目标函数定义为objFun.m

function f=objFun(x)
    f = 100*(x(2) - (x(1))^2)^2 + (1 - x(1))^2;
end

定义一个初始点x0
x0=[1; -1]
如果我用这个点运行目标函数作为测试我得到

>> objFun(x0)

ans =

   400

但是当我尝试在fmincon()中使用它时

>> [x, fval] = fmincon(objFun, x0, [1;2],1,[],[],[0; -inf],[inf, 0]);
Not enough input arguments.

Error in objFun (line 2)
    f = 100*(x(2) - (x(1))^2)^2 + (1 - x(1))^2;

我怀疑我错过了一些很简单的东西,但是什么呢?

3htmauhk

3htmauhk1#

你需要传递一个句柄给函数@objFun而不是函数本身,你的Ax0矩阵需要转置,即:具有2列的行,A中的每一行是另一线性约束。

x0=[1, -1];
A = [1,2];
b = 1;
[x, fval] = fmincon(@objFun, x0, A,b,[],[],[0; -inf],[inf; 0]);

function f=objFun(x)
    f = 100*(x(2) - (x(1))^2)^2 + (1 - x(1))^2;
end

相关问题