遗传算法:最小代数?

时间:2013-03-01 10:01:18

标签: matlab optimization genetic-algorithm minimum

我有一个Matlab脚本(实际上是一个函数,funModel),我试图用遗传算法解决7个整数变量:


nvars = 7; %number of variables
Aineq = [1 1 1 1 1 1 1]; Aeq = [];
bineq = [VesMaxCrew]; beq = [];
LowBound = [1 1 1 1 1 4 0];
UpBound = [1 1 VesMaxCrew 1 VesMaxCrew VesMaxCrew VesMaxCrew];
Nonlcon = [];
IntCon = [1:7]; % all 7 variables to be treated as integers
Options = gaoptimset('Display','iter',... %display every iteration
'Generations',70,... %maximum number of generations is 70
'TolFun',1,... %tolerance for optimisation is 1
'TolCon',1,...
'PlotFcns',@gaplotbestf);
OptimisedValue = ga(@funModel,nvars,Aineq,bineq,Aeq,beq,,LowBound,UpBound,NonlCon,IntCon,Options);

遗传算法工作正常并且在70代内很容易找到一个好的解决方案(可以用绘图函数@gaplotbestf看到)。通过当前输入,为25至30代后的每个人选择最佳解决方案。然而,该算法一直持续到51代为止。这似乎至少20代太多了。

即使我改变funModel的输入参数,遗传算法仍然运行至少51代,就像有一些约束或设置说算法必须运行最少51代。 (可以看出,已输入最大代数)

为什么算法不在25代或30代之间停止? (或者仅仅在30代之后) 更重要的是,有谁知道如何改变这个?

(我在Matlab文档中找不到关于最小代数的设置(gaoptimset)的任何内容。我也没能找到有同样问题/问题的人。)

1 个答案:

答案 0 :(得分:1)

“Stall generations”选项的默认值为50.这实际上是它在您的情况下停止的点。这可以被认为是最小代数。有关详细信息,请查看here

相关问题