【问题标题】:How to allow the genetic algorithm to run to convergence (Matlab)如何让遗传算法运行到收敛(Matlab)
【发布时间】:2017-04-23 05:23:15
【问题描述】:

我正在使用 Matlab 中的全局优化工具箱运行遗传算法。我想让算法运行,直到最佳值之间的差异为

我的目标函数示例如下:

function y=objfun(x)
  t = [3,227,342,351,353,444,556,571,759,836];
  n= length(t);
  sumt = sum(t);
    y = -(- x(1)*(1-exp(-x(2)*t(n)))  + n*log(x(2)));
end

GA 代码是

options.TolFun=1e-15;
%options.TolCon=1e-15;
format longG
[x,fval] = ga(@objfun,2,[],[],[],[],[10 0.001],[20 0.1])

【问题讨论】:

  • 您能粘贴一些您目前拥有的代码吗?或者,如果您使用的是优化应用程序,您能否发布您的配置屏幕截图?
  • @Anthony 我用示例代码编辑了我的问题。

标签: matlab optimization constraints genetic-algorithm convergence


【解决方案1】:

以下是您可以修改的停止条件的完整列表:

% default options
options = optimoptions('ga');

% stop criteria
options = optimoptions(options,'MaxGenerations', MaxGenerationsVal); % number of generations
options = optimoptions(options,'MaxTime', MaxTimeVal); % time limit
options = optimoptions(options,'FitnessLimit', FitnessLimitVal); % fitness limit
options = optimoptions(options,'MaxStallGenerations', MaxStallGenerationsVal); % stall generation
options = optimoptions(options,'MaxStallTime', MaxStallTimeVal); % stall time limit
options = optimoptions(options,'FunctionTolerance', FunctionToleranceVal); % function tolerance
options = optimoptions(options,'ConstraintTolerance', ConstraintToleranceVal); % constraint tolerance

[x,fval] = ga(@objfun,2,[],[],[],[],[10 0.001],[20 0.1],[],[],options);

我还没有测试过代码。如果这有帮助,请告诉我:)

【讨论】:

  • 是的。我尝试设置 options.TolCon=1e-15 以及功能公差,它可以工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
相关资源
最近更新 更多