遗传算法概述
2022/3/3 12:15:09
本文主要是介绍遗传算法概述,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
对于实际问题中的目标函数和约束条件种类繁多中的最优化问题,有的是线性的,有的是非线性的;有的是连续的,有的是离散的;有的是单峰值的,有的是多峰值的。随着研究的深入,人们逐渐认识到在很多复杂情况下要想完全精确地求出其最优解既不可能,也不现实,因而求出其近似最优解或满意解是人们的主要着眼点之一。总的来说,求最优解或近似最优解的方法主要有三种:枚举法、启发式算法和搜索算法。
(1)枚举法。枚举出可行解集合内的所有可行解,以求出精确最优解。对于连续函数,该方法要求先对其进行离散化处理,这样就有可能产生离散误差而永远达不到最优解。另外,当枚举空间比较大时,该方法的求解效率比较低,有时甚至在目前最先进的计算工具上都无法求解。
(2)启发式算法。寻求一种能产生可行解的启发式规则,以找到一个最优解或近似最优解。该方法的求解效率虽然比较高,但对每–个需要求解的问题都必须找出其特有的启发式规则,这个启发式规则无通用性,不适合于其他问题。
(3)搜索算法。寻求一种搜索算法,该算法在可行解集合的一个子集内进行搜索操作,以找到问题的最优解或近似最优解。该方法虽然保证不了一定能够得到问题的最优解,但若适当地利用一些启发知识,就可在近似解的质量和求解效率上达到一种较好的平衡。
1、遗传算法概念
遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。
2、遗传算法的步骤
步骤一:初始化。设置进化代数计数器;设置最大进化代数;随机生成M个个体作为初始群体P(0)。
步骤二:个体评价。计算群体P(t)中各个个体的适应度。
步骤三:选择运算。将选择算子作用于群体。
步骤四:交叉运算。将交叉算子作用于群体。
步骤五:变异运算。将变异算子作用于群体。群体P(t)经过选择、交义、变异运算之后得到下一代群体P(t+1)。
步骤六:终止条件判断。
3、遗传算法的特点
遗传算法是一类可用于复杂系统优化计算的鲁棒搜索算法,与其他一些优化算法相比,它主要有下述几个特点:
(1)遗传算法以决策变量的编码作为运算对象。
传统的优化算法往往直接利用决策变量的实际值本身来进行优化计算,但遗传算法不是直接以决策变量的值,而是以决策变量的某种形式的编码为运算对象。这种对决策变量的编码处理方式,使得我们在优化计算过程中可以借鉴生物学中染色体和基因等概念,可以模仿自然界中生物的遗传和进化等机理,也使得我们叫以方便地应用遗传操作算子。特别是对一些无数值概念或很难有数值概念,而只有代码概念的优化问题,编码处理方式更显示出了其独持的优越性。
(2)遗传算法直接以目标函数值作为搜索信息。
传统的优化算法不仪需要利用目标函数值,而且往往需要目标函数的导数值等其他一些辅助信息才能确定搜索方向。而遗传算法仅使用由目标函数值变换来的适应度函数值,就可确定进一步的搜索方向和搜索范围,无需目标函数的导数值等其他一些辅助信息。这个特性对很多目标函数是无法或很难求导数的函数,或导数不存在的函数的优化问题,以及组合优化问题等,应用遗传算法时就显得比较方便,因为它避开了函数求导这个障碍。再者,直接利用目标函数值或个体适应度,也可使得我们可以把搜索范围集中到适应度较高的部分搜索空间中,从而提高了搜索效率。
(3)遗传算法同时使用多个搜索点的搜索信息。(并行性)
传统的优化算法往往是从解空间中的一个初始点开始最优解的迭代搜索过程。单个搜索点所提供的搜索信息毕竟不多,所以搜索效率不高,有时甚至使搜索过程陷于局部最优解而停滞不前。遗传算法从由很多个体所组成的一个初始群体开始最优解的搜索过程,而不是从一个单一的个体开始搜索。对这个群体所进行的选择、交叉、变异等运算,产生出的乃是新一代的群体,在这之中包括了很多群体信息。这些信息可以避免搜索一些不必搜索的点,所以实际上相当于搜索了更多的点,这是遗传算法所特有的一种隐含并行性。
(4)遗传算法使用概率搜索技术。
很多传统的优化算法往往使用的是确定性的搜索方法,一个搜索点到另一个搜索点的转移有确定的转移方法和转移关系,这种确定性往往也有可能使得搜索永远达不到最优点,因而也限制了算法的应用范围。而遗传算法属于一种自适应概率搜索技术,其选择、交叉、变异等运算都是以一种概率的方式来进行的, 从而增加了其搜索过程的灵活性。虽然这种概率特性也会使群体中产生一些适应度不高的个体,但随着进化过程的进行,新的群体中总会更多地产生出许多优良的个体,实践和理论都已证明了在一定条件下遗传算法总是以概率1收敛于问题的最优解。当然,交叉概率和变异概率等参数也会影响算法的搜索效果和搜索效率,所以如何选择遗传算法的参数在其应用中是一个比较重要的问题。而另一方面,与其他一些算法相比,遗传算法的鲁棒性又会使得参数对其搜索效果的影响会尽可能地低。
4、遗传算法的应用
遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于很多学科。下面是遗传算法的一些主要应用领域:
(1)函数优化;(2)组合优化;(3)生产调度;(4)自动控制;(5)机器人学;(6)图像处理;(7)人工生命;(8)遗传编码;(9)机器学习
这篇关于遗传算法概述的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22[开源]10.3K+ Star!轻量强大的开源运维平台,超赞!
- 2024-11-21Flutter基础教程:新手入门指南
- 2024-11-21Flutter跨平台教程:新手入门详解
- 2024-11-21Flutter跨平台教程:新手入门与实践指南
- 2024-11-21Flutter列表组件教程:初学者指南
- 2024-11-21Flutter列表组件教程:新手入门指南
- 2024-11-21Flutter入门教程:初学者必看指南
- 2024-11-21Flutter入门教程:从零开始的Flutter开发指南
- 2024-11-21Flutter升级教程:新手必读的升级指南
- 2024-11-21Flutter升级教程:轻松掌握Flutter版本更新