版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上实 验 一专心-专注-专业辽宁科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:随机函数与函数调用班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:1. 掌握随机数的生成函数2. 熟悉函数调用的基本操作实验内容及步骤:内容:利用随机函数生成 1,10 和 0,1 内随机数各个; 编写数组作为参量的函数调用程序条件:调用函数关系自己选定(如: ),数组取为实型 要求:生成随机数之后屏幕显示出来;数组、函数关系、函数值显示在屏幕上。程序:#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");实 验二辽宁科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:编码、解码班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:1. 掌握二进制数与十进制数的相互转化2. 熟悉不同划分长度下的二进制与十进制的转化操作实验内容及步骤:内容:将十进制数转化为指定长度下的二进制数 将二进制数转化为指定长度下的十进制数条件:利用函数调用的方法编写程序,长度设为输入量(可调节),十进制数为单变量实型、二进制数存为数组(每个数组单元
4、存储一位);要求:转换结果屏幕输出。#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("请输入转换的数: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);e
6、js(a,x);实 验 三辽宁鞍山科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:初始种群班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:掌握初始群体的生成过程实验内容及步骤:内容:生成二进制编码下的初始种群。条件:个体范围给定,种群规模设为变量(可调节)。要求:屏幕显示所生成的初始群体#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("种群规模:n");scanf("%d",&x);while(y<x)sje(random(),8);printf("n");y+;实 验 四鞍山科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:选择算子班级:姓名:学号:机台号:同组人:任课教师:熊 焱实验目的:掌握轮盘赌选择算子实验内容及步骤:内容:编写二进制编码下
8、的轮盘赌选择算子程序。条件:延用前次实验所生成的初始种群和群体规模。要求:屏幕显示选择算子操作后的结果。#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<<"请输入适应度:"<<endl;for(i=0;i<N;i+)cin>>sydi;lsyd0=syd0;for(i=1;i<10;i+)lsydi=lsydi-1+sydi;cout<<"其适应度和累积适应度如下:"<<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<<"随机数如下:"<<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;实 验 五辽宁鞍山科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:单点交叉算子班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:掌握单点交叉算子实验内容及步骤:内容:编写二进制编码下的单点交叉算子程序。条件:延用前次实验所生成的种群和群体规模。要求
12、:屏幕显示交叉算子操作后的结果。 #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<<"请输入种群规模:"<<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<<"配对结果如下"<<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<<"随机数如下:"<<endl;for(i=0;i<N;i+)cout<<ci<<endl;JC(b,as,c,N,p);cout<<"交叉结果如下:"<<endl;for(i=0;i<N;i+)for(j=7;j>=0;j-)cout<<bij;cout<<endl;
18、return 0; 实 验 六辽宁鞍山科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:单点变异算子班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:掌握单点变异算子实验内容及步骤:内容:编写二进制编码下的单点变异算子程序。条件:延用前次实验所生成的种群和群体规模。要求:屏幕显示变异算子操作后的结果。#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<<"请输入种群规模:"<<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<<"随机数是:"<<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<<"变异结果如下:"<<endl;for(i=0;i<N;i+)for(j=7;j>=0;j-)cout<<bij;cout<<endl;return 0;实 验 七辽宁鞍山
22、科技大学 理 学院(系) 2010 年 月 日课名:遗传算法题目:综合试验班级:姓名:学号:机台号:同组人: 任课教师:熊 焱实验目的:1. 掌握基本遗传算法操作;2. 针对实际问题学会利用遗传算法、选用适合的遗传参数求解。实验内容及步骤:内容:编写二进制编码下的基本遗传算法解决实际问题。条件:实际求解问题可以选为实数变量的最优化问题,也可以选为10个城市的TSP(旅行商)问题,遗传参数自选。要求:屏幕显示相关运行结果。#include<iostream>#include<stdlib.h>#include<time.h>using namespace st
23、d;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,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) /随机配对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; /适应度double Sum_fitness100=0.0; /累计适应度double CrossP; /随机产生的交叉概率int rand_pair100; /存放随机配对的结果double rand_pm; /随机产生的变异概率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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品售后服务质量评估体系搭建模板
- 商业计划书制作工具含行业案例参考版
- 线缆整件代加工合同模板(3篇)
- 产品缺陷反馈及解决方案跟进表
- 2025年数字营销行业直播电商营销策略研究报告及未来发展趋势预测
- 2025年虚拟现实行业技术应用与虚拟体验研究报告及未来发展趋势预测
- 2025年物联网技术在物流行业中的应用与发展研究报告及未来发展趋势预测
- 2025年科技创新产业行业科技创新产业链发展与科技企业发展研究报告及未来发展趋势预测
- 2025年新能源行业太阳能光伏技术与可再生能源开发研究报告及未来发展趋势预测
- 食品安全保障行动承诺书4篇
- 2025年消防日消防月主题知识培训
- 2022年长春财经学院公共课《思想道德基础与法律修养》科目期末试卷B
- 2025年10月广东深圳市大鹏新区群团工作部招聘编外人员1人考试模拟试题及答案解析
- GB/T 46401-2025养老机构认知障碍老年人照护指南
- 2025年中小学教师师德师风考试试题及答案
- 生物育种方法
- 建筑企业法人a证考试及答案
- HSF管理体系实施方案及操作指南
- 药企采购知识培训课件
- 脚手架工程监理实施细则(盘扣式脚手架)
- 建筑施工现场质量安全检查表模板
评论
0/150
提交评论