- 智能優化算法與MATLAB編程實踐
- 陳克偉 魏曙光主編
- 605字
- 2024-12-31 17:34:24
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可以看出,生成的種群均在相應的邊界范圍內產生。
推薦閱讀
- Learning Cython Programming
- PyTorch自動駕駛視覺感知算法實戰
- C語言程序設計實訓教程
- Python測試開發入門與實踐
- Mastering matplotlib
- Java游戲服務器架構實戰
- 前端架構:從入門到微前端
- Learning Apache Kafka(Second Edition)
- 數據結構(C語言)
- Visual Basic程序設計與應用實踐教程
- Kinect for Windows SDK Programming Guide
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(1)
- Getting Started with Hazelcast(Second Edition)
- Programming with CodeIgniterMVC
- Java程序員面試筆試寶典(第2版)