遗传算法解决函数优化问题.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一 遗传算法解决函数优化问题 一、实验目的 1.掌握遗传算法的基本原理和步骤。 2. 复习VB、VC的基本概念、基本语法和编程方法,并熟练使用VB或VC编写遗传算法程序。 二、实验内容 1. 上机编写程序,解决以下函数优化问题: 2. 调试程序。 3. 根据实验结果,撰写实验报告。 三、实验原理 遗传算法是一类随机优化算法,但它不是简单的随机比较有哪些信誉好的足球投注网站,而是通过对染色体的评价和对染色体中基因的作用,有效地利用已有信息来指导有哪些信誉好的足球投注网站有希望改善优化质量的状态。 标准遗传算法流程图如下图所示,主要步骤可描述如下: 随机产生一组初始个体构成初始种群。 计算每一个体的适配值(fitness value,也称为适应度)。适应度值是对染色体(个体)进行评价的一种指标,是GA进行优化所用的主要信息,它与个体的目标值存在一种对应关系。 判断算法收敛准则是否满足,若满足,则输出有哪些信誉好的足球投注网站结果;否则执行以下步骤。 根据适应度值大小以一定方式执行复制操作(也称为选择操作)。 按交叉概率pc执行交叉操作。 按变异概率pm执行变异操作。 返回步骤②。 N N N 计算各个体的适配值(适应度) 算法收敛准则满足? Y random[0,1]Pc? 复制(选择) 输出有哪些信誉好的足球投注网站结果 交叉 Y random[0,1]Pm? 变异 N 随机产生初始种群 Y 图1.1 标准遗传算法流程图 四、程序代码 #include stdio.h #include math.h #include stdlib.h #includetime.h #define byte unsigned char #define step 200 //步长 #define MAX 50 #define N 10 //随机数个数 #define Pc 0.74 //被选择到下一代的概率,个数=Pc*N,小于N 下一代数=上一代,不用处理 #define Pt 0.25 //交叉的概率,个数=Pt*N 舍,小于N 0~(n2+1)随机数,之后部分开始交叉 #define Pm 0.01 //变异的概率,个数=Pm*N*n2 入,小于N 0~(N*(n2+1))随机数/(n2+1)=个体,0~(N*(n2+1))随机数%(n2+1)=该个体基因位置 #define n2 15//2的15次方,共16位 #define next_t (int)(Pt*N)//交叉个数 #define next_m (int)(Pm*N+1)//变异个数 向后约等于 #define e 0.001//次数限制阈值 /* int N=10; //随机数个数 float Pc=0.74; //被选择到下一代的概率,个数=Pc*N,小于N 下一代数=上一代,不用处理 float Pt=0.25; //交叉的概率,个数=Pt*N 舍,小于N 0~(n2+1)随机数,之后部分开始交叉 float Pm=0.01; //变异的概率,个数=Pm*N*n2 入,小于N 0~(N*(n2+1))随机数/(n2+1)=个体,0~(N*(n2+1))随机数%(n2+1)=该个体基因位置 */ byte bitary[N][n2+1],bitary0[N][n2+1];//二进制 int src1[N]; float ShowType(int a);//表现型 void BinNum(int a);//二进制位数n2 float fit_func(float a);//适应度 void DecToBin (int src,int num);//十进制转二进制 void BinToDec (void);//十进制转二进制 int selectT(float a,float b[10]);//选择交叉个体 int selectM(float a,float b[10]);//选择变异个体 void main(void) { //范围是[-100,100]*************************** int src[N],i=0,j=0,k=0,count=0;//十进制 float show[N];//表现型 float fit[N],sumfit=0;//适应度 float pcopy[N];//优胜劣汰,遗传到下一代的概率fit[i]/总和(fit[i]) float pacc[N];//pcopy[i]累加概率值 float prand[N];//随机产生N个0~1的下一代概率 int iselect;//根据概率选择到的个体序号 int new_select[N];//根据概率选择到的个体 int new_T[next_t],new_M[next_m];

文档评论(0)

文档分享 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档