如何使用MATLAB最小化此功能?

时间:2019-02-11 20:42:56

标签: matlab optimization

我在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无法继续。

如何最小化此功能?

1 个答案:

答案 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);

针对CRERPC的固定值优化T0P0