資源簡介
NSGA II代碼實現集合包含實例、講解及 網絡模型與多目標遺傳算法書記(python、C、C++、matlab)
應用數學譯叢 網絡模型與多目標遺傳算法_(日)玄光男,林林著;梁承姬,于歆杰譯_北京:清華大學出版社_2017.03_248_14182156
代碼片段和文件信息
/*
程序功能:實現nsga2算法,測試函數為ZDT1ZDT2ZDT3ZDT4ZDT6DTLZ1DTLZ2
說明:遺傳算子為二進制競賽選擇,模擬二進制交叉和多項式變異
作者:(曉風)
email:?18821709267@163.com?
參考論文:
A?fast?and?Elitist?Multiobjective?Genetic?Algorithm:NSGA-Ⅱ
Kalyanmoy?DebAssociate?Member?IEEE?Amrit?Pratap?Sameer?Agarwal?and?T.Meyarivan
IEEE?TRANSACTIONS?ON?EVOLUTIONARY?COMPUTATION
最初建立時間:2018.10.12?
最近修改時間:2018.10.19?
*/
/*
算法使用說明:
1.本算法為NSGA2,實驗采用的測試函數為ZDT1ZDT2ZDT3ZDT4ZDT6DTLZ1DTLZ2,要選擇哪個函數請修改第123行。
2.文件輸出路徑請修改中127行的a數組,格式必須與a保持相同,第125行設置路徑中的實驗次數(做幾次實驗就設到幾,比如設置十次實驗就1-10,最大實驗次數為10,增加最大實驗次數還需修改213行之后,增加與上述相同的隨機種子選項即可)。
3.采用新的測試函數請修改input.h(13行開始是函數的約束條件)和func.h(41行開始是函數編寫的部分)兩個文件。
4.本算法默認采用實數編碼,但迭代過程中進行了二進制編碼,二進制編碼采用了兩種交叉類型,單點交叉和均勻交叉,選擇那個修改input.h的11行。如果要使用二進制編碼,請將func.h中的33-38行注釋變成代碼,29-32行加上注釋,即得到二進制編碼的結果。
5.本實驗可修改的參數(input.h中)有popsize(種群大?。?,gener(迭代次數),pcross(交叉概率),di(SBX交叉參數),dim(多項式變異參數),pmut_r(實數編碼的變異概率),pmut_b(二進制編碼的變異概率)
6.實驗的最大種群數為500,最大染色體長度為300,最大變量數目為30,最大函數數目為10,pi定義為3.1415926
7.實驗輸出結果有三個文件:1)output.txt?包含參數設置,每代的自變量值(實數編碼,二進制編碼),函數值,等級和擁擠度。2)fun.txt包含最后一代輸出的函數值?3)time.txt包含程序運行時間
8.本實驗沒有實現約束問題,得再次算法的基礎上進行修改。
*/
#include
#include
#include
#include
#include?
#define?square(x)?((x)*(x))
#define?maxpop?500//最大種群數
#define?maxchrom?300/*最大染色體長度*/
#define?maxvar?30?//最大變量數目
#define?maxfun?10?//最大函數數目
#define?PI?3.1415926
int?gener//迭代數目
????nvarnchrom//變量數目,染色體數目(二進制)
????vlen[maxvar]//儲存每個變量的位的個數的數組(二進制)
????optype//交叉類型:1為單點交叉和2為均勻交叉(二進制)
????nfunc//函數數目
????nmut//變異的個數
????ncross;//交叉的次數
float?seed//隨機種子
??????pcross//交叉概率
??????pmut_bpmut_r//變異概率
??????lim_b[maxvar][2]lim_r[maxvar][2]//數組中變量的限制
??????di//交叉的分布指數
??????dim;//變異的分布指數
static?int?popsize//種群數目
???????????chrom;//染色體總長度
double?coef[maxvar];//解碼使用的變量
/*個體*/
typedef?struct
{
????int?genes[maxchrom]//二進制染色體
????????rank???????????//個體等級
????????flag;???????????//等級標志
????float?xreal[maxvar]//實變量的集合
??????????xbin[maxvar];//染色體解碼之后的集合
????float?fitness[maxfun]//適應度函數
??????????crowd;??????????//擁擠距離??????
}individual;
/*種群*/
typedef?struct
{
????int?maxrank;//當前種群的最大等級
????int?rankno[maxpop];//個體的等級
????individual?ind[maxpop]//個體的集合
???????????????*ind_str;
}population;
#include?“input.h“????????/*輸入條件*/
#include?“random.h“???????/*隨機數量的算子*/
#include?“realinit.h“?????/*隨機初始化種群*/
#include?“init.h“?????????/*隨機初始化種群*/
#include?“decode.h“???????/*解碼二進制串*/
#include?“ranking.h“??????/*產生pareto前端*/
#include?“func.h“?????/*函數設置*/
#include?“select.h“???????/*二進制錦標賽*/
#include?“bincross.h“????/*二進制交叉*/
#include?“uniformxr.h“????/*均勻交叉*/
#include?“realcross.h“???/*實數交叉*/
#include?“binmut.h“??????????/*二進制變異*/
#include?“realmut.h“?????/*實數變異*/
#include?“keepaliven.h“???/*精英選擇和共享機制*/
#include?“report.h“???????/*打印輸出報告*/
population?old_pop
???new_pop
???mate_pop
???*old_pop_ptr
???*new_pop_ptr
???*mate_pop_ptr;
//定義種群結構
//計算程序運行時間
clock_t?st
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????9288??2019-03-22?22:13??NSGA?II\nsga2?C++版\NSGA2算法源代碼C++.txt
?????文件????????251??2019-03-22?22:18??NSGA?II\nsga2?C++版\算法說明.txt
?????文件???????1753??2018-10-17?16:09??NSGA?II\nsga2?C語言版\bincross.h
?????文件????????676??2018-10-17?09:52??NSGA?II\nsga2?C語言版\binmut.h
?????文件????????853??2018-10-15?11:58??NSGA?II\nsga2?C語言版\decode.h
?????文件???????3378??2018-10-19?20:52??NSGA?II\nsga2?C語言版\func.h
?????文件????????512??2018-10-15?11:57??NSGA?II\nsga2?C語言版\init.h
?????文件???????4844??2018-10-19?20:52??NSGA?II\nsga2?C語言版\input.h
?????文件??????10579??2018-10-18?12:34??NSGA?II\nsga2?C語言版\keepaliven.h
?????文件??????11692??2018-10-23?16:31??NSGA?II\nsga2?C語言版\nsga2.cpp
?????文件?????199694??2018-10-19?20:48??NSGA?II\nsga2?C語言版\nsga2.exe
?????文件???????1519??2018-10-15?11:00??NSGA?II\nsga2?C語言版\random.h
?????文件???????4378??2018-10-15?21:25??NSGA?II\nsga2?C語言版\ranking.h
?????文件???????3919??2018-10-17?09:29??NSGA?II\nsga2?C語言版\realcross.h
?????文件????????370??2018-10-15?11:57??NSGA?II\nsga2?C語言版\realinit.h
?????文件???????1650??2018-10-17?15:42??NSGA?II\nsga2?C語言版\realmut.h
?????文件???????2826??2018-10-18?19:46??NSGA?II\nsga2?C語言版\report.h
?????文件???????3309??2018-10-16?20:18??NSGA?II\nsga2?C語言版\select.h
?????文件???????1383??2018-10-19?20:45??NSGA?II\nsga2?C語言版\uniformxr.h
?????文件????????121??2019-03-22?22:01??NSGA?II\nsga2?C語言版\算法說明.txt
?????文件???????1273??2017-05-27?17:03??NSGA?II\nsga2?matlab\crowding_distance.m
?????文件????????970??2017-05-27?17:03??NSGA?II\nsga2?matlab\evaluate_ob
?????文件???????3509??2017-05-27?17:03??NSGA?II\nsga2?matlab\genetic_operator.m
?????文件???????5128??2017-05-27?17:03??NSGA?II\nsga2?matlab\html\crowding_distance.html
?????文件??????10289??2017-05-27?17:03??NSGA?II\nsga2?matlab\html\genetic_operator.html
?????文件???????4434??2017-05-27?17:03??NSGA?II\nsga2?matlab\html\initialize_variables.html
?????文件??????11714??2017-05-27?17:03??NSGA?II\nsga2?matlab\html\non_domination_sort_mod.html
?????文件??????13753??2017-05-27?17:03??NSGA?II\nsga2?matlab\html\nsga_2.html
?????文件???????6346??2017-05-27?17:03??NSGA?II\nsga2?matlab\html\replace_chromosome.html
?????文件???????6186??2017-05-27?17:03??NSGA?II\nsga2?matlab\html\tournament_selection.html
............此處省略39個文件信息
- 上一篇:C++游戲編程入門 中文版 第4版 高清
- 下一篇:C/C++ 程序員 面試寶典
評論
共有 條評論