《遺傳算法》實(shí)驗(yàn)指導(dǎo)書_第1頁
《遺傳算法》實(shí)驗(yàn)指導(dǎo)書_第2頁
《遺傳算法》實(shí)驗(yàn)指導(dǎo)書_第3頁
《遺傳算法》實(shí)驗(yàn)指導(dǎo)書_第4頁
《遺傳算法》實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí) 驗(yàn) 一專心-專注-專業(yè)遼寧科技大學(xué) 理 學(xué)院(系) 2010 年 月 日課名:遺傳算法題目:隨機(jī)函數(shù)與函數(shù)調(diào)用班級:姓名:學(xué)號:機(jī)臺號:同組人: 任課教師:熊 焱實(shí)驗(yàn)?zāi)康模?. 掌握隨機(jī)數(shù)的生成函數(shù)2. 熟悉函數(shù)調(diào)用的基本操作實(shí)驗(yàn)內(nèi)容及步驟:內(nèi)容:利用隨機(jī)函數(shù)生成 1,10 和 0,1 內(nèi)隨機(jī)數(shù)各個; 編寫數(shù)組作為參量的函數(shù)調(diào)用程序條件:調(diào)用函數(shù)關(guān)系自己選定(如: ),數(shù)組取為實(shí)型 要求:生成隨機(jī)數(shù)之后屏幕顯示出來;數(shù)組、函數(shù)關(guān)系、函數(shù)值顯示在屏幕上。程序:#include <stdio.h>#include<stdlib.h>void m

2、ain() float e5;int d5; int j,x;float y,z;for(j=0;j<5;j+)dj=1+(int)(10.0*rand()/(RAND_MAX+1.0);printf(" %d ",dj);printf("n");for(j=0;j<5;j+)ej=rand()/(RAND_MAX+1.0);printf(" %.2f ",ej); printf("n"); for(j=0;j<5;j+)x=dj;y=ej; z=x*x+y*y*y+x*y;printf(&quo

3、t; %.2f ",z); printf("n"); printf("x*x+y*y*y+x*yn");實(shí) 驗(yàn)二遼寧科技大學(xué) 理 學(xué)院(系) 2010 年 月 日課名:遺傳算法題目:編碼、解碼班級:姓名:學(xué)號:機(jī)臺號:同組人: 任課教師:熊 焱實(shí)驗(yàn)?zāi)康模?. 掌握二進(jìn)制數(shù)與十進(jìn)制數(shù)的相互轉(zhuǎn)化2. 熟悉不同劃分長度下的二進(jìn)制與十進(jìn)制的轉(zhuǎn)化操作實(shí)驗(yàn)內(nèi)容及步驟:內(nèi)容:將十進(jìn)制數(shù)轉(zhuǎn)化為指定長度下的二進(jìn)制數(shù) 將二進(jìn)制數(shù)轉(zhuǎn)化為指定長度下的十進(jìn)制數(shù)條件:利用函數(shù)調(diào)用的方法編寫程序,長度設(shè)為輸入量(可調(diào)節(jié)),十進(jìn)制數(shù)為單變量實(shí)型、二進(jìn)制數(shù)存為數(shù)組(每個數(shù)組單元

4、存儲一位);要求:轉(zhuǎn)換結(jié)果屏幕輸出。#include <stdio.h>#include <math.h>void sje(int n,int m) int x=0,a100=0; while(n) ax+=n%2;n/=2; while(m>0) m-; printf("%d",am); void ejs(int *a,int x) int sum=0;while(x>0)x-;sum+=ax*pow(2.0,x);printf("%dn",sum);void main()int m,n,x,a100;int i;p

5、rintf("請輸入轉(zhuǎn)換的數(shù):n"); scanf("%d",&n);printf("請輸入要轉(zhuǎn)化在長度:n");scanf("%d",&m);sje(n,m);printf("n");printf("請輸入轉(zhuǎn)換的二進(jìn)制數(shù)長度:n");scanf("%d",&x);printf("請輸入轉(zhuǎn)換的二進(jìn)制數(shù):n");for(i=x-1;i>=0;i-)scanf("%d",&ai);e

6、js(a,x);實(shí) 驗(yàn) 三遼寧鞍山科技大學(xué) 理 學(xué)院(系) 2010 年 月 日課名:遺傳算法題目:初始種群班級:姓名:學(xué)號:機(jī)臺號:同組人: 任課教師:熊 焱實(shí)驗(yàn)?zāi)康模赫莆粘跏既后w的生成過程實(shí)驗(yàn)內(nèi)容及步驟:內(nèi)容:生成二進(jìn)制編碼下的初始種群。條件:個體范圍給定,種群規(guī)模設(shè)為變量(可調(diào)節(jié))。要求:屏幕顯示所生成的初始群體#include <stdio.h>#include<conio.h>#include<stdlib.h>int random()return rand()%100;void sje(int n,int m) int x=0,a100=0; w

7、hile(n) ax+=n%2;n/=2; while(m>0) m-; printf("%d",am); void main()int x,y=0;printf("種群規(guī)模:n");scanf("%d",&x);while(y<x)sje(random(),8);printf("n");y+;實(shí) 驗(yàn) 四鞍山科技大學(xué) 理 學(xué)院(系) 2010 年 月 日課名:遺傳算法題目:選擇算子班級:姓名:學(xué)號:機(jī)臺號:同組人:任課教師:熊 焱實(shí)驗(yàn)?zāi)康模赫莆蛰啽P賭選擇算子實(shí)驗(yàn)內(nèi)容及步驟:內(nèi)容:編寫二進(jìn)制編碼下

8、的輪盤賭選擇算子程序。條件:延用前次實(shí)驗(yàn)所生成的初始種群和群體規(guī)模。要求:屏幕顯示選擇算子操作后的結(jié)果。#include<iostream>#include<stdlib.h>#include<time.h>using namespace std;int Rand_a(int n)return rand()%n+1;int main()int N;cout<<"請輸入種群大小:"<<endl;cin>>N;int *syd=new intN;int *lsyd=new intN;int i;int n;

9、int p=0;int *a=new intN;cout<<"請輸入適應(yīng)度:"<<endl;for(i=0;i<N;i+)cin>>sydi;lsyd0=syd0;for(i=1;i<10;i+)lsydi=lsydi-1+sydi;cout<<"其適應(yīng)度和累積適應(yīng)度如下:"<<endl;for(i=0;i<N;i+)cout<<i+1<<"t"cout<<endl;for(i=0;i<N;i+)cout<&l

10、t;sydi<<"t"cout<<endl;for(i=0;i<N;i+)cout<<lsydi<<"t"cout<<endl;srand(unsigned int)time(NULL);for(i=0;i<N;i+)ai=Rand_a(lsydN-1);cout<<"隨機(jī)數(shù)如下:"<<endl;for(i=0;i<N;i+)cout<<ai<<"t"cout<<endl;cou

11、t<<"被選中的個體號如下:"<<endl;while(p<N)for(i=0;i<N;i+)if(lsydi>ap)cout<<i+1<<"t"break;p+;cout<<endl;return 0;實(shí) 驗(yàn) 五遼寧鞍山科技大學(xué) 理 學(xué)院(系) 2010 年 月 日課名:遺傳算法題目:單點(diǎn)交叉算子班級:姓名:學(xué)號:機(jī)臺號:同組人: 任課教師:熊 焱實(shí)驗(yàn)?zāi)康模赫莆諉吸c(diǎn)交叉算子實(shí)驗(yàn)內(nèi)容及步驟:內(nèi)容:編寫二進(jìn)制編碼下的單點(diǎn)交叉算子程序。條件:延用前次實(shí)驗(yàn)所生成的種群和群體規(guī)模。要求

12、:屏幕顯示交叉算子操作后的結(jié)果。 #include<iostream>#include<stdlib.h>#include<time.h>using namespace std;void fun(int *a,int n)int i=0;while(n!=0)ai=n%2;n=n/2;i+;void f(int model,int *num)int num1,num2,shu=0,k=0;while(k!=model)num1=rand()%(model+1);if(k=0&&num1!=0)numk+=num1;elsefor(int i=

13、0;i<k;i+)if(num1=numi|num1=0)shu=num1;if(shu!=num1)numk+=num1;elsecontinue;num2=rand()%(model+1);for(int j=0;j<k;j+)if(num2=numj|num2=0)k-;break;if(k%2=0|num1=0)continue;numk+=num2;void JC(int *a,int *b,double *c,int N,double p)for(int i=0;i<N;i=i+2)int p1,p2;p1=bi-1,p2=bi+1-1;if(ci<p|ci

14、+1<p)int n=rand()%7+1;cout<<"("<<p1+1<<","<<p2+1<<")"<<"在"cout<<" "<<n<<" 交叉"<<endl;for(int i=0;i<n;i+)int t;t=ap1i;ap1i=ap2i;ap2i=t;int main()int N;int n;double p=0.6;int i,

15、j;cout<<"請輸入種群規(guī)模:"<<endl;cin>>N;int *a=new int8;for(i=0;i<8;i+)ai=0;int *b;b=new int*N;for(i=0;i<N;i+)bi=new int8;double *c=new doubleN;int *d=new intN;srand(unsigned int)time(NULL);for(i=0;i<N;i+)n=rand()%100+1;fun(a,n);for(j=0;j<8;j+)bij=aj;aj=0;cout<<

16、endl<<"初始種群如下:"<<endl;for(i=0;i<N;i+)for(j=7;j>=0;j-)cout<<bij;cout<<endl;cout<<endl;int *as=new intN;f(N,as);cout<<"配對結(jié)果如下"<<endl;for(i=0;i<N;i=i+2)cout<<"("<<asi<<","<<asi+1<<&q

17、uot;)"<<endl;cout<<endl;for(i=0;i<N;i+)ci=rand()%1000*1.0/1000;cout<<"隨機(jī)數(shù)如下:"<<endl;for(i=0;i<N;i+)cout<<ci<<endl;JC(b,as,c,N,p);cout<<"交叉結(jié)果如下:"<<endl;for(i=0;i<N;i+)for(j=7;j>=0;j-)cout<<bij;cout<<endl;

18、return 0; 實(shí) 驗(yàn) 六遼寧鞍山科技大學(xué) 理 學(xué)院(系) 2010 年 月 日課名:遺傳算法題目:單點(diǎn)變異算子班級:姓名:學(xué)號:機(jī)臺號:同組人: 任課教師:熊 焱實(shí)驗(yàn)?zāi)康模赫莆諉吸c(diǎn)變異算子實(shí)驗(yàn)內(nèi)容及步驟:內(nèi)容:編寫二進(jìn)制編碼下的單點(diǎn)變異算子程序。條件:延用前次實(shí)驗(yàn)所生成的種群和群體規(guī)模。要求:屏幕顯示變異算子操作后的結(jié)果。#include<iostream>#include<stdlib.h>#include<time.h>using namespace std;void fun(int *a,int n)int i=0;while(n!=0)ai=n

19、%2;n=n/2;i+;int main()int N;int n;double p=0.5;int i,j;cout<<"請輸入種群規(guī)模:"<<endl;cin>>N;int *a=new int8;for(i=0;i<8;i+)ai=0;int *b;b=new int*N;for(i=0;i<N;i+)bi=new int8;double *c;c=new double*N;for(i=0;i<N;i+)ci=new double8;srand(unsigned int)time(NULL);for(i=0;i&l

20、t;N;i+)n=rand()%100+1;fun(a,n);for(j=0;j<8;j+)bij=aj;aj=0;cout<<"初始種群如下:"<<endl;for(i=0;i<N;i+)for(j=7;j>=0;j-)cout<<bij;cout<<endl;cout<<endl;for(i=0;i<N;i+)for(j=7;j>=0;j-)cij=rand()%1000*1.0/1000;cout<<"隨機(jī)數(shù)是:"<<endl;for(

21、i=0;i<N;i+)for(j=7;j>=0;j-)cout<<cij<<" "cout<<endl;cout<<endl;for(i=0;i<N;i+)for(j=7;j>=0;j-)if(cij<p)bij=(bij=0?1:0);cout<<"變異結(jié)果如下:"<<endl;for(i=0;i<N;i+)for(j=7;j>=0;j-)cout<<bij;cout<<endl;return 0;實(shí) 驗(yàn) 七遼寧鞍山

22、科技大學(xué) 理 學(xué)院(系) 2010 年 月 日課名:遺傳算法題目:綜合試驗(yàn)班級:姓名:學(xué)號:機(jī)臺號:同組人: 任課教師:熊 焱實(shí)驗(yàn)?zāi)康模?. 掌握基本遺傳算法操作;2. 針對實(shí)際問題學(xué)會利用遺傳算法、選用適合的遺傳參數(shù)求解。實(shí)驗(yàn)內(nèi)容及步驟:內(nèi)容:編寫二進(jìn)制編碼下的基本遺傳算法解決實(shí)際問題。條件:實(shí)際求解問題可以選為實(shí)數(shù)變量的最優(yōu)化問題,也可以選為10個城市的TSP(旅行商)問題,遺傳參數(shù)自選。要求:屏幕顯示相關(guān)運(yùn)行結(jié)果。#include<iostream>#include<stdlib.h>#include<time.h>using namespace st

23、d;const int N=1000; /最大代數(shù)const double Pc=0.9; /交叉概率const double Pm=0.1; /變異概率int CityToCity1010=0,118,1272,2567,1653,2097,1425,1177,3947,1574,118,0,1253,2511,1633,2077,1369,1157,3961,1518,1272,1253,0,1462,380,1490,821,856,3660,385,2567,2511,1462,0,922,2335,1562,2165,3995,933,1653,1633,380,922,0,1700

24、,1041,1135,3870,456,2097,2077,1490,2335,1700,0,2311,920,2170,1920,1425,1369,821,1562,1041,2311,0,1420,4290,626,1177,1157,856,2165,1135,920,1420,0,2870,1290,3947,3961,3660,3995,3870,2170,4290,2870,0,4090,1574,1518,385,993,456,1920,626,1290,4090,0;int Max(int *f,int *k)int max=f0;for(int i=1;i<100;

25、i+)if(max<fi)max=fi;*k=i;return max;int Min(int *f,int *k)int min=f0;for(int i=1;i<100;i+)if(min>fi)min=fi;*k=i;return min;void convert(int pos1,int pos2,int *so,int *dest) /交叉 int temp10;int ii = 0;int jj = 0;int kk = 0;for(ii=0;ii<10;ii+)tempii = so(ii+pos2+1)%10;for(ii=0;ii<10;ii+)

26、for(jj=pos1;jj<=pos2;jj+)if(tempii=destjj)tempii=100;break;jj = 0;ii = 0;while(jj<10)if(tempjj != 100)tempii = tempjj;ii+;jj+;for(kk=0; kk<(10-(pos2-pos1)-1); kk+)dest(kk+pos2+1)%10 = tempkk;void Rand_Pair(int num,int *result) /隨機(jī)配對int r1,r2,shu=0,k=0;while(k!=num)r1=rand()%(num+1);if(k=0&a

27、mp;&r1!=0)resultk+=r1;elsefor(int i=0;i<k;i+)if(r1=resulti|r1=0)shu=r1;if(shu!=r1)resultk+=r1;elsecontinue;r2=rand()%(num+1);for(int j=0;j<k;j+)if(r2=resultj|r2=0)k-;break;if(k%2=0|r1=0)continue;resultk+=r2;void Variation(int *a,int p) /變異int trasfs;int ii=0;int jj=0;int kk=0;for(kk=1;kk&l

28、t;=2;kk+) ii=rand()%10;jj=rand()%10;while(ii=jj) jj=rand()%10;trasfs=ajj;ajj=aii;aii=trasfs;void Primary_gen(int city10)int *a=new int10;for(int i=0;i<10;i+)ai=i;for(int j=99;j>=0;j-) /生成初代種群for(int i=9;i>=0;i-)int n = rand()%(i+1); int trsf=ai;ai=an;an=trsf;cityji=ai;cityj0=a0;int main()in

29、t recardmin10,recardmax10;int *r1,*r2;int temp=10;r1=&temp;r2=&temp;int g,i,j,k;int city10010;int gen = 0;int tt=,dai;int distance100=0; /種群中個體總距離double fitness100; /適應(yīng)度double Sum_fitness100=0.0; /累計適應(yīng)度double CrossP; /隨機(jī)產(chǎn)生的交叉概率int rand_pair100; /存放隨機(jī)配對的結(jié)果double rand_pm; /隨機(jī)產(chǎn)生的變異概率srand(unsig

30、ned int)time(NULL);Primary_gen(city);while(gen<N)for(i=0;i<100;i+)distancei=0;/選擇算子for(i=99;i>=0;i-)for(j=9;j>=1;j-)distancei+=CityToCitycityijcityij-1;distancei+=CityToCitycityi0cityi9;fitnessi=1.0/distancei;Sum_fitness99=fitness99;for(i=98;i>=0;i-)Sum_fitnessi=Sum_fitnessi+1+fitness

31、i;int mind,maxd;mind=Min(distance,r1);maxd=Max(distance,r2);for(g=9;g>=0;g-)recardming=city*r1g;recardmaxg=city*r2g;if(tt>mind)tt=mind;dai=gen+1;for(g=9;g>=0;g-)city*r2g=recardming;cout<<"第 "<<gen+1<<" 代"<<" 最短的路徑 min= "<<mind<<" max= "<<maxd<<endl;cout<<"最短路徑為:"for(g=9;g>=0;g-)cout<<recardming<<"

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論