1 原文地址:https://www.cnblogs.com/helloHKTK/p/9772778.html

遗传算法(Genetic algorithm)遵循适者生存、优胜劣汰的法则,即寻优过程中保留有用的,去除无用的。在科学和生产实践中表现为在所有可能的解决方法中找出最符合该问题所要求的条件的解决方法,即找出一个最优解

遗传算法有4个参数需要提前设定,一般在以下范围内进行设置:

(1)群体大小:20~100

(2)遗传算法的终止进化代数:100~500

(3)交叉概率:0.4~0.99

(4)变异概率:0.0001~0.1

算法参数的设计原则

1.种群初始化

初始的种群生成是随机的。在初始种群的赋值之前,尽量进行一个大概率的区间估计,以免初始种群分布在远离全局最优解的编码空间,导致遗传算法的搜索范围受到限制,同时也为算法减轻负担

虽然初始种群中的个体可以随机产生,但最好采用如下策略设定:
(1) 根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,在此分布范围内设定初始种群;
(2) 先随机产生一定数目的个体,然后从中挑选最好的个体加入到初始群体中。这种过程不断迭代,直到初始群体中个体数目达到了预先确定的规模。

2.种群的规模

​ 群体规模太小,很明显会出现近亲交配,产生病态基因。而且造成有效等位基因先天缺失,即使采用较大概率的变异算子,生成具有竞争力高阶模式的可能性仍然核销,况且大概率变异算子对已有模式的破坏作用极大。同时,遗传算子存在随机误差(模式采样误差),妨碍小群体中有效模式的正确传播,使得种群进化不能按照模式定理产生所预期的期望数量。

​ 群体规模太大,结果难以收敛且浪费资源,稳健性下降

3.变异概率

​ 变异概率太小种群的多样性下降太快,容易导致有效基因的迅速丢失且不容易修补;

​ 变异概率太大,尽管种群的多样性可以得到保证,但是高阶模式被破坏的概率也随之增大

4.交配概率

与变异概率类似,交配概率太大容易破坏已有的有利模式,随机性增大,容易错失最优个体

交配概率太小不能有效更新种群

5.进化代数

进化代数太小,算法不容易收敛,种群还没有成熟

进化代数太大,算法已经熟练或者种群过于早熟不可能再收敛,继续进化没有意义,只会增加时间开支和资源浪费


小结:
遗传算法(GAs)作为一种鲁棒的、实用的优化方法,既可以用于离散域也可以用于连续域上。
关于个体(individual)和染色体(chromosome):在编程的过程中我将两者看作同一个东西。但是实际上:种群由一定数量的个体组成,每个个体实际上是染色体带有特征的实体,染色体又由若干个基因组成。

除了上述参数调整以外,在实际的应用中,我发现基于GA的算法,比如多目标进化算法(Multi-objective evolutionary algorithm)。种群的初始化方法还是很有许多值得探索的地方,有的时候完全的随机化方法并不能得到好的解。

2 原文地址:https://ask.csdn.net/questions/675124?utm_medium=distribute.pc_relevant.none-task-ask_topic-BlogCommendFromBaidu-6&depth_1-utm_source=distribute.pc_relevant.none-task-ask_topic-BlogCommendFromBaidu-6

伪代码过程 (谢菲尔德大学的遗传算法工具箱)如下:
1.根据已有的数据,应用神经网络进行拟合,得到神经网络模型参数
2.设置遗传算法的参数
3.while gen<MAXGEN %小于进化代数
FitnV=ranking(-ObjV); %分配适应度值
SelCh=select('sus',Chrom,FitnV,GGAP); %选择
SelCh=recombin('xovsp',SelCh,px); %重组
SelCh=mut(SelCh,pm); %变异
XY=bs2rv(SelCh,FieldD); %子代个体的十进制转换
将子代个体代入神经网络模型,得到评价准则。
重插入子代到父代,得到新种群
代计数器增加
记录每代的最优解及其序号
end

3 原文地址:https://blog.csdn.net/yy2050645/article/details/80724857

对遗传算法的每一步进行详细说明,但是在此之前需要对一些参数进行说明,这些参数将会运用到遗传算法的过程当中。

种群数量:即种群中个体的数量,此处用来表示

变异概率:用来控制种群中发生变异行为的个体的数量,用表示,取值范围在0~1之间

交叉概率:用来控制种群中发生交叉行为的个体的数量,用表示,取值范围在0~1之间

迭代次数:遗传算法终止的条件,用表示,即经过多少代的种群迭代之后停止

我们以目标函数最大化为例来讲解遗传算法的具体步骤:

遗传算法总共可以分为6步:1.编码,2.解码,3.求解适应度,4.复制,5.交叉,6.变异

1.编码:遗传算法中的编码可以采用实数编码,以及二进制编码,在这里我们主要介绍二进制编码。假设优化问题的解为,其中每个决策变量对应的的编码长度为,则一个个体的总的编码长度记做,即每个个体被编码为一个长度为的二进制串。由于我们上文中说明了种群数量为,因此,我们在初始化种群时,将对个个体进行随机编码,即生成个长度为的二进制串作为我们的初始种群,其中每一个二进制串为一个个体。

2.解码:解码的目的是为了得到每个个体对应的解的实际值。具体过程如下。首先我们需要取出一个个体中每个决策变量对应的二进制编码段,某个个体的决策变量对应的编码段为个体的位置到位置,即(假设个体的下标从0开始,并且设),其中包含开始位置对应的二进制位,不包含结束位置对应的二进制位。之后将编码段转换为对应的十进制值。设的取值范围为,则解码后的实际值为。最后我们根据一个个体可以得到一个对应的优化问题的解,最后对整个种群解码后,得到个解。

3.求解适应度:通过第二步解码后,我们便得到了个解,依次将这些解带入到目标函数,求取出目标函数值便得到了这些解所对应的适应度值,我们记为。

4.复制:首先,我们可以将适应度最优的个体找出来,作为复制得到的种群中的第一个个体,作为当前种群最优个体,这个操作也称之为精英保留策略。之后我们再从种群中通过某种选择方案选出个个体,和一开始选出的最优个体组成复制后形成的种群。接下来介绍选择方案,即如何选出个个体。首先通过公式计算出,之后再通过公式计算得出。之后我们通过产生一个0到1之间的随机数,判断位于的哪个位置,例如,如果,则将原先种群中第个个体选出,如此循环次便得到了选出的个个体。

5.交叉:将种群中的的第一个个体,也就是之前选出的最优个体排除在外不参加交叉操作,其他个个体进行交叉操作。首先有序生成个0到1之间的随机数,记录其中小于交叉概率的随机数的位置,将这些位置对应的个体选出来作为进行交叉操作的个体(在程序编写中,我一般限制选出个体的数量大于零且为偶数,如不符合条件则重新生成随机数进行选择)。之后,从选出的个体中每次按顺序遍历出两个个体进行交叉操作。接下来介绍两个个体之间如何进行交叉操作,设个体起始位下标为0,则个体的最后一位对应的下标为。首先产生一个1(包含)到(不包含)之间的随机数,作为这两个个进行体交叉位置,之后将这两个个体在这个位置之后的片段进行交换便完成了交叉操作。依次对之前选出的个体进行此操作,直到被选出的个体全部完成,则种群的交叉操作完成。由于进行了变异操作,种群中最优个体有可能已经发生了变化,因此当完成遍历操作时我们也可以再次进行解码,求适应度,将种群中最优的个体放置在种群的第一个作为新的。

6.变异:首先同交叉操作相同,种群中的第一个个体不进行变异操作,之后的个个体进行变异操作。变异操作的具体方法如下,首先将参加变异操作的个个体连成一条串,其长度为,之后一次产生个0到1之间的随机数,记录小于变异概率的随机数的位置,所有小于变异概率的随机数的位置便是这条串上发生变异的位置,通过这个位置可以找到发生变异的个体的,以及在这个个体上的哪个位置发生的变异。例如,某个小于变异概率的随机数在这条串上的位置为,则可以求得发生变异的个体索引为,“//”表示整除(向下取整),在这个个体上发生变异的位置为,“mod"表示取余。最终确定了变异位置之后,只需观察这个位置上的二进制值是0还是1,如果是0则变异为1,如果是1则变异为0。如此循环直到把所有的发生变异的位置均进行变异操作。最终便产生了新的种群。

最后依次循环执行2至6步来进行种群迭代。

至此,遗传算法的6个步骤都已介绍完毕,需要注意的是,第1步编码操作只在第一次种群迭代时进行,之后的次迭代都只执行2至6步。

遗传算法调参 参数设置相关推荐

  1. 机器学习模型选择:调参参数选择

    http://blog.csdn.net/pipisorry/article/details/52902797 调参经验 好的实验环境是成功的一半 由于深度学习实验超参众多,代码风格良好的实验环境,可 ...

  2. deeplearning 重要调参参数分析

    reference: https://blog.csdn.net/jningwei/article/details/79243800 learning rate:学习率,控制模型的学习进度,决定权值更 ...

  3. 并行多机调度遗传算法调参记录---变异和淘汰哪个更重要?

    遗传算法主要有3个参数,变异率,淘汰率和染色体数量.本文通过一个并行多机调度问题,通过交叉验证的实验的方法找到这几个参数可能的最优值. 有3台机器要完成30个工件,计算完成所有工件的最短时间. 首先优 ...

  4. 调参到头秃?你需要这份自动超参搜索技术攻略

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要13分钟Follow小博主,每天更新前沿干货 来源:PaperWeekly本文约4845字,建议阅读9分钟本文介绍了自动超参搜索的系统架构及技 ...

  5. 随机森林算法及贝叶斯优化调参Python实践

    1. 随机森林算法 1.1. 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果. 集成学习模型的常见算 ...

  6. ml基础算法参数设置

    原文链接:http://blog.younggy.com/2017/02/24/机器学习算法调优/ 机器学习算法众多,各种算法又涉及较多参数,本文将简要介绍RF,GBDT等算法的调优经验与步骤. 1. ...

  7. 机器学习(10)-随机森林案例(调参)之公共自行车使用量预测

    随机森林案例之公共自行车使用量预测 1. 前言 1.1 背景介绍 1.2 任务类型 1.3 数据文件说明 1.4 数据变量说明 1.5 评估方法 2. 数据预处理 2.1 观察数据有没有缺失值 2.2 ...

  8. 使用NNI,从此告别手动调参

    一.前言 最近在朋友的介绍下,了解了一个神经网络的调参神器--微软开发的NNI (Neural Network Intelligence),在经过简单尝试之后,发现是真的香.倘若你也苦于每次炼丹都要手 ...

  9. 干货 | 拒当调参师工程师:超参数搜索算法一览

    https://www.toutiao.com/a6683809735214367239/ 2019-04-25 20:35:22 机器学习训练模型的过程中自然少不了调参,许多机器学习工程师都戏称自己 ...

  10. 机器学习算法如何调参?这里有一份神经网络学习速率设置指南

    作者:Jeremy Jordan,机器之心编译,参与:黄小天.许迪 每个机器学习的研究者都会面临调参过程的考验,而在调参过程中,学习速率(learning rate)的调整则又是非常重要的一部分.学习 ...

最新文章

  1. OpenCV后投影,利用阈值函数分割指定区域生成掩膜,通过直方图分布查找其他图像相同区域。
  2. MySql错误代码1045的解决方案(修改密码)
  3. vc关于dialog绘图闪屏和多层覆盖的处理方法
  4. java版spring cloud+spring boot+redis多租户社交电子商务平台(十二)断路器监控(Hystrix Dashboard)...
  5. C++基础汇总(一)
  6. String比较? 用==判断两个字符串,有时为true有时为false
  7. MFC CEdit 自动换行功能
  8. datax源码阅读二:Engine流程
  9. JQ学习(三)-ajax
  10. 事务传播机制/数据库异常解析——2016-8-13分享总结
  11. 最新的.NET Framework聚焦于改进可访问性
  12. Windows 自启动总结《转》
  13. nyoj 买水果(组合数求法与分析)
  14. 安科瑞高校能源管理系统-Susie 周
  15. 淘宝API 搜索相似的商品
  16. arcpy投影(一)——prj、gtf文件定义、路径及解析(arcmap,arcpro)
  17. android 常用机型尺寸_安卓手机屏幕多大合适?6.4英寸是“黄金尺寸”吗?
  18. 没有基础怎么自学好淘宝美工设计?自学有哪些方法?
  19. JSR 354为Java引入金钱与货币的完美支持
  20. UVA - 1626 Brackets sequence

热门文章

  1. 有关计算机和音乐论文,计算机音乐
  2. 《青玉案·元夕》——辛弃疾
  3. 大咖说*计算讲谈社|不止能上路,更能做好服务:自动驾驶产品规模化的问题定义
  4. android os parcel,java.lang.RuntimeException:Parcel android.os.Parcel:...
  5. 【厨艺提升】炒土豆丝
  6. volatility内存取证分析与讲解(持续更新)
  7. 蓝牙扫描startLeScan测试
  8. Java Lombok详解
  9. 使用Quick BI 制作企业数据分析报表
  10. bootloader相关