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