网站大量收购闲置独家精品文档,联系QQ:2885784924

实验3_20100356官子力.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验3_20100356官子力.doc

重庆大学学生上机实验报告 上机课程名称:信息智能分析与预测 上机实验名称:实验3 遗传算法 开课学院及实验室:经济与工商管理学院 2013年11 月 4 日 学 院 经管学院 年级、专业、班 2010级信管1班 姓 名 官子力 学 号 指导教师 陈铿 成 绩 教师评语 教师签名: 【实验目的】 针对如下所示问题,设定染色体编码长度,假定群体大小为6,试计算出初始化后的解。 给定如下染色体,试用轮盘赌法计算出6次选择出的新群体。 对上述种群的染色体,试计算出交叉后的新种群,交叉概率Pc=0.7 对上述种群的染色体,试计算出变异后的新种群,变异概率Pm=0.02 【实验内容】 题目1: 首先需要根据题目确定染色体长度,本实验中设置为16。 再者根据遗传算法的计算思路,分别要进行初始化、解码、计算适应值的工作。 程序代码展示: 初始化函数代码 %初始化种群 %pop_size: 种群大小 %chromo_size: 染色体长度 function initilize(pop_size, chromo_size) global pop; for i=1:pop_size for j=1:chromo_size pop(i,j) = round(rand); end end clear i; clear j; 解码函数代码 %对种群个体解码表示 %pop_size: 种群大小 %chromo_size: 染色体长度 %minx: %maxx: function jiema(pop_size, chromo_size, minx, maxx) global popx; global pop; popx=zeros(pop_size,1); for i=1:pop_size for j=1:chromo_size if pop(i,j) == 1 popx(i) = popx(i)+2^(j-1); end end popx(i) = minx+popx(i)*(maxx-minx)/(2^chromo_size-1); end clear i; clear j; 计算适应值函数代码 %计算种群个体适应度,对不同的优化目标,此处需要改写 %pop_size: 种群大小 function fitness(pop_size) global fitness_value; global popx; fitness_value = zeros(pop_size,1); for i=1:pop_size fitness_value(i) = 0.; end for i=1:pop_size fitness_value(i) = popx(i)+ 10*sin(5*popx(i))+ 7*cos(4*popx(i)); end clear i; 初始化后问题的计算结果显示: 初始化的种群个体 解码后的初始化解以及适应值 从计算结果可看出,适应值有负数存在,而按遗传算法的思路不应该负值,故应对适应值计算函数做调整,在原有函数值得基础上加上一个较大的数,保证适应值为正。 题目2: 由于题目中已经给出了初始的染色体和对应的适应值,首先就是需要将已给的信息按有效形式存储,以便于之后的函数使用。 程序代码展示: 已给信息录入以及主函数的程序代码: clear all; %pop_size: 输入种群大小 %chromo_size: 染色体长度 %pop:录入已给出的染色体情况 %fitness_value: 录入染色体对应的适应值(跳过了编码阶段) pop_size = 6; chromo_size = 5; global fitness_value; global pop; pop = zeros(pop_size, chromo_size); fitness_value = zeros(pop_size); pop = [0 1 1 1 0; 1 1 0 0 0; 0 0 1 0 0; 1 0 0 1 0; 0 1 1 0 0 ; 0 0 0 1 1]; fitness_value = [8; 15; 2; 5; 12; 8]; elitism = true; %进行精英选择 rank(pop_size, chromo_size); selection(pop_size, elitism); 对个体按适

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档