智能优化算法 1:遗传算法

考试范围

  • 五个优化算法(遗传、蚁群、粒子群、退火 + 自定义)的基本原理(数学公式,解释清楚)和算法过程(第一步、第二步…),包含老师讲的四个,以及另外一个随便的。15分
  • 给出一个用智能优化算法解决本领域的案例
  • 给一个问题(他讲过的:退火解决调度问题,粒子群解 TSP 问题,遗传算法解 01 背包),给出智能优化算法求解该问题的过程

遗传算法

基本原理

遗传算法是一种模拟自然进化过程的优化方法,它从一个称为种群的候选解集合开始,通过不断地产生新的种群来寻找更优的解。

遗传算法的核心是选择、交叉和变异三种操作。

  • 选择是根据解的适应度来从旧种群中挑选出一些解作为双亲,适应度越高,被选中的概率越大。
  • 交叉是将两个双亲的部分特征进行组合,产生新的解作为后代。
  • 变异是对某些解的某些特征进行随机改变,增加种群的多样性。

这个迭代产生新种群的过程一直持续到遗传算法达到预设的终止条件为止。这就是遗传算法的基本原理。

image.png

对每个个体都进行上述的优化,然后择优录取。

选择、交叉和变异的方式多种多样。以选择为例:

  • 轮盘赌法:将个体适应度大小映射为概率进行复制,适应度高的个体有更大概率复制,且复制的份数越多
  • 精英产生精英:对适应度高的前 N/4 的个体进行复制,然后用这些个体把后 N/4 的个体替换掉
  • 选择个体时,不一定要是有明确指标的,随机的方式也可以
  • 甚至不一定总是适应度高的替换低的,用低的随机替换高的也行

综上所述,给出遗传算法的主要步骤:

  1. 产生初始群体。
  2. 计算每个个体适应度函数值。
  3. 利用轮盘赌算法选择进入下一代群体中的个体。
  4. 两两配对的个体进行交叉操作以产生新个体。
  5. 新个体进行变异操作。
  6. 将群体中迄今出现的最好个体直接复制到下一代中(精英保留策略)。
  7. 反复执行步骤 2 到步骤 6,直到满足算法终止条件

遗传算法解 01 背包

代码实现

遗传算法是一种启发式的搜索方法,通常无法保证找到全局最优解。它通过模拟自然选择和遗传变异来逐步改进解,但因为它依赖随机过程,因此每次运行可能会得到不同的结果。为了增加找到最优解的概率,可以多次运行算法,并选择其中最好的结果。

在 01 背包问题中,因为物品本身有 n 种,所以染色体长度设为 n 即可,天然属于二进制编码。

产生初始群体

例如物品列表如下:

item weight value
三级头 15 11
三级甲 18 12
机枪 17 9

那么对于以下两种选择方案:

item weight value
三级头 15 11
三级甲 18 12
总计 33 23
item weight value
三级头 15 11
机枪 17 9
总计 32 20

可分别表示为染色体 A = [110]B = [101],其中 1 表示选中对应物品。假设背包容量为 40,对于上述两个染色体,A 的适应度就高于 B(因为 value 更大)。

注意:这里的初始种群个数的选择要视具体情况而定,如果初始数量太少可能会导致在向量空间中覆盖面积过小而导致收敛到了非最优解就终止了算法。


选择

  1. 计算 n 个物品的适应度值 fif_i
  2. 计算出轮盘赌选择概率

    pi=fi/fi=fi/fsump_i=f_i/\sum f_i=f_i/f_{sum}

  3. 根据概率选择出下一代种群(注意判断背包容量)

交叉/变异

交叉方式有很多种,这里可以选择一个交叉点位置,然后从此处断开,两者交换即可。变异的话可以随机选择一个点位变异(取反)。