我想通过Matlab fmincon
函数解决优化问题。我将目标函数定义为:
function f = objfun(x,p1,p2)
x1=x(1:24);
y1=x(25:48);
z1=x(48:end);
f=-mean(x1*(p1)'+y1*(p2)')+mean(z1*(p1)')
end
p1
,p2
是1x24个向量,在主文件中计算。我需要找到x1
,y1
和z1
的最佳值,它们是1x24个向量(总共72个变量)。
当我运行主代码时,我收到有关目标函数的错误消息,然后是初始目标函数评估失败导致的fmincon
。
请问您如何解决问题?
答案 0 :(得分:0)
考虑到x
是1x72向量,我认为代码的第4行有一个拼写错误。
z1=x(48:end);
这将为您提供 1x25 向量,后一个乘法z1*(p1)'
将无效,因为p1
为1x24。
我想你的意思是:
z1=x(49:end);
这样你就得到了x的最后24个元素,并且乘法z1*(p1)'
是可能的。