【发布时间】:2017-03-24 06:21:52
【问题描述】:
我在一些参考资料中发现 SBX 的后代分布对于 2d 向量必须具有以下形状: enter image description here
但是我的实现与那个形状不同:
par1 = [.2; .2];
par2 = [.8; .8];
eta = 15;
child1 = zeros(2,1);
child2 = child1;
hold on
for k = 1:100
for i = 1:2
u = rand;
if (u<0.5)
beta=(2*u)^(1/(eta+1));
elseif (u>0.5)
beta=(0.5/(1-u))^(1/(eta+1));
elseif (u == .5)
beta = 1;
end
c1(i) = 0.5*(par1(i)+par2(i)) - 0.5*beta*abs(par1(i)-par2(i));
c2(i) = 0.5*(par1(i)+par2(i)) + 0.5*beta*abs(par1(i)-par2(i));
end
plot([c1(1), c2(1)], [c1(2), c2(2)], 'b.')
end
这是我的输出:enter image description here 我认为我的实现是正确的,但我不知道为什么我无法达到所需的数字。
【问题讨论】:
标签: matlab genetic-algorithm evolutionary-algorithm