遗传算法:受生物启发的快速收敛优化方法
1. 遗传算法的主要组件
要完整定义一个优化算法,需要明确以下几个主要组件:
- 如何编码解决方案 —— 对于遗传算法来说是染色体。
- 过渡算子 —— 交叉和变异。
- 衡量成本的方法 —— 适应度函数。
- 系统如何进化 —— 世代和自然选择。
2. 染色体
染色体用于编码我们需要解决的问题的解决方案。在Holland的原始工作中,染色体仅被认为是由0和1组成的位串。但并非所有问题都能用二进制字符串编码,后来衍生出了更通用的版本,允许基因(染色体中的每个值)为连续的实数值。
概念上,这些版本可以被视为等价的,但当我们不使用二进制字符串表示染色体时,可能需要对其存储的可能值进行限制,作用于生物体的算子也需要进行调整,以检查和维护这些约束。
以0 - 1背包问题为例,它是讨论原始遗传算法的完美示例,因为该问题的解决方案可以精确地编码为二进制字符串。对于每个物品,0表示将其留在地球上,1表示将其放入运往火星的箱子中。
在这个例子中,基因型和表型存在1:1的映射关系,即一个解决方案(表型)由其表示(基因型)唯一标识。因此,具有相同基因型的两个生物体将对应相同的解决方案,进而具有相同的适应度值。
以下是一个可能的物品列表,包含其重量和卡路里:
| 食物 | 重量(千克) | 总卡路里 |
| — | — | — |
| 豆子(罐) | 300 | 690,000 |
| 西红柿(罐) | 300 | 237,000 |
| 草莓酱 | 50 | 130,000 |
超级会员免费看
订阅专栏 解锁全文
644

被折叠的 条评论
为什么被折叠?



