官术网_书友最值得收藏!

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可以看出,生成的種群均在相應的邊界范圍內產生。

主站蜘蛛池模板: 威远县| 诏安县| 太仆寺旗| 浦东新区| 隆昌县| 博乐市| 兴安盟| 襄樊市| 乐至县| 中宁县| 清水县| 泰来县| 繁昌县| 旌德县| 固始县| 仪陇县| 平潭县| 玉屏| 竹北市| 龙陵县| 当阳市| 江陵县| 宜兴市| 三都| 清镇市| 谢通门县| 班戈县| 磐安县| 皋兰县| 阜阳市| 屏东市| 江源县| 苏尼特左旗| 福海县| 扶绥县| 万荣县| 石阡县| 藁城市| 绥宁县| 花莲县| 金门县|