智能优化算法改进策略-佳点集

佳点集理论

蝴蝶算法在初始化种群的时候采用的是随机生成。随机代表着不确定,且随机生成的种群在整个空间上表现为不均匀;为消除随机初始化带来的不确定,和种群在空间上分布不均匀问题,由此引出新的初始化种群方式:佳点集生成种群。

佳点集最初由华罗庚等提出,其基本定义与构造为:设Gs是s维欧氏空间中的单位立方体,如果r属于G,形为Pn(k)={({(r1^(n))*k},{(r2^(n))*k},...{(rs^(n))*k}),1≤k≤n},其偏差 φ(n)满足φ(n)=C(r,ε)n^(-1+ε),其中:C(r,ε)是只与r和 ε(ε是任意的正数)有关的常数,则称 P(k)为佳点集,r为佳点。取r={2cos(2*pi*k/p)1≤k<s}(p 是满足(p-3)/2>s的最小素数,则r为佳点

佳点集初始化种群的方法

已知:种群所在的空间维度为n,种群数量为m

佳点集对比程序

% 分别画出2维,3维情况下采用佳点集和随机生成图的对比

% 定于种群大小

pop_size = 100;

% 定义种群的取值范围

dimension_2 = 2;

dimension_3 = 3;

bounds_2 = [ones(dimension_2,1)*0,ones(dimension_2,1)*1];

bounds_3 = [ones(dimension_3,1)*0,ones(dimension_3,1)*1];

% 二维、三维的佳点集种群

pop2 = init_pop(pop_size,dimension_2,bounds_2);

pop3 = init_pop(pop_size,dimension_3,bounds_3);

% 二维、三维随机生成的种群

pop2_rand = init_pop_rand(pop_size,dimension_2,bounds_2);

pop3_rand = init_pop_rand(pop_size,dimension_3,bounds_3);

% 画出二维下图形佳点集种群,和随机种群

figure(1)

subplot(2,2,1)

plot(pop2(:,1),pop2(:,2),'*')

subplot(2,2,2)

plot(pop2_rand(:,1),pop2_rand(:,2),'*')

subplot(2,2,3)

plot3(pop3(:,1),pop3(:,2),pop3(:,3),'*')

subplot(2,2,4)

plot3(pop3_rand(:,1),pop3_rand(:,2),pop3_rand(:,3),'*')

%% 佳点集

% pop_size:种群数量

% dimension:维度

% bound:取值范围

function pop = init_pop(pop_size,dimension,bounds)

%佳点集生成初始种群

p = zeros(pop_size,dimension);

prime_number_min = dimension*2 +3;

% 找到(prime_number_min-3)/2>=dimension的最小素数prime_number_min

while 1

    if isprime(prime_number_min)==1

        break;

    else

       prime_number_min = prime_number_min + 1;

    end

end

for i = 1:pop_size

    for j = 1:dimension

        r = mod(2*cos(2*pi*j/prime_number_min)*i,1);% 对应维度的r

%         r = mod(exp(j)*i,1);

        p(i,j) = bounds(j,1)+r*(bounds(j,2)-bounds(j,1));

    end

end

pop = p;

end

%%  随机种群

function pop = init_pop_rand(pop_size,dimension,bounds)

%随机i生成定义域范围内种群

p = rand(pop_size,dimension);%生成popsize*dimension的0-1矩阵

for i = 1:dimension

    p(:,i) = bounds(i,1)+p(:,i)*(bounds(i,2)-bounds(i,1));

end

pop = p;

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值