单纯性法(Simplex Method)是“线性规划之父”George Dantzig 最著名的成果,也是求解线性规划最有力的算法之一。而这一算法在求解二次规划(Quadratic Programming, QP)时的升级版就是有效集法(Active Set Method, ASM)。这两种算法的特点都是迭代点会循着约束边界前进,直到达到问题的最优点。本文对用于求解 QP 命题的 Primal ASM 算法作以介绍,主要内容的来源是 Nocedal 等人 2006 年的著作 Numerical Optimization 第二版。
有效集(Active Set)
要说有效集法,首先要说说什么是有效集。有效集是指那些在最优点有效(active)的不等式约束所组成的集合。例如,考虑二次函数
函数的等高线及两个约束的图像如下:
通过计算或者从图上可以看出,当没有约束时,目标函数的最小值在 (−1,−0.5) 处取得。当考虑上述的两条约束时,目标函数的最小值在 (0,−0.5) 处取得。这个时候在最优点处,约束 x≥0 中的等号被激活,这条约束就被称为有效约束(active constraint)。如果我们记两条约束的编号为 1 和
而如果原命题中 y≥−1 这条约束改为 y≥−0.5 ,即要求解的优化命题变为
函数的等高线及两个约束的图像如下:
此时优化命题的解仍然是 (0,−0.5) ,但在最优点处两条约束均被激活,即此时的有效集可以记为
有效集法
从上面可以看出,如果我们能提前知道在最优点处有效的约束,那我们就可以把那些未有效的不等式约束剔除掉并把原命题转化成更易求解的等式约束命题。然而,在求解之前我们往往对最优点处的有效约束知之甚少。因此如何找到最优点处的有效约束也就是有效集法的主要工作。另外在这里要提一点,其实在一些应用中,我们需要求解一系列类似的 QP 命题,这个时候我们往往对最优点处的有效约束有一个初始猜测,因此通过这种方式可以实现算法的热启动(Warm Start),从而加速算法的收敛。下面我们正式开始介绍 ASM 的理论。我们考虑的是带有不等式约束的凸二次规划命题:
在 ASM 中,我们会构造一个工作集(Working Set),与有效集类似,工作集也是有效约束的集合,但只是我们认为在某次迭代中有效约束的集合,它可能与最优点处的有效集相同,也有可能不同。如果相同,我们可以通过计算对偶变量 λ 了解到此时已经是最优点从而退出迭代。如果不同,我们会对工作集进行更新,从现有工作集中删除一条约束或者增加一条新的约束到工作集中。因为工作集是随着迭代而改变的,因此记工作集为 Wk 。
在第 k 次迭代开始时,我们首先检查当前的迭代点
把上面的定义代入原命题有: