【精选】遗传算法原理及其matlab程序实现

您所在的位置:网站首页 编码示例 【精选】遗传算法原理及其matlab程序实现

【精选】遗传算法原理及其matlab程序实现

2023-11-20 06:41| 来源: 网络整理| 查看: 265

遗传算法原理及其matlab实现 一、遗传算法背景二、遗传算法原理及其数学模型2.1 编码方式2.1.1 二进制编码2.1.2 浮点数编码 2.2 种群初始化2.3 计算初始种群的适应度函数值2.4 对初始种群个体进行筛选—天泽(以轮盘赌方式进行选择)2.5 个体染色体交叉及突变2.6 精英选择及其作用 三、遗传算法中关键参数的设定及作用3.1 不同编码方式的区别及其作用3.2 交叉算子与突变算子3.3 精英数量 四、遗传算法matlab实现代码4.1 主程序4.2 种群初始化4.3 适应度计算4.4 选择淘汰4.5 变异处理4.6 变异是否超出自变量范围判断4.7 交叉处理4.8 最差个体统计4.9 计算平均适应度值4.10 绘制结果4.11 仿真效果如下: 5 结尾篇

一、遗传算法背景

    遗传算法的主要思想是借鉴于达尔文的自然选择下的进化论模型。通过借鉴生物进化论,遗传算法将要解决的问题模拟成一个生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体,也就是你的目标函数值的最优化结果。是时候展现真正的技术了: 在这里插入图片描述     遗传算法中对目标的优化过程就好比生活中妹子在找男友时不断优化一样。假定影响妹子找男友的标准受两个变量的影响(也就是我们在优化时的自变量),此处假定为颜值和能力。最后对男生的综合评价(也就是适应度函数值)当然越高越好,于是乎在妹子一轮又一轮的筛选中(也就是遗传算法中的迭代过程)最后找到自己最满意的那位,但是记住,在这个过程中妹子可不会傻乎乎的减少自己的样本量,她会将评分低的个体淘汰后再引入新个体,这样才能保住自己最后找到的是最满意的!欲知妹子如何进行筛选,又如何引入新样本,请客官往下看:

二、遗传算法原理及其数学模型

    看了遗传算法的背景介绍发现好像也没多难,事实真的如此吗?对人而言,是乎很好理解,可问题是我们是在计算机上进行这个过程,该如何让计算机理解刚才的过程呢?     假的在妹子心中对男友指标的方式为: f ( x , y ) = s i n ( x ) + c o s ( y ) + 0.1 ∗ x + 0.1 ∗ y f(x,y) =sin(x)+cos(y)+0.1*x+0.1*y f(x,y)=sin(x)+cos(y)+0.1∗x+0.1∗y

其中:x:代表男生的颜值       y:代表男生的能力 2.1 编码方式

    首先,我们将计算机假定成生活里的妹子,现在她要开始找男朋友了!!! 在这里插入图片描述     在该实例中,一个包含两条条染色体,分别为x,y。染色体上各自包含一组基因组。     基因 ( Gene ) :一个遗传因子。     染色体 ( Chromosome ) :一组的基因,有N个基因片段组成。     个体 ( individual ) :单个生物,由M条染色体构成。     群体(population):一群个体。     在上述的例子中自变量有x,y。每个染色体由N个基因片段组成(由几个基因片段取决于你的编码精度),因此在本例子中:

一个个体=两条条染色体(因为只有两个自变量)=N个基因

    将染色体表达为基因的过程,称之为编码,常见的编码格式有二进制编码和浮点编码。

2.1.1 二进制编码

    二进制编码通俗的将就是将我们的自变量从十进制映射到N位的二进制,而N取决于我们要求的精度,例如求解精度为 e=0.02,那么我们需要将x的区间[-10 10],切分成(10−(−10))/0.02=1000 份。 又因为采用二进制编码所以实际需要的编码位数为: 2 9 = 512 < 1000 < 2 十 = 1024 2^9=512



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3