Matlab GA评估不正确的适用性值。这可能是什么原因?

时间:2018-10-02 09:27:26

标签: matlab optimization genetic-algorithm

我正在尝试使用GA最小化一个函数,但它“看到”了不正确的适应性值。我的GA脚本如下所示:

ObjectiveFunction = @FF;
ConstraintFunction = @constraints;
nvars = 5;
LB = [1e9 1e9 0.1 -1 1e9];
UB = [1.3825E+12    6.45E+11    0.272   +1   1.12E+11];
options = optimoptions('ga','PlotFcn',{@gaplotbestf, @gaplotscores},'Display','Iter','FitnessLimit',0.25,'PopulationSize',20);
[HOM_MOD,FF_val] = ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB,ConstraintFunction,options); 

FF(健身功能)的第一行和最后一行如下:

function y = FF(moduli_short)
...
E = [3.73E+10   3.62E+10    3.81E+10    3.36E+09    1.83E+10];
y = abs(energies(1)-E(1))/E(1) + abs(energies(2)-E(2))/E(2) + abs(energies(3)-E(3))/E(3) + abs(energies(4)-E(4))/E(4) + abs(energies(5)-E(5))/E(5);

当评估第一代时,将显示图,但这些值没有任何意义。图中的适应度值约为-10 ^ 19,而从FF适应度可以看出,该值甚至不能为负。我从FF函数打印适应度值只是为了确保它们始终在5到1000之间,而不是-10 ^ 19。由于这种异常,代码从不收敛(并在无用的点上不断评估FF函数)。最后但并非最不重要的一点是,绘图不会超过第一代,并且命令窗口中的输出如下所示:

                              Best       Max        Stall
Generation  Func-count        f(x)     Constraint  Generations

没有任何后续内容。

我尝试了一个只有2个输入的简单代码,在这种情况下可以正常工作。有人对我为什么会遇到这个问题有任何猜测吗?

0 个答案:

没有答案