NSGA2算法代码理解
NSGA2算法代碼理解:
設(shè)置200個(gè)個(gè)體,目標(biāo)函數(shù)為2個(gè),決策變量的個(gè)數(shù)為30,首先初始化得到一個(gè)每個(gè)個(gè)體位于0~1之間的決策變量,利用ZDT1函數(shù)求得目標(biāo)值,保存在數(shù)組中。
尋找非支配排序,在這200個(gè)個(gè)體中,選中一個(gè)個(gè)體,將這個(gè)個(gè)體和其余個(gè)體的目標(biāo)函數(shù)值比較,如果沒有一個(gè)個(gè)體可以支配他,那么就將其加入到非支配集合中
if individual(i).n == 0 %個(gè)體i非支配等級(jí)排序最高,屬于當(dāng)前最優(yōu)解集,相應(yīng)的染色體中攜帶代表排序數(shù)的信息
x(i,M + V + 1) = 1;
F(front).f = [F(front).f i];%等級(jí)為1的非支配解集
end
首先求出等級(jí)最高的非支配解集,然后遍歷這個(gè)解集,找出每個(gè)解支配的個(gè)體,將被支配數(shù)量減1,看是否成為一個(gè)非支配,如果是則加入到新的非支配集合中,如此反復(fù)知道新集合為空。
將種群一分為2,隨機(jī)選取最優(yōu)的種群作為父代,然后交叉變異形成子代,接著合并子代和父代,采取精英策略,得到新的子代。
注意,如果原種群是200個(gè),選取的合適繁殖的父代是100個(gè),生成大約200個(gè)子代,合并再選取200個(gè)作為新的種群。
代碼參考
https://blog.csdn.net/joekepler/article/details/80820240
總結(jié)
以上是生活随笔為你收集整理的NSGA2算法代码理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: maven上传命令
- 下一篇: 设计计算机程序时 要考虑计算的过程,算法