版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实 验 一辽宁科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:随机函数与函数调用班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:1. 掌握随机数的生成函数2. 熟悉函数调用的基本操作实验内容及步骤:内容:利用随机函数生成 1,10 和 0,1 内随机数各个; 编写数组作为参量的函数调用程序条件:调用函数关系自己选定(如: ),数组取为实型 要求:生成随机数之后屏幕显示出来;数组、函数关系、函数值显示在屏幕上。程序:#include #includevoid main() float e5;int d5; int j,x;float y,z;for(j=0;j5;
2、j+)dj=1+(int)(10.0*rand()/(RAND_MAX+1.0);printf( %d ,dj);printf(n);for(j=0;j5;j+)ej=rand()/(RAND_MAX+1.0);printf( %.2f ,ej); printf(n); for(j=0;j5;j+)x=dj;y=ej; z=x*x+y*y*y+x*y;printf( %.2f ,z); printf(n); printf(x*x+y*y*y+x*yn);实 验二辽宁科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:编码、解码班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实
3、验目的:1. 掌握二进制数与十进制数的相互转化2. 熟悉不同划分长度下的二进制与十进制的转化操作实验内容及步骤:内容:将十进制数转化为指定长度下的二进制数 将二进制数转化为指定长度下的十进制数条件:利用函数调用的方法编写程序,长度设为输入量(可调节),十进制数为单变量实型、二进制数存为数组(每个数组单元存储一位);要求:转换结果屏幕输出。#include #include void sje(int n,int m) int x=0,a100=0; while(n) ax+=n%2;n/=2; while(m0) m-; printf(%d,am); void ejs(int *a,int x)
4、 int sum=0;while(x0)x-;sum+=ax*pow(2.0,x);printf(%dn,sum);void main()int m,n,x,a100;int i;printf(请输入转换的数:n); scanf(%d,&n);printf(请输入要转化在长度:n);scanf(%d,&m);sje(n,m);printf(n);printf(请输入转换的二进制数长度:n);scanf(%d,&x);printf(请输入转换的二进制数:n);for(i=x-1;i=0;i-)scanf(%d,&ai);ejs(a,x);实 验 三辽宁鞍山科技大学 理 学院(系) 2010 年
5、月 日课名:遗传算法题目:初始种群班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:掌握初始群体的生成过程实验内容及步骤:内容:生成二进制编码下的初始种群。条件:个体范围给定,种群规模设为变量(可调节)。要求:屏幕显示所生成的初始群体#include #include#includeint random()return rand()%100;void sje(int n,int m) int x=0,a100=0; while(n) ax+=n%2;n/=2; while(m0) m-; printf(%d,am); void main()int x,y=0;printf(种群规模
6、:n);scanf(%d,&x);while(yx)sje(random(),8);printf(n);y+;实 验 四鞍山科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:选择算子班级:姓名:学号:机台号:同组人:任课教师:熊 焱实验目的:掌握轮盘赌选择算子实验内容及步骤:内容:编写二进制编码下的轮盘赌选择算子程序。条件:延用前次实验所生成的初始种群和群体规模。要求:屏幕显示选择算子操作后的结果。#include#include#includeusing namespace std;int Rand_a(int n)return rand()%n+1;int main()in
7、t N;cout请输入种群大小:N;int *syd=new intN;int *lsyd=new intN;int i;int n;int p=0;int *a=new intN;cout请输入适应度:endl;for(i=0;isydi;lsyd0=syd0;for(i=1;i10;i+)lsydi=lsydi-1+sydi;cout其适应度和累积适应度如下:endl;for(i=0;iN;i+)couti+1t;coutendl;for(i=0;iN;i+)coutsydit;coutendl;for(i=0;iN;i+)coutlsydit;coutendl;srand(unsigne
8、d int)time(NULL);for(i=0;iN;i+)ai=Rand_a(lsydN-1);cout随机数如下:endl;for(i=0;iN;i+)coutait;coutendl;cout被选中的个体号如下:endl;while(pN)for(i=0;iap)couti+1t;break;p+;coutendl;return 0;实 验 五辽宁鞍山科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:单点交叉算子班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:掌握单点交叉算子实验内容及步骤:内容:编写二进制编码下的单点交叉算子程序。条件:延用前次实验所生成
9、的种群和群体规模。要求:屏幕显示交叉算子操作后的结果。 #include#include#includeusing 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=0;ik;i+)if(num1=numi|num1=0)shu=num1;if(shu!
10、=num1)numk+=num1;elsecontinue;num2=rand()%(model+1);for(int j=0;jk;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;iN;i=i+2)int p1,p2;p1=bi-1,p2=bi+1-1;if(cip|ci+1p)int n=rand()%7+1;cout(p1+1,p2+1)在;cout n 交叉endl;for(int
11、i=0;in;i+)int t;t=ap1i;ap1i=ap2i;ap2i=t;int main()int N;int n;double p=0.6;int i,j;cout请输入种群规模:N;int *a=new int8;for(i=0;i8;i+)ai=0;int *b;b=new int*N;for(i=0;iN;i+)bi=new int8;double *c=new doubleN;int *d=new intN;srand(unsigned int)time(NULL);for(i=0;iN;i+)n=rand()%100+1;fun(a,n);for(j=0;j8;j+)bij
12、=aj;aj=0;coutendl初始种群如下:endl;for(i=0;i=0;j-)coutbij;coutendl;coutendl;int *as=new intN;f(N,as);cout配对结果如下endl;for(i=0;iN;i=i+2)cout(asi,asi+1)endl;coutendl;for(i=0;iN;i+)ci=rand()%1000*1.0/1000;cout随机数如下:endl;for(i=0;iN;i+)coutciendl;JC(b,as,c,N,p);cout交叉结果如下:endl;for(i=0;i=0;j-)coutbij;coutendl;ret
13、urn 0; 实 验 六辽宁鞍山科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:单点变异算子班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:掌握单点变异算子实验内容及步骤:内容:编写二进制编码下的单点变异算子程序。条件:延用前次实验所生成的种群和群体规模。要求:屏幕显示变异算子操作后的结果。#include#include#includeusing namespace std;void fun(int *a,int n)int i=0;while(n!=0)ai=n%2;n=n/2;i+;int main()int N;int n;double p=0.5;in
14、t i,j;cout请输入种群规模:N;int *a=new int8;for(i=0;i8;i+)ai=0;int *b;b=new int*N;for(i=0;iN;i+)bi=new int8;double *c;c=new double*N;for(i=0;iN;i+)ci=new double8;srand(unsigned int)time(NULL);for(i=0;iN;i+)n=rand()%100+1;fun(a,n);for(j=0;j8;j+)bij=aj;aj=0;cout初始种群如下:endl;for(i=0;i=0;j-)coutbij;coutendl;cout
15、endl;for(i=0;i=0;j-)cij=rand()%1000*1.0/1000;cout随机数是:endl;for(i=0;i=0;j-)coutcij ;coutendl;coutendl;for(i=0;i=0;j-)if(cijp)bij=(bij=0?1:0);cout变异结果如下:endl;for(i=0;i=0;j-)coutbij;coutendl;return 0;实 验 七辽宁鞍山科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:综合试验班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:1. 掌握基本遗传算法操作;2. 针对实际问题学会利
16、用遗传算法、选用适合的遗传参数求解。实验内容及步骤:内容:编写二进制编码下的基本遗传算法解决实际问题。条件:实际求解问题可以选为实数变量的最优化问题,也可以选为10个城市的TSP(旅行商)问题,遗传参数自选。要求:屏幕显示相关运行结果。#include#include#includeusing namespace std;const int N=1000; /最大代数const double Pc=0.9; /交叉概率const double Pm=0.1; /变异概率int CityToCity1010=0,118,1272,2567,1653,2097,1425,1177,3947,157
17、4,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,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,1
18、420,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;i100;i+)if(maxfi)max=fi;*k=i;return max;int Min(int *f,int *k)int min=f0;for(int i=1;ifi)min=fi;*k=i;return min;void convert(int pos1,int pos2,int *s
19、o,int *dest) /交叉 int temp10;int ii = 0;int jj = 0;int kk = 0;for(ii=0;ii10;ii+)tempii = so(ii+pos2+1)%10;for(ii=0;ii10;ii+)for(jj=pos1;jj=pos2;jj+)if(tempii=destjj)tempii=100;break;jj = 0;ii = 0;while(jj10)if(tempjj != 100)tempii = tempjj;ii+;jj+;for(kk=0; kk(10-(pos2-pos1)-1); kk+)dest(kk+pos2+1)%1
20、0 = tempkk;void Rand_Pair(int num,int *result) /随机配对int r1,r2,shu=0,k=0;while(k!=num)r1=rand()%(num+1);if(k=0&r1!=0)resultk+=r1;elsefor(int i=0;ik;i+)if(r1=resulti|r1=0)shu=r1;if(shu!=r1)resultk+=r1;elsecontinue;r2=rand()%(num+1);for(int j=0;jk;j+)if(r2=resultj|r2=0)k-;break;if(k%2=0|r1=0)continue;r
21、esultk+=r2;void Variation(int *a,int p) /变异int trasfs;int ii=0;int jj=0;int kk=0;for(kk=1;kk=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=0;j-) /生成初代种群for(int i=9;i=0;i-)int n = rand()%(i+1); int t
22、rsf=ai;ai=an;an=trsf;cityji=ai;cityj0=a0;int main()int 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; /适应度double Sum_fitness100=0.0; /累计适应度double CrossP; /随机产生的交叉概率int rand_pair100; /存
23、放随机配对的结果double rand_pm; /随机产生的变异概率srand(unsigned int)time(NULL);Primary_gen(city);while(genN)for(i=0;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+fitnessi;int mind,maxd;mind=Min(distance,r1);maxd=Max(distance,r2);for(g=9;g=0;g-)recardming=city*r1g;re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 奶茶销售活动策划方案(3篇)
- 商城用电应急预案(3篇)
- 160深井施工方案(3篇)
- 国外影楼活动策划方案(3篇)
- 入伏药房活动策划方案(3篇)
- 快艇救援施工方案(3篇)
- 振兴杯营销方案(3篇)
- 施工方案交底纪要(3篇)
- 模拟抗议活动策划方案(3篇)
- 清吧活动-促销方案策划(3篇)
- 仓储管理信息系统操作手册(标准版)
- 行政执法宣传课件
- 新生儿低血糖的健康宣教
- 物流体系课件
- 中华财险2026秋季校园招聘备考题库及答案详解1套
- 2026年安徽财贸职业学院单招职业技能测试题库附答案详解
- 2025小红书医美行业精准获客与营销增长白皮书
- 介绍嘻哈饶舌说唱
- GB 46750-2025民用无人驾驶航空器系统运行识别规范
- 焊工考试题库及焊工证模拟考试100题含答案
- 电梯井内壁渗水堵漏施工方案
评论
0/150
提交评论