




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.智能優(yōu)化算法第一次作業(yè) -遺傳算法 洪文杰 S151000853問(wèn)題:用遺傳算法求解f(x)=xsin(10*x)+2.0的最大值,x取-1,2.一、分析:遺傳算法基本思路二、實(shí)例簡(jiǎn)介1. 產(chǎn)生初始種群s1= 13 (01101)s2= 24 (11000)s3= 8 (01000)s4= 19 (10011)2. 計(jì)算適應(yīng)度假定適應(yīng)度為f(s)=s2 ,則f (s1) = f(13) = 132 = 169f (s2) = f(24) = 242 = 576f (s3) = f(8) = 82 = 64f (s4) = f(19) = 192 = 3613.選擇染色體的選擇概率為:染色體的
2、累計(jì)概率為:根據(jù)上面的式子,可得到:例如設(shè)從區(qū)間0, 1中產(chǎn)生4個(gè)隨機(jī)數(shù): r1 = 0.450126, r2 = 0.110347 r3 = 0.572496, r4 = 0.985034. 交叉基本遺傳算法(SGA)中交叉算子采用單點(diǎn)交叉算子。單點(diǎn)交叉運(yùn)算5.變異6.至下一代,適應(yīng)度計(jì)算選擇交叉變異,直至滿足終止條件三、解決問(wèn)題初始化輸入種群大小,交叉概率,變異概率等條件根據(jù)精度編碼將區(qū)間-1,2分成Num份,再通過(guò)Num求解種群基因個(gè)數(shù)(-1,2用二進(jìn)制等分)計(jì)算每個(gè)個(gè)體的適應(yīng)度,該題適應(yīng)度函數(shù)就是f(X)根據(jù)適應(yīng)度求解積累概率,并用輪盤(pán)賭法選著個(gè)體產(chǎn)生備選種群在備選種群中,利用交叉概率
3、,隨機(jī)選擇個(gè)體,再隨機(jī)選擇交叉點(diǎn)進(jìn)行單點(diǎn)交叉,形成交叉后的種群在交叉后種群中,利用變異概率,隨機(jī)選擇個(gè)體,再隨機(jī)選擇變異點(diǎn)進(jìn)行單點(diǎn)變異,形成變異后的種群是否達(dá)到迭代次數(shù)輸出結(jié)果最大值。是否 四、實(shí)驗(yàn)結(jié)果源代碼:/*問(wèn)題:用遺傳算法求解f(x)=xsin(10*x)+2.0的最大值,x取-1,2.*/*洪文杰 2016-3-9. 智能優(yōu)化算法 第一次作業(yè)*/#include/#includ#include#include#include#includeusing namespace std;#define NUMBER 50/種群規(guī)模#define GENE_NUMBER 10000/迭代次數(shù)i
4、nt UnitNUMBER30;/初始種群int Unit_chooseNUMBER30;/選擇、交叉、變異后的種群int NumberNUMBER;/被選擇的個(gè)體編號(hào)float FitnessNUMBER;/適應(yīng)度f(wàn)loat select_probabilityNUMBER;/選擇概率float accumula_probabilityNUMBER ;/積累概率float f_max=0.0;/最大值float f_x=0.0;/最大值對(duì)應(yīng)的自變量int hwj_coding(int start,int end);/編碼void hwj_initial_population(int num)
5、;/產(chǎn)生初始種群void hwj_fitness(int num);/適應(yīng)度計(jì)算void hwj_choose();/選擇個(gè)體int hwj_binary_search(int l, int r,float temp);/查找選擇/void hwj_N_M(int a,int b,int N, int M);/從M個(gè)數(shù)中選N個(gè)不一樣的數(shù)void hwj_cross(int num,float cross);/交叉后的得到種群void hwj_aberrance(int num,float aberrance);/變異后的得到的種群void hwj_max(int num);/找到最適應(yīng)的個(gè)體i
6、nt main()int strat,end;/區(qū)間int Num;/編碼大小float cross=0.8;/交叉概率float aberrance = 0.04;/變異概率int key=1;cout請(qǐng)輸入求解區(qū)間:stratend;Num=hwj_coding(strat,end);coutNum:Numendl;/cout-1-endl; hwj_initial_population(Num);/cout-2初始種群-endl;/*for(int i=0;iNUMBER;i+)for(int j=0;jNum;j+) coutUnitij ;coutendl;*/while(key!=
7、GENE_NUMBER)hwj_fitness(Num);/cout-3適應(yīng)度-endl;/for(int i=0;iNUMBER;i+)/coutFitnessiendl;/hwj_choose();/cout-4被選擇的個(gè)體-endl;/*for(int i=0;iNUMBER;i+)for(int j=0;jNum;j+) coutUnit_chooseij ;coutendl;*/hwj_cross(Num,cross);/*cout-5交叉后的種群-endl;for(int i=0;iNUMBER;i+)for(int j=0;jNum;j+) coutUnitij ;coutend
8、l;*/hwj_aberrance(Num,aberrance);/*cout-6變異后的種群-endl;for(int i=0;iNUMBER;i+)for(int j=0;jNum;j+) coutUnitij ;coutendl;*/key+;hwj_max(Num);cout最大值是對(duì)應(yīng)的x值是:endl;coutf_xendl;cout最大值為:f_maxendl;return 0;int hwj_coding(int start,int end)/種群編碼float precision;int temp=2;int sum;int N=1;cout請(qǐng)輸入精度范圍:precision
9、;if(precision=0) cout對(duì)不起精度不能為零:endl; return 0;elsesum=(end-start)/precision;coutsum:sumendl;while(tempsum)temp*=2; N+;return N;void hwj_initial_population(int num)/生成初始種群srand(time(NULL);for(int i=0;iNUMBER;i+)for(int j=0;jnum;j+)Unitij=rand()%2;void hwj_fitness(int num)/計(jì)算適應(yīng)度f(wàn)loat sum;int temp;for(
10、int i=0;i=0;j-)sum+=Unitij*temp;temp*=2.0;Fitnessi=sum*3/(temp-1.0)-1.0;/coutFitnessi;/cout-+;Fitnessi=Fitnessi*sin(10*3.1415926*Fitnessi)+2.0;/coutFitnessiendl;int hwj_binary_search(int l,int r,float temp)for(int i=0;iNUMBER;i+)if(tempaccumula_probabilityi-1)return i;return -1; void hwj_choose()/選擇
11、個(gè)體float sum=0.0;float temp;int i;for(i=0;iNUMBER;i+)sum+=Fitnessi;select_probability0=Fitness0/sum;temp=accumula_probability0=select_probability0;for(i=1;iNUMBER;i+)select_probabilityi=Fitnessi/sum;temp+=select_probabilityi;accumula_probabilityi=temp;/coutaccumula_probabilityiendl;for(i=0;iNUMBER;i+
12、)/srand(time(NULL);temp=(rand()%1000000)/1000000.0;/couttemp;Numberi=hwj_binary_search(0,NUMBER,temp);/coutNumberiendl;for(int j=0;jNUMBER;j+)Unit_chooseij=UnitNumberij;/*void hwj_N_M(int a,int b,int N,int M)/從M個(gè)數(shù)中選N個(gè)不一樣的數(shù) int i=1;srand(time(NULL);a0=rand()%M;ba0=1;while(i!=N) ai=rand()%M; if(bai=0)
13、 i+; bai=1; coutaiendl; / coutai baiendl; */void hwj_cross(int num,float cross)/交叉后的得到種群int num_cross=NUMBER*cross;int k;/交叉點(diǎn)int i , j;if(num_cross%2!=0)num_cross=num_cross+1;/需要交叉的個(gè)體數(shù)int croNUMBER;/被交叉的個(gè)體編號(hào)int tempNUMBER;/是否交叉數(shù)組一覽for(i=0;iNUMBER;i+)croi=-1;tempi=0;/hwj_N_M(cro,temp,num_cross,NUMBER
14、); srand(time(NULL); cro0=rand()%NUMBER; tempcro0=1; i=1; while(i!=num_cross) croi=rand()%NUMBER; if(tempcroi=0) tempcroi=1; i+; /for(int i=0;iNUMBER;i+)/couttempi croiendl;/coutnum_crossendl;for(i=0;inum_cross/2;i+)srand(time(NULL);k=rand()%num;for(j=0;jnum;j+)if(j=k)Unitij=Unit_choosecronum_cross-
15、ij; Uniti+num_cross/2j=Unit_choosecroij;elseUnitij=Unit_choosecroij; Uniti+num_cross/2j=Unit_choosecroij;for(i=0;iNUMBER;i+)/couttempiendl;if(tempi=0)for(j=0;jnum;j+)Unitnum_crossj=Unit_chooseij;num_cross+;void hwj_aberrance(int num,float aberrance)/變異后的得到的種群int num_aberrance=NUMBER*aberrance;/變異的個(gè)體
16、數(shù)int k;/變異點(diǎn)int abeNUMBER;/變異的個(gè)體編號(hào)int tempNUMBER;/是否變異數(shù)組一覽int i,j,p;for(i=0;iNUMBER;i+)abei=-1;tempi=0;/hwj_N_M(cro,temp,num_cross,NUMBER); srand(time(NULL); abe0=rand()%NUMBER; tempabe0=1; i=1; while(i!=num_aberrance) abei=rand()%NUMBER; if(tempabei=0) tempabei=1; i+; for( i=0;iNUMBER;i+)for( j=0;jnum_aberrance;j+)if(i=abej)k=rand()%num;for( p=0;pnum;p+)if(p=k)if
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤礦從業(yè)人員安全風(fēng)險(xiǎn)分級(jí)管控專項(xiàng)培訓(xùn)課件
- 房地產(chǎn)承包經(jīng)營(yíng)合同書(shū)
- 供應(yīng)鏈質(zhì)量管理實(shí)務(wù)操作指南
- 2025年市場(chǎng)營(yíng)銷學(xué)課件:理論與中國(guó)市場(chǎng)
- 三農(nóng)村公共服務(wù)均等化與便捷化實(shí)施方案
- 網(wǎng)絡(luò)安全應(yīng)急響應(yīng)處理手冊(cè)
- 集成開(kāi)發(fā)環(huán)境使用說(shuō)明書(shū)
- 實(shí)習(xí)員工勞務(wù)合同
- 法律服務(wù)保密協(xié)議書(shū)
- 地產(chǎn)行業(yè)投資項(xiàng)目表
- 酒店幕墻工程單元板塊幕墻軌道吊裝方案
- 裝飾材料與構(gòu)造(共153張PPT)
- 職業(yè)健康安全交底
- GB∕T 28610-2020 甲基乙烯基硅橡膠
- GB∕T 7588.1-2020 電梯制造與安裝安全規(guī)范 第1部分:乘客電梯和載貨電梯
- 4.昆蟲(chóng)備忘錄 課件(共15張PPT)
- DB37∕T 5191-2021 高延性混凝土加固技術(shù)規(guī)程
- 2022年全省公訴業(yè)務(wù)知識(shí)考試參考答案
- 鎮(zhèn)政府(街道辦事處)辦公大樓平面圖
- 軟壓光機(jī)計(jì)算說(shuō)明
- 森林防火安全責(zé)任書(shū)(施工隊(duì)用)
評(píng)論
0/150
提交評(píng)論