人工智能遗传算法实验报告

上传人:壹****1 文档编号:564881880 上传时间:2022-12-16 格式:DOCX 页数:8 大小:65.77KB
返回 下载 相关 举报
人工智能遗传算法实验报告_第1页
第1页 / 共8页
人工智能遗传算法实验报告_第2页
第2页 / 共8页
人工智能遗传算法实验报告_第3页
第3页 / 共8页
人工智能遗传算法实验报告_第4页
第4页 / 共8页
人工智能遗传算法实验报告_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《人工智能遗传算法实验报告》由会员分享,可在线阅读,更多相关《人工智能遗传算法实验报告(8页珍藏版)》请在金锄头文库上搜索。

1、人工智能实验报告学号:姓名:实验名称:遗传算法实验日期:2016.1.5【实验名称】遗传算法【实验目的】掌握遗传算法的基本原理,熟悉遗传算法的运行机制,学会用遗传算法来求解问题。【实验原理】遗传算法(Genetic Algorithm)是模扌腿尔文生物进化论的自然选择和遗传学机理的生 物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编 码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。在一开始需要实现从 表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化, 如二进

2、制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来 越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学 的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然 进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码,可以作为 问题近似最优解。遗传算法程度流程图为:实验内容】题目:已知f(x)二x*sin(x)+1,xw0,2兀,求f(x)的最大值和最小值。数据结构: struct poptypedouble gen ele ngth;/染色体double real numbe r; 对应的实数 xd

3、ouble fit ness;/适应度double rfitn ess;/相 目对适应度double cfit ness;/累 计适应度;struct poptype populationpopsize+1;/最后一位存放 max/min struct poptype newpopulationpopsize+1;/染色体编码:x e 0,2兀,变量长度为2 n,取小数点后6位,由于于2 2兀*106 223;因此,染色体由23位字节的二进制矢量表示,则X与二进制串() 2之 间的映射如下:b22 21b0:)2 =10适应度函数:由于要求f(x)的最值,所以适应度函数即可为f(x)。但为了确

4、保在轮赌法选择过中, 每个个体都有被选中的可能性,因此需要将所有适应度调整为大于0的值。因此,设计 求最大值的适应度函数如下:eval= f (x) + 5 = x sin x + 6;max将最小问题转化为求-f(x )的最大值,同理,设计最小值的适应度函数如下:eval = - f (x) + 5 = - x sin x + 4;min种群大小:本实验默认为50 ,再进行种群初始化。实验参数: 主要有迭代数,交叉概率,变异概率这三个参数。一般交叉概率在0.6-0.9范围内变异概率在0.01-0.1范围内。可以通过手动输入进行调试。主要代码如下:void initialize。/ 种群初始化

5、srand(time(NULL);int i,j;for(i=0;ipopsize;i+) for(j=0;j23;j+)populationi.genej=rand()%2;void transform()染色体转化为实数xint i,j;for(i=0;i=popsize+1;i+)populationi.realnumber=0; for(j=0;j23;j+)populationi.realnumber+=populationi.genej*pow(2,j); populationi.realnumber=populationi.realnumber*2*pi/(pow(2,23)-1

6、);void cal_fitness() 计算适应度int i;for(i=0;ipopsize;i+)populationi.fitness=populationi.realnumber*sin(populationi.realnumber)+6;void select() 选择操作int mem,i,j,k;double sum=0;double p;for (mem=0;mempopsize;mem+) sum+=populationmem.fitness;for (mem=0;mempopsize; mem+) populationmem.rfitness=populationmem.

7、fitness/sum;population0.cfitness=population0.rfitness;for (mem=1;mempopsize;mem+) populationmem.cfitness=populationmem-1.cfitness+populationmem.rfitness;for (i=0;ipopsize;i+) /轮赌法选择机制 p=rand()%1000/1000.0;if (ppopulation0.cfitness)newpopulationi=population0;elsefor (j=0;j=populationj.cfitness&ppopul

8、ationj+1.cfitness) newpopulationi=populationj+1;for (i=0;ipopsize;i+) 复制给下一代 populationi=newpopulationi;void cross()交叉操作int i, mem, one;int first = 0;double x;for(mem=0;mempopsize;mem+)x = rand()%1000/1000.0;if (xpcross)+first;if (first%2 =0) Xover(one,mem);个体间染色体进行交叉函数 else one=mem;void mutate() 变异

9、操作int i, j,t;double x;for (i=0;ipopsize;i+) for(j=0;jlength;j+) x=rand()%1000/1000.0;if (xpvariation)if(populationi.genej) populationi.genej=0;else populationi.genej=1;void cal_max()计算最大值int i;double max,sum=0;int max_m;max=population0.fitness;for(i=0;ipopulationi+1.fitness)if(populationi.fitness=ma

10、x)max=populationi.fitness; max_m = i;else if(populationi+1.fitness = max)max=populationi+1.fitness;max_m = i + 1;if(maxpopulationpopsize.fitness)iteration=O;for (i=O;ilength;i +)populationpopsize.genei = populationmax_m.genei; populationpopsize.fitness=populationmax_m.fitness;for (i=0;ilength;i+)sum

11、=populationpopsize.genei-populationmax_m.genei;if(sum =0) iterati on +;tra nsform();printf(%f,%f,%f,%fn,populationpopsize.fitness,populationpopsize+1.fitness,populationpopsize.real n umber,populati on popsize+1.real number);【实验结果】, = 7W= = 2-819075- x= = 2-007108 丿本= 01010001110001101110010弋二最大值y= =

12、 2.819075, x= = 2 本=01010001110001101110010.00710S弋=最大值= Zx=:2孚本:01010010010100001110011-819610, x=:2_0203391:01010010010100001110011弋二最大値x=:2_020339丿本:31313010313103031113011箋丄00彳弋巳最大值x=:2_020339fe#:01010010010100001110011i/0? =_S14470,x=: 4_ 91314011001000001011011110011:-3 _S14470,x=:4_91314011001000001011811110011篡9?彳弋最”值yud -S14470,x=: 4_ 91314011001000001011011110011=ffidfiy=-3-S14470,x=:4_913140=1100100006101181111081111001000001011011110011S55=ftdfiy = = - 3 814470. x=: 4 9丄已丄40 .色体二 第100彳弋=最、值W= 一3814470. x= 49丄3丄4011001000001011011110011

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号