我需要在Matlab中最大化以下目标函数:
mean (a*I'*x1+b*(ones(1,24)-I)'*x1)-mean((a*(ones(1,24)-I)'*y1)+(b*I'*y1))
我制作了两个.m文件:
在objfun.m
文件中,我将目标函数定义为:
function f = objfun(x)
f = mean (a*I'*x1+b*(ones(1,24)-I)'*x1)-mean((a*(ones(1,24)-I)'*y1)+(b*I'*y1));
在第二个(主要).m文件中,我有a,b和I的参数和计算以及下面的约束和fmincon:
lb = [0,0];
ub = [10,10];
x0 = [1,2];
[x,fval] = fmincon(@objfun,x0,[],[],[],[],lb,ub)
当我运行程序时,我得到fmincon的错误:
初始用户提供的目标函数评估失败。 FMINCON无法继续。
请问您如何解决此问题?我的目标函数是否有任何问题,因为它是x1
和y1
的函数,但我只有objfun(x)
?或者我是否错误地调用了该函数?
任何帮助表示赞赏!