资源描述:
《遗传算法vc++实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、遗传算法的VC++实现遗传算法是一种借鉴生物界自然选择和自然遗传机制的高度并行、随机、自适应搜索算法,其隐含的对全局信息的有效利用能力使遗传算法具有稳健性,能够很好地处理传统优化方法解决不了的复杂和非线性问题。遗传算法的执行过程可以简单描述为随机地在参变量空间中进行搜索,由串组成的群体在遗传算子的作用下,同时对空间中不同的区域进行采样计算,从而构成一个不断迭代进化的群体序列。遗传算法的突出表现能力是能够把注意力集中到搜索空间中期望值最高的部分,这是遗传算法中杂交算子作用的直接结果。杂交过程就是模拟生物界中的有性繁殖,
2、它是遗传算法中最重要的部分,是遗传算法区别于其它优化算法的根本所在。遗传算法以迭代群体中的所有个体为操作对象,从本质上讲属于一种群体操作算法,其基本流程如图1所示。一个标准的遗传算法程序包含4个基本组成部分:(1)参数编码;(2)初始群体生成;(3)适应值检测;(4)遗传操作。其中遗传操作是遗传算法的核心,它由3个基本操作算子组成,即选择算子、交叉算子和变异算子,不同的遗传算子对算法的运行性能有着各不相同的影响。文章主要从遗传算法在求解连续最优化问题中的设计与实现环节上对遗传算法进行研究。根据所求解问题的性质,设计合
3、理的遗传算法程序,使之满足求解问题的要求。一些术语一、染色体(Chronmosome) 染色体又可以叫做基因型个体(individuals),一定数量的个体组成了群体(population),群体中个体的数量叫做群体大小。 二、基因(Gene) 基因是串中的元素,基因用于表示个体的特征。例如有一个串S=1011,则其中的1,0,1,1这4个元素分别称为基因。它们的值称为等位基因(Alletes)。 三、基因地点(Locus) 基因地点在算法中表示一个基因在串中的位置称为基因位置(GenePosition),
4、有时也简称基因位。基因位置由串的左向右计算,例如在串S=1101中,0的基因位置是3。 四、基因特征值(GeneFeature) 在用串表示整数时,基因的特征值与二进制数的权一致;例如在串S=1011中,基因位置3中的1,它的基因特征值为2;基因位置1中的1,它的基因特征值为8。 五、适应度(Fitness)各个个体对环境的适应程度叫做适应度(fitness)。为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数.这个函数是计算个体在群体中被使用的概率。vc程序设计(遗传算法)
5、基于基本遗传算法的函数最优化#include#include#include#include#include#include#include"graph.c"#include"operator.c"#definePOP_SIZE25/*种群大小*/#defineG_LENGTH8/*染色体长度*/#defineC_RATE0.2/*交叉概率*/#defineM_RATE0.01/*变异概率*/#defin
6、eXMAX255/*函数变量最大值*/#defineX1350/*函数图形区窗口左上点X坐标*/#defineY140/*函数图形区窗口左上点Y坐标*/#defineXR1255/*函数图形区窗口长度*/#defineYR1200/*函数图形区窗口高度*/#defineX2360/*适应度图形区窗口左上点X坐标*/#defineY2280/*适应度图形区窗口左上点Y坐标*/#defineXR2250/*适应度图形区窗口长度*/#defineYR2100/*适应度图形区窗口宽度*/#defineSTEP2/*适应度图形
7、区X方向步长*/voidinitialize_gene(gene,pop_size,g_length)/*种群中个体遗传基因型的初始化*/unsignedchar*gene;/*遗传基因*/intpop_size;/*种群大小*/intg_length;/*个体染色体长度*/{inti,j;randomize();for(i=0;i8、ength)/*基因型到表现型的变换--解码*/unsignedchar*gene;/*基因型*/intg_length;/*染色体长度*/{inti,pheno;pheno=0;for(i=0;i