如何让遗传算法运行收敛(Matlab)
How to allow the genetic algorithm to run to convergence (Matlab)
我正在 运行宁遗传算法使用 Matlab 中的全局优化工具箱。我想让算法 运行 直到最佳值之间的差异 <=10^{-15}。为此,我尝试使用 ftol 和 ctol,但该算法在 541 次迭代时终止。任何建议将不胜感激!
下面是我的 objective 函数的示例:
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])
以下是您可以修改的停止条件的完整列表:
% 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);
我还没有测试代码。如果这有帮助,请告诉我:)
我正在 运行宁遗传算法使用 Matlab 中的全局优化工具箱。我想让算法 运行 直到最佳值之间的差异 <=10^{-15}。为此,我尝试使用 ftol 和 ctol,但该算法在 541 次迭代时终止。任何建议将不胜感激!
下面是我的 objective 函数的示例:
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])
以下是您可以修改的停止条件的完整列表:
% 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);
我还没有测试代码。如果这有帮助,请告诉我:)