我在MATLAB中编写了以下函数:
function EX_EFFICIENCY=EXERGY_EFFICIENCY_FUNCTION(CR,ER,PC,T0,P0)
我使用了以下顺序(ga):
x = ga(@EXERGY_EFFICIENCY_FUNCTION,5)
但是它得到了错误:
输入参数不足。
EXERGY_EFFICIENCY_FUNCTION错误(第22行) T7p = T0。*(PC。^((k-1)./ k));
createAnonymousFcn中的错误> @(x)fcn(x,FcnArgs {:})(第11行)fcn_handle = @(x)fcn(x,FcnArgs {:});
makeState错误(第47行) firstMemberScore = FitnessFcn(state.Population(initScoreProvided + 1,:));
gaunc(第40行)状态错误= makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);
ga中的错误(第398行) [x,fval,exitFlag,output,population,scores] = gaunc(FitnessFcn,nvars,...
原因: 用户提供的初始适应度功能评估失败。 GA无法继续。
如何最小化此功能?
答案 0 :(得分:1)
您要最小化哪些变量?全部五个CR,ER,PC,T0,P0
?然后,您需要告诉ga
使用长度为5的向量并将其元素分配给函数的输入参数。像这样:
xopt = ga(@(x) EXERGY_EFFICIENCY_FUNCTION(x(1),x(2),x(3),x(4),x(5)), 5);
您当然也可以修复某些问题,并在其他方面进行优化,例如:
xopt = ga(@(x) EXERGY_EFFICIENCY_FUNCTION(x(1),x(2),PC,T0,P0), 2);
针对CR
,ER
和PC
的固定值优化T0
,P0
。