版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
利用演化算法求約束優(yōu)化問題姓名: 學(xué)號(hào) 指導(dǎo)老師:1問題:用遺傳算法求解下列約束優(yōu)化問題:一、sin3(2二x1)sin(2二x2)maxf(x1,x2)xi(x1X2)其中:2g1(x)=xi-x21<0g2(x)=1-x2+(x2-4)2<00Mxi<10,0<x2<102演化算法計(jì)算過程:個(gè)體的編碼:采用實(shí)數(shù)向量編碼, 每一個(gè)個(gè)體是一實(shí)數(shù)對(duì)。 本文采用二進(jìn)制編碼, 自變量精度取小數(shù)點(diǎn)后三位,一個(gè)自變量需要二進(jìn)制位數(shù)為 14位,總共需要28位二進(jìn)制來編碼兩個(gè)自變量。譯碼:將二進(jìn)制編碼翻譯為變量的實(shí)數(shù)形式: xj=dec(14位二進(jìn)制位用)*0.01(i=1,2)適應(yīng)函數(shù):本文使用目標(biāo)函數(shù)作為適應(yīng)函數(shù)選擇策略:采用輪盤賭算法。雜交算子:隨機(jī)挑選兩條不同的染色體,隨機(jī)選出雜交位點(diǎn) kw[0,L-1],然后交換片段。完成后檢查重組后的染色體是否滿足約束條件, 若不滿足,則舍棄,恢復(fù)原染色體并重新雜交,直到完成15對(duì)染色體的雜交。變異算子:隨機(jī)生成14個(gè)隨機(jī)數(shù)pie[0,1]對(duì)應(yīng)于每條染色體的每個(gè)基因位點(diǎn),若 pi<pm則對(duì)該基因位點(diǎn)進(jìn)行變異。 同時(shí)完成變異后檢查是否滿足約束條件, 若不滿足,則舍棄變異,恢復(fù)染色體并重新變異直到滿足約束條件為止。參數(shù)設(shè)置:種群規(guī)模為30,最大代數(shù)為1000代,雜交概率0.9,變異概率0.1初始化:隨機(jī)產(chǎn)生初始種群,自動(dòng)生成初始群體,完成檢查是否滿足約束條件, 若不滿足,則重新初始化直到有30個(gè)個(gè)體滿足約束條件為止。終止條件:算法運(yùn)行所指定的最大代數(shù)后終止,即 1000代后終止迭代。
33實(shí)驗(yàn)結(jié)果表1四次實(shí)驗(yàn)結(jié)果比對(duì)表迭代次數(shù)500迭代次數(shù)1000A次運(yùn)行第二次運(yùn)行第三次運(yùn)行第四次運(yùn)行Xi1.2271.2481.2451.253X23.3033.3423.2593.251maxf(x1,x2)0.109440110450.093851245410.114697976850.11279980732由表1可以看出迭代次數(shù)越多遺傳算法的效果可能越好;并且多次迭代結(jié)果較為穩(wěn)定,證明沒有陷入局部優(yōu)化。表2某2次迭代過程表代數(shù)(迭代總次數(shù)1000)X1X2maxf(x1,x2)11.2894.3630.05720063406280318311.2954.230.07322047082080911751.2924.2540.075195615866267181341.2414.2560.094659884583908491371.2254.2620.09525349615511472最終結(jié)果1.2254.2620.0952534961551147211.3373.2460.056900429479572031.3213.3060.06461712393829212101.2973.2960.08375858854088097481.2813.2750.097390379205658811491.2713.2190.10366960257048366最終結(jié)果1.2713.2190.10366960257048366由表2可以看出迭代結(jié)果在經(jīng)過若干代后已經(jīng)趨于穩(wěn)定; 同時(shí)隨著迭代次數(shù)的增加,最優(yōu)值越來越靠近目標(biāo)值。對(duì)原有遺傳算法進(jìn)行改進(jìn),在進(jìn)行重組時(shí)將最好的兩個(gè)個(gè)體保留下來直接進(jìn)入下一次迭代,剩余個(gè)體繼續(xù)保持原來重組方式。表3不同遺傳算法運(yùn)算比對(duì)表原遺傳算子改進(jìn)遺傳算子第三次運(yùn)行第四次運(yùn)行第五次案六次x11.2451.2531.2671.251x23.2593.2513.2353.249maxf(x1,x2)0.114697976850.112799807320.106877506920.11349618572由表3可以看出實(shí)驗(yàn)結(jié)果穩(wěn)定。附錄(演化算法java實(shí)現(xiàn)代碼)importjava.lang.Math;importjava.util.Random;publicclassGA{publicstaticfinalintPOP_SIZE=30;//種群數(shù)目publicstaticString[]pop=newString[POP_SIZE];//種群編碼publicstaticPair[]result=newPair[POP_SIZE];//種群代表的結(jié)果publicstaticfinalintLENGTH=28;//編碼長度,因?yàn)橐_到小數(shù)點(diǎn)后六位,所以編為22位長,有一公式可參考publicstaticdouble口fitness=newdouble[POP_SIZE];//存放種群適應(yīng)度publicstaticfinaldoublePC=0.90;//交叉率publicstaticfinaldouble PM=0.1;//變異率publicstaticdouble口p=newdouble[POP_SIZE];//輪盤賭方法個(gè)體適應(yīng)度概率publicstaticdouble口q=newdouble[POP_SIZE];//q[i]是前i項(xiàng)p之和publicstaticPairpair=newPair(0,0);publicstaticMaxmax=newMax(0,pair);//最大值publicstaticRandomirandom=newRandom();//用于廣生隨機(jī)數(shù)的工具/*約束條件*/public{staticdoublegx1(Pairresult)returnMath.pow(result.getX1(),2)-result.getX2()+1;)publicstaticdoublegx2(Pairresult){return1-Math.pow(result.getX1(),2)+Math.pow(result.getX2()-4,2);)/*初始化種群*/publicvoidinitialization(){Stringa="0000000000000000000000000000" ;for(inti=0;i<pop.length;i++){pop[i]=a;)for(inti=0;i<POP_SIZE;i++){StringBuffers=newStringBuffer(pop[i]);for(intj=0;j〈LENGTHj++){doubletemp=Math.random();if(temp<0.5)s.setCharAt(j,'0');elses.setCharAt(j,'1');)//剔除不符合約束的初始化pop[i]=s.toString();decoding();fitness();if(gx1(result[i])>0||gx2(result[i])>0||result[i].getX1()>10||result[i].getX1()>10)i--;))/**解碼方法,將二進(jìn)制字節(jié)碼還原為解*/publicvoiddecoding(){for(inti=0;i<POP_SIZE;i++){String subX1=pop[ i ].substring(0,14);String subX2=pop[ i ].substring(14,28);double x1=Integer. parseInt(subX1 , 2);double x2=Integer. parseInt(subX2,2);result[i]=newPair(x1*0.001,x2*0.001);))/*適應(yīng)度函數(shù),也是目標(biāo)函數(shù)*/publicvoidfitness(){for(inti=0;i<result.length;i++){[i].getX1()),fitness[i]=Math.pow(Math.sin(2*Math.PI*result3)*Math.sin(2*Math.PI*result[i].getX2())[i].getX1()),/(Math.pow(result[i].getX1(),3)*(result[i].getX1()+result[i].getX2()));))/*交叉操作*/publicvoidcrossover(){for(inti=0;i<POP_SIZE/2;i++)
doubled=random.nextDouble();if(d<PC)(int k1=random.nextInt( POP_SIZE);int k2=random.nextInt( POP_SIZE);while(k1==k2||k1==1||k1==2||k2==1||k2==2)(k1=(int)random.nextInt(POP_SIZE);k2=(int)random.nextInt( POP_SIZE);}intposition =random.nextInt( LENGTH;Strings11=null,s12=null,s21=null,s22=nullposition);position,LENGTH);position);position);position,LENGTH);position);position,LENGTH);pop[k2]=s21+s12;//恢復(fù)不符合約束的重組,再重組decoding();fitness();[k2])if(gx1(result[k1])>0||gx2(result[k1])>0||gx1(result[k2])>0||gx2(result>0||[k2])result[k1].getX1()>10||result[k2].getX1()>10)(pop[k1]=s11+s12;pop[k2]=s21+s22;i--;decoding();fitness();}}}}/**變異操作*/publicvoidmutation()(for(inti=2;i<pop.length;i++)Strings=pop[i];for(intj=0;j<LENGTHj++)
(doublek=random.nextDouble();if(k<PM(s);StringBuffersb=newStringBuffer(if(sb.charAt(j)=='0')sb.setCharAt( j,'1');s);elsesb.setCharAt( j,'0');pop[i]=sb.toString();}}//恢復(fù)不符合約束的變異,重新變異decoding();fitness();if(gx1(result[i])>0||gx2(result[i])>0||result[i].getX1()>10||result[i].getX1()>10)(pop[i]=s;i--;decoding();fitness();}}}/**輪盤賭方法算法*/publicvoidroulettewheel()doublesum=0;for(inti=0;doublesum=0;for(inti=0;(sum=fitness}for(inti=0;(p[i]=fitness}for(inti=0;i<POP_SIZE;i++)[i]+sum;i<POP_SIZE;i++)[i]/sum;i<POP_SIZE;i++)for(intj=0;j<=i;j++)(q[i]+=P[j];))double[]ran=newdouble[POP_SIZE];String[]tempPop=newString[POP_SIZE];for(inti=0;i<ran.length;i++)(ran[i]=random.nextDouble();)for(inti=0;i<ran.length;i++)(intk=0;while(ran[i]>q[k])(k++;)tempPop[i]=pop[k];)for(inti=0;i<tempPop.length;i++)(pop[i]=tempPop[i];))publicvoidevaluate()(for(inti=0;i<fitness.length;i++)(if(fitness[i]>max.getMax())(maxsetMax(fitness[i]);maxsetPair( result[i]);)))publicstaticvoidmain(String[]args)(GAga=newGA();System. out.println( "初始化中..");System. out.println();ga.initialization();ga.decoding();ga.fitness();for(inti=0;i<1000;i++)(ga.roulettewheel();ga.decoding。;ga.fitness();ga.crossover();ga.mutation();ga.decoding。;ga.fitness();ga.evaluate();System.out.println(i+"."+"最優(yōu)解為:X1="+max.getPair().getX1()+"\tX2="+max.getPair().getX2()+"\tMax="+max.max);}System. out .println();System. out .println( "迭代結(jié)果為:");System. out .println( "最優(yōu)解為:\rX1="+max.getPair().getX1()+"\r'n" +"X2="+max.getPair().getX2());System.out.println("函數(shù)最大值\rf="+max.getMax());/*測(cè)試代碼段*/doublea=Math.pow(Math.sin(2*Math.PI*max.getPair().getX1()),3)*Math.sin(2*Math.PI*max.getPair().getX2())/(Math.pow(max.getPair().getX1(),3)*(max.getPair().getX1()+ max.getPair().getX2()));doublegx1=Math.pow(max.getPair().getX1(),2)- max.getPair().getX2()+1;doublegx2=1-Math.pow
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全在我心中課件
- 《解方程》數(shù)學(xué)課件教案
- 2025福建廈門海峽投資有限公司運(yùn)營支持崗、軟件開發(fā)崗、商務(wù)崗社會(huì)招聘3人模擬筆試試題及答案解析
- 2026天津市北方人力資源管理顧問有限公司河西分公司(代理制)天津高級(jí)中學(xué)-骨干教師及青年教師招聘模擬筆試試題及答案解析
- 2025年黃山學(xué)院招聘勞務(wù)派遣工作人員13名參考考試題庫及答案解析
- 2025上海對(duì)外經(jīng)貿(mào)大學(xué)公開招聘工作人員參考考試題庫及答案解析
- 2025年福建醫(yī)科大學(xué)附屬第二醫(yī)院招聘非在編工作人員2人考試備考題庫及答案解析
- 2025化學(xué)所有機(jī)固體實(shí)驗(yàn)室項(xiàng)目聘用人員招聘模擬筆試試題及答案解析
- 網(wǎng)店廣告合同范本
- 職工承包合同范本
- 浙江省建設(shè)工程施工現(xiàn)場(chǎng)安全管理臺(tái)賬實(shí)例
- 社會(huì)主義發(fā)展史知到章節(jié)答案智慧樹2023年齊魯師范學(xué)院
- 美國史智慧樹知到答案章節(jié)測(cè)試2023年東北師范大學(xué)
- GB/T 15924-2010錫礦石化學(xué)分析方法錫量測(cè)定
- GB/T 14525-2010波紋金屬軟管通用技術(shù)條件
- GB/T 11343-2008無損檢測(cè)接觸式超聲斜射檢測(cè)方法
- GB/T 1040.3-2006塑料拉伸性能的測(cè)定第3部分:薄膜和薄片的試驗(yàn)條件
- 教師晉級(jí)專業(yè)知識(shí)和能力證明材料
- 申報(bào)專業(yè)技術(shù)職稱課件-
- 排隊(duì)叫號(hào)系統(tǒng)施工技術(shù)方案
- 應(yīng)用3-農(nóng)業(yè)收獲機(jī)器人課件
評(píng)論
0/150
提交評(píng)論