i具有符号方程,并希望转换为可以通过遗传算法(GA)评估的函数。我尝试使用MATLABFUNCONT,并将符号方程转换为MATLAB文件。但是,该生成的文件只能通过Fmincon或Patternsearch算法而不是遗传算法来评估。我使用GA
遇到了此错误。由:初始用户提供的健身功能评估中的失败。GA不能继续。
似乎Matlabfunction不会生成GA要求的格式,任何人都可以建议该问题的解决方案/解决方法是什么?
代码如下:
N = 24;
X = sym('x',[2*N 1]);
Y = X(1:N);
W = 3.2516e-6.*Y.^3 - 0.0010074.*Y.^2 + 0.390950.*Y+2.2353;
Z = P.*W;
totR = sum(Z);
totR = subs(totR,[P],[price]);
matlabFunction(totR,'vars',{X},'file','objFcn');
% Call to ga
x1 = ga(@objFcn, N*2, A, b, Aeq, beq)
谢谢!
来自 ga
的文档:
健身函数应接受长度为nvars的行矢量并返回标量值。
您的objFcn
接受了列向量并在行传递的情况下引发错误。您可以通过将此行更改为:
X = sym('x',[1 2*N]);
如果P
是非量表,则可能需要对其进行转换。当然,如果没有可运行的代码,也可能发生各种其他事情。您可能还有其他地方和方法可以解决这个问题。