智能优化算法与MATLAB编程实践
上QQ阅读APP看书,第一时间看更新

1.2.1 种群初始化

1.MATLAB随机数生成函数

随机数的生成采用MATLAB自带的随机数生成函数rand(),rand()会生成[0,1]之间的随机数。

>> rand()

运行结果如下:

ans =

   0.6740

如果要一次性生成多个随机数,可以使用rand(row, col),其中row和col分别代表行和列,如rand(3,4)表示生成3行4列的范围在[0,1]之间的随机数。

>> rand(3,4)

运行结果如下:

如果要生成指定范围内的随机数,其表达式如下:

r=lb+(ub-lb) ×rand()

式中,ub代表范围的上边界,lb代表范围的下边界。如在[0,3]范围内生成5个随机数:

ub = 3; %上边界
lb = 0; %下边界
r = (ub - lb).*rand(1,5) + lb

运行结果如下:

2.蜉蝣优化算法种群初始化函数编写

将蜉蝣优化算法种群初始化函数单独定义为一个函数,命名为initialization。利用随机数生成方式生成初始种群。

例如,设定种群数量为5,每个个体维度为3,每个维度的边界为[-3,3],利用初始化函数初始化种群。

pop = 5; %种群数量
dim = 3; %每个个体维度
ub = [3,3,3]; %上边界
lb = [-3,-3,-3]; %下边界
position = initialization(pop,ub,lb,dim)

运行结果如下:

从运行结果可以看出,通过初始化函数得到的种群均在设定的上下边界范围内。

为了更加直观地表现随机初始化函数的效果,设定种群数量为20,每个个体维度为2,维度边界分别设置为[0,1]、[-2,-1]、[2,3],绘制3种范围的随机数生成结果,如图1.3所示。

pop = 20; %种群数量
dim = 2; %每个个体维度
ub = [1,1]; %上边界
lb = [0,0]; %下边界
position0 = initialization(pop, ub, lb, dim);
ub = [-1,-1]; %上边界
lb = [-2,-2]; %下边界
position1 = initialization(pop, ub, lb, dim);
ub = [3,3]; %上边界
lb = [2,2]; %下边界
position2 = initialization(pop, ub, lb, dim);
figure
plot(position0(:,1),position0(:,2),'bo');
hold on
plot(position1(:,1),position1(:,2),'b.');
plot(position2(:,1),position2(:,2),'bo');
grid on
title('不同随机数范围生成结果')
xlabel('X')
ylabel('Y')
legend('[0,1]','[-2,-1]','[2,3]')

图1.3 程序运行结果

从图1.3可以看出,生成的种群均在相应的边界范围内产生。