【问题标题】:How can I Minimize this function with MATLAB?如何使用 MATLAB 最小化这个函数?
【发布时间】:2019-02-13 01:12:34
【问题描述】:

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

如何最小化这个功能?

【问题讨论】:

  • 最小化?优化?你的意思是修? ga 想要一个带有一个输入参数的函数的句柄。你给它一个需要 5 个参数的参数。这当然行不通。

标签: matlab optimization


【解决方案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);

针对PCT0P0 的固定值优化CRER

【讨论】:

  • 不客气! :) 如果它解决了您的问题,请考虑接受答案。
猜你喜欢
  • 1970-01-01
  • 2014-04-19
  • 2016-09-13
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
相关资源
最近更新 更多