




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
標(biāo)準(zhǔn)文檔智能優(yōu)化算法第一次作業(yè)--------------遺傳算法洪文杰S151000853問題:用遺傳算法求解f(x)=xsin(10π*x)+2.0的最大值,x取[-1,2].一、解析:遺傳算法基本思路二、實例簡介產(chǎn)生初始種群s1=13(01101)適用文案標(biāo)準(zhǔn)文檔s2=24(11000)s3=8(01000)s4=19(10011)計算適應(yīng)度假設(shè)適應(yīng)度為f(s)=s^2,則f(s1)=f(13)=13^2=169f(s2)=f(24)=24^2=576f(s3)=f(8)=8^2=64f(s4)=f(19)=19^2=361選擇染色體的選擇概率為:適用文案標(biāo)準(zhǔn)文檔染色體的累計概率為:依據(jù)上面的式子,可獲取:適用文案標(biāo)準(zhǔn)文檔比方設(shè)從區(qū)間[0,1]中產(chǎn)生4個隨機數(shù):r1=0.450126,r2=0.110347r3=0.572496,r4=0.98503適用文案標(biāo)準(zhǔn)文檔交叉基本遺傳算法(SGA)中交叉算子采用單點交叉算子。單點交叉運算變異適用文案標(biāo)準(zhǔn)文檔至下一代,適應(yīng)度計算→選擇→交叉→變異,直至知足停止條件三、解決問題適用文案標(biāo)準(zhǔn)文檔初始化輸入種群大小,交叉概率,變異概率等條件依據(jù)精度編碼將區(qū)間[-1,2]分紅Num份,再經(jīng)過Num求解種群基因個數(shù)([-1,2]用二進制均分)計算每個個體的適應(yīng)度,該題適應(yīng)度函數(shù)就是f(X)依據(jù)適應(yīng)度求解積累概率,并用輪盤賭法選著個體產(chǎn)生備選種群在備選種群中,利用交叉概率,隨機選擇個體,再隨機選擇交叉點進行單點交叉,形成交叉后的種群在交叉后種群中,利用變異概率,隨機選擇個體,再隨機選擇變異點進行單點變異,形成變異后的種群是否輸出結(jié)果最大能否達到值。迭代次數(shù)適用文案標(biāo)準(zhǔn)文檔四、實驗結(jié)果源代碼:/*問題:用遺傳算法求解f(x)=xsin(10π*x)+2.0的最大值,x取[-1,2].*//*洪文杰2016-3-9.智能優(yōu)化算法第一次作業(yè)*/#include<iostream>//#includ<stdio.h>#include<stdlib.h>#include<math.h>#include<time.h>#include<float.h>usingnamespacestd;#defineNUMBER50//種群規(guī)模#defineGENE_NUMBER10000//迭代次數(shù)intUnit[NUMBER][30];//初始種群intUnit_choose[NUMBER][30];//選擇、交叉、變異后的種群intNumber[NUMBER];//被選擇的個體編號floatFitness[NUMBER];//適應(yīng)度floatselect_probability[NUMBER];//選擇概率floataccumula_probability[NUMBER];//積累概率floatf_max=0.0;//最大值floatf_x=0.0;//最大值對應(yīng)的自變量inthwj_coding(intstart,intend);//編碼voidhwj_initial_population(intnum);//產(chǎn)生初始種群voidhwj_fitness(intnum);//適應(yīng)度計算voidhwj_choose();//選擇個體適用文案標(biāo)準(zhǔn)文檔inthwj_binary_search(intl,intr,floattemp);//查找選擇//voidhwj_N_M(inta[],intb[],intN,intM);//從M個數(shù)中選N個不同樣樣的數(shù)voidhwj_cross(intnum,floatcross);//交叉后的獲取種群voidhwj_aberrance(intnum,floataberrance);//變異后的獲取的種群voidhwj_max(intnum);//找到最適應(yīng)的個體intmain(){intstrat,end;//區(qū)間intNum;//編碼大小floatcross=0.8;//交叉概率floataberrance=0.04;//變異概率intkey=1;cout<<"請輸入求解區(qū)間:"<<endl;cin>>strat>>end;Num=hwj_coding(strat,end);cout<<"Num:"<<Num<<endl;//cout<<"--------------------------1-----------------"<<endl;hwj_initial_population(Num);//cout<<"--------------------------2初始種群-----------------"<<endl;/*for(inti=0;i<NUMBER;i++){for(intj=0;j<Num;j++){cout<<Unit[i][j]<<'';}cout<<endl;}*/while(key!=GENE_NUMBER){hwj_fitness(Num);//cout<<"--------------------------3適應(yīng)度-----------------"<<endl;for(inti=0;i<NUMBER;i++){cout<<Fitness[i]<<endl;}hwj_choose();//cout<<"--------------------------4被選擇的個體-----------------"<<endl;/*for(inti=0;i<NUMBER;i++){for(intj=0;j<Num;j++){cout<<Unit_choose[i][j]<<'';}cout<<endl;}*/hwj_cross(Num,cross);/*cout<<"--------------------------5交叉后的種群-----------------"<<endl;for(inti=0;i<NUMBER;i++){for(intj=0;j<Num;j++){適用文案標(biāo)準(zhǔn)文檔cout<<Unit[i][j]<<'';}cout<<endl;}*/hwj_aberrance(Num,aberrance);/*cout<<"--------------------------6變異后的種群-----------------"<<endl;for(inti=0;i<NUMBER;i++){for(intj=0;j<Num;j++){cout<<Unit[i][j]<<'';}cout<<endl;}*/key++;hwj_max(Num);}cout<<"最大值是對應(yīng)的x值是:"<<endl;cout<<f_x<<endl;cout<<"最大值為:"<<f_max<<endl;return0;}inthwj_coding(intstart,intend){//種群編碼floatprecision;inttemp=2;intsum;intN=1;cout<<"請輸入精度范圍:"<<endl;cin>>precision;if(precision==0){cout<<"對不起精度不可以為零:"<<endl;return0;}else{sum=(end-start)/precision;cout<<"sum:"<<sum<<endl;while(temp<sum){temp*=2;N++;}returnN;}}適用文案標(biāo)準(zhǔn)文檔voidhwj_initial_population(intnum){//生成初始種群srand(time(NULL));for(inti=0;i<NUMBER;i++){for(intj=0;j<num;j++){Unit[i][j]=rand()%2;}}}voidhwj_fitness(intnum){//計算適應(yīng)度floatsum;inttemp;for(inti=0;i<NUMBER;i++){temp=1;sum=0.0;for(intj=num-1;j>=0;j--){sum+=Unit[i][j]*temp;temp*=2.0;}Fitness[i]=sum*3/(temp-1.0)-1.0;cout<<Fitness[i];cout<<"--------------+++++";Fitness[i]=Fitness[i]*sin(10*3.1415926*Fitness[i])+2.0;cout<<Fitness[i]<<endl;}}inthwj_binary_search(intl,intr,floattemp){for(inti=0;i<NUMBER;i++){if(temp<=accumula_probability[i]&&temp>accumula_probability[i-1]){returni;}}return-1;}voidhwj_choose(){//選擇個體floatsum=0.0;floattemp;inti;for(i=0;i<NUMBER;i++){sum+=Fitness[i];}select_probability[0]=Fitness[0]/sum;temp=accumula_probability[0]=select_probability[0];for(i=1;i<NUMBER;i++){適用文案標(biāo)準(zhǔn)文檔select_probability[i]=Fitness[i]/sum;temp+=select_probability[i];accumula_probability[i]=temp;cout<<accumula_probability[i]<<endl;}for(i=0;i<NUMBER;i++){srand(time(NULL));temp=(rand()%1000000)/1000000.0;cout<<temp;Number[i]=hwj_binary_search(0,NUMBER,temp);cout<<Number[i]<<endl;for(intj=0;j<NUMBER;j++){Unit_choose[i][j]=Unit[Number[i]][j];}}}/*voidhwj_N_M(inta[],intb[],intN,intM){//從M個數(shù)中選N個不同樣樣的數(shù)inti=1;srand(time(NULL));a[0]=rand()%M;b[a[0]]=1;while(i!=N){a[i]=rand()%M;if(b[a[i]]==0){i++;b[a[i]]=1;cout<<a[i]<<endl;}}cout<<a[i]<<''<<b[a[i]]<<endl;}*/voidhwj_cross(intnum,floatcross){//交叉后的獲取種群intnum_cross=NUMBER*cross;intk;//交叉點inti,j;if(num_cross%2!=0){num_cross=num_cross+1;}//需要交叉的個體數(shù)intcro[NUMBER];//被交叉的個體編號inttemp[NUMBER];//能否交叉數(shù)組一覽for(i=0;i<NUMBER;i++){cro[i]=-1;temp[i]=0;}適用文案標(biāo)準(zhǔn)文檔hwj_N_M(cro,temp,num_cross,NUMBER);srand(time(NULL));cro[0]=rand()%NUMBER;temp[cro[0]]=1;i=1;while(i!=num_cross){cro[i]=rand()%NUMBER;if(temp[cro[i]]==0){temp[cro[i]]=1;i++;}}for(inti=0;i<NUMBER;i++){cout<<temp[i]<<""<<cro[i]<<endl;}cout<<num_cross<<endl;for(i=0;i<num_cross/2;i++){srand(time(NULL));k=rand()%num;for(j=0;j<num;j++){if(j<=k){Unit[i][j]=Unit_choose[cro[num_cross-i]][j];Unit[i+num_cross/2][j]=Unit_choose[cro[i]][j];}else{Unit[i][j]=Unit_choose[cro[i]][j];Unit[i+num_cross/2][j]=Unit_choose[cro[i]][j];}}}for(i=0;i<NUMBER;i++){cout<<temp[i]<<endl;if(temp[i]==0){for(j=0;j<num;j++){Unit[num_cross][j]=Unit_choose[i][j];}num_cross++;}}}voidhwj_aberrance(intnum,floataberrance){//變異后的獲取的種群intnum_aberrance=NUMBER*aberrance;//變異的個體數(shù)intk;//變異點適用文案標(biāo)準(zhǔn)文檔intabe[NUMBER];//變異的個體編號inttemp[NUMBER];//能否變異數(shù)組一覽inti,j,p;for(i=0;i<NUMBER;i++){abe[i]=-1;temp[i]=0;}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSM 0049-2024“領(lǐng)跑者”評價技術(shù)要求 機織兒童服裝
- 二零二五年度高效節(jié)能大棚租賃及能源管理協(xié)議
- 二零二五年度個人環(huán)保項目貸款抵押擔(dān)保合同
- 二零二五年度汽車銷售區(qū)域代理退出協(xié)議
- 二零二五年度街道辦事處社區(qū)工作者績效激勵聘用合同
- 二零二五年度智能交通管理系統(tǒng)知識產(chǎn)權(quán)授權(quán)協(xié)議
- 2025年度車輛質(zhì)押融資服務(wù)協(xié)議
- 二零二五年度高新技術(shù)園區(qū)建設(shè)資金委托墊資合同
- 2025年度終止供貨協(xié)議函模板與合同終止后的利益平衡
- 企業(yè)采購管理流程改進調(diào)研報告
- 腹部外傷護理查房記錄
- 橋面鋪裝三維激光攤鋪施工工法
- 優(yōu)質(zhì)課一等獎小學(xué)綜合實踐《我也能發(fā)明》課件
- 部編人教版三年級下冊語文:荷花課件
- 螺紋牙強度校核計算
- 關(guān)于在生產(chǎn)過程中物料流轉(zhuǎn)的交接和管理規(guī)定
- 浮針療法的學(xué)習(xí)課件
- XX學(xué)院社團指導(dǎo)老師學(xué)期考核表
- 獸醫(yī)外科手術(shù)學(xué)與獸醫(yī)外科學(xué)章節(jié)測試及答案
- 德能勤績量化考核表
- GB/T 6545-1998瓦楞紙板耐破強度的測定法
評論
0/150
提交評論