经典论文《Evolutionary Algorithms for Constrained Parameter Optimization Problems》对带约束的进化算法进行了综述,本文不涉及其内容的翻译,主要为个人对论文理解和思考。
1. 进化算法定义Evolutionary Algorithms
论文中所讨论的进化算法主要为以遗传算法genetic algorithms等传统进化算法,其基本思路是根据种群进化的观点,为了达到最大化(或最小化)目标函数f(x),其大体的执行步骤为:
- 初始采样生成大量样本x;
- 根据目标函数f(x)排序,从中选择一定比例的样本x作为该轮胜出,对应于种群进化的自然选择;
- 上一轮胜出的样本,经过自身挠动(Mutation)和彼此交互(Crossover)得到一轮样本,对应于种群进化中基因变异和遗传繁衍;
- 重复2->3的过程,直到目标函数f(x)收敛。
遗传算法是一类典型的model-free的算法,其可以用黑盒的方式来解决很多目标函数优化的问题,带约束的优化问题,是指在优化的目标函数外,对样本x本身有约束条件,比如线性规划问题就是一类带约束的优化问题,其可以通过拉格朗日方法来解决。
论文发表于近30年前,虽然当前的进化学习有了很大的发展,不仅仅只是遗传算法,其很多算法已经过时,但是其对于model-free带约束的优化问题的解决思路仍然很值得学习。
2. 带约束的进化学习解决思路
A)构造满足约束的样本法
这种方法的思路是指在构造样本时,强制使其满足约束条件,同时在进化中,设计合理的挠动算子使其下轮的样本也天然满足约束条件,此时就能将问题转换为不带约束的优化问题。这种方法大概有两种思路:
- 当约束条件均为线性的情况下(即可行解空间是凸的),通过初始化大量的满足约束的解,设计合理的进化挠动算子,使其下轮的样本也天然满足约束条件,在线性约束情况下,进化挠动算子满足如下条件得到的下轮样本必然也是满足约束的。
- 当约束条件不是线性的情况下,我们基于这样的假设:最优点往往位于约束边界上的位置。所以在初始化时,大量筛选恰好满足约束条件的样本,在进化挠动时,根据约束条件合理设计自身挠动(Mutation)算子和彼此交互(Crossover)算子,使下轮样本必然也是满足约束的。论文中给出了如下非线性约束例子: