遗传算法的理论基础

遗传算法是受自然进化理论启发的一系列搜索算法。通过模仿自然选择和繁殖的过程,遗传算法可以为涉及搜索,优化和学习的各种问题提供高质量的解决方案。本章会介绍遗传算法的理论基础

一、遗传算法相比其他启发式算法的优劣

1.使用问题

遗传算法可以有效解决一些非线性、多模型、多目标的NP-Hard问题函数优化问题
不依赖于问题的背景领域,使用方便,连续/离散、单峰/多峰等等各种形式均可

2.模型对比

(1)相比模拟退火,相比良好的全局搜索能力,不易陷入局部最优
(2)相比粒子群算法,常规的遗传算法可直接求解离散问题;而常规的粒子群算法无法求解离散问题
(3)缺点:由于变异是随机的,局部搜索能力差;相对其他算法更耗时、思路复杂抽象;

二、0-1背包问题

1.问题提出

• 将一堆物品尽量塞进一个背包里,使得包内物品总价值最高
• 假设背包容量足够大,但有载重上限,物品太重会被撑破
• 物品无法切割,每个物品只能“放”与“不放”

2.贪心算法求解

(1)方案一:优先装价值大的

• 既然目标是“包内总价值最大”,那优先装价值高的物品?
• 但实际价值高的物品可能重量也很大,背包剩余容重量不足以再放其他物品
• 反而不如多塞几个的低重量低价值物品

(2)方案二:优先装“价值/重量”(性价比)高的?

• 基于上一种方法失效,有人会进一步想到,先装“价值/重量”的来最大化利用承重
• 五个物品的价值/重量:酒(0.5)=表(0.5)=书(0.5)>相机(0.47)>衣服(0.4)
• 该方案仍无法确保求得最优解
• 注意:如果物品可分割(随意切比例来装),那么该方法可求得最优解

(3)方案三:穷举法罗列出所有可能的结果

三、遗传算法求解0-1背包问题

1.模型建立

• 用“0”和“1”表示物品的装包状态
• 一个物品装包状态为0代表没有被装进包中,1代表被装进包中
• 例如“100111001001”代表第1,4,5,6,9,12个物品被装进背包

(1)问题与数学语言的转换

• 每一个物品的装包状态(0或1)作为一个基因
• 问题的一个解:一组12个数构成的数组为一个个体(染色体)

2.算法思路

(1)步骤一:种群初始化

•有N个物品,则随机生成N个数(0或1)构成一个数组,作为一个个体,及可能的解
•重复上一步,生成多个个体,构成种群(解集)
•群体规模太小容易陷入局部最优,太大又会使计算复杂度高费时间,一般设置20到200

(2)选择个体进行运算

• 求每个个体的适应度:把解𝑥带入目标函数求函数值𝑓(𝑥)
• 目的是从第𝑡代群体𝑃(𝑡)中挑选出优良个体,把基因遗传到下一代群体𝑃(𝑡+1)

选择个体的准则

• 1、适应度越高的个体被选中的概率越大
• 2、适应度较低的个体仍有被选中的可能

为什么不直接选适应度最高的几个个体进行后续操作?

• 适应度最高的几个个体,也意味着适应度高度相似
• 往往其基因(解分量)也很相似
• 如果每次都只选适应度最高的个体,意味着每轮迭代所选的个体相似度很高
• 那么后代的相似度也会很高,进化陷入停滞,意味着陷入局部最优解

3.选择个体的方法--轮盘赌法

(1)每个个体被选中概率𝑃(xi)

概率值与其适应度值成正比

(2)计算每个个体对应的累积概率Q(xi)

其为从第1个个体到当前个体的选中概率之和

(3)随机生成一个从0-1的数组bet

随机生成一个数组bet,其中的元素取值在0到1之间,并将元素从小到大排序

(4)选择个体的判断准则

若第𝑖个个体的累积概率𝑞𝑖大于𝑏𝑒𝑡(𝑖),则第𝑖个个体被选中,并更新𝑏𝑒𝑡(𝑖)为𝑏𝑒𝑡(𝑖+1)否则选择第(𝑖+1)个个体与𝑏𝑒𝑡(𝑖)比较,直至选出一个个体为止
重复上述步骤,直至选出与种群数量相等的个体数
用这种方法,可以保证个体适应度值越大,被选中的概率越大

(5)轮盘赌法如何保证判断准则

• 基因好、适应度大使得其对累积概率带来的“增幅”更大
• 类似在轮盘上该个体所占的面积越大,被选中的概率也越大
• 被选择的个体中会有重复
• 因为适应度高的个体被选中概率大而可能被选中多次
• 对应于生物界中基因优良生存能力强的个体可能具有多次交配权

4.交叉运算

• 在被选择的所有个体中,两个个体之间进行交叉操作,即发生基因传递
• 先根据交叉概率判断是否执行交叉操作,一般设置为80%到95%(即较大概率)
• 随机选择进行交叉的位置,例如随机选中第1、3、4、7、8位基因进行交叉:

5.变异运算

• 变异操作是为了利用“不确定性”来赌一把,或许更好,或许更差
• 先判断每个个体的每个基因是否进行变异运算,一般变异概率设为0.5%到5%即可
• 变异运算就是对变异的基因取反,0变1,1变0

6.迭代循环

• 选择交叉变异后得到新一代群体(解集),记录本轮迭代的最优个体和最优适应度
• 重复步骤上述步骤,直至满足终止条件(比如迭代满100次)

四、算法思路总结

posted @ 2024-08-24 20:14  卢宇博  阅读(42)  评论(0编辑  收藏  举报