一、学习目标
根据约束条件的类型,将问题分为4类:线性等式、非线性等式、线性不等式、非线性不等式。学习对于不同的问题,使用不同的方法进行求解。统一的思想都是消解法,即消去约束条件,将有约束的问题转化为无约束的问题,再进行求解。
注意:我们说的非线性规划,说的是目标函数是非线性的,而上面讲的线性和非线性,指的是约束函数。
二、线性等式约束的非线性规划
对于等式约束,我们可以通过映射法将约束条件约去。原理就是原本的x处于随机数据空间,先将其限制在Ax=b的超平面中,随机数据空间变为超平面空间中,既然在超平面空间中,就不会背离原来的约束。
具体方法就是用奇异值分解,(奇异值分解原本用于求非方阵的逆,显然,我们的A不一定是方阵)具体矩阵的计算见下面的例子:
三、非线性等式约束的非线性规划
实际上,对于非等式约束问题,我们并没有更专的算法,只有使用拉格朗日算子法消去约束函数,而之后,除了梯度下降法外,我们还是可以使用上一节课的方法来求解。
四、线性不等式约束的非线性规划
与线性等式约束的问题一样,也可以使用映射去解决约束问题,但是并不像前者是“从体到面”的映射,是“从体到体”的映射,并不好寻找这样的映射函数。于是类似于单纯形法和有效集法,前人提出了梯度投影法:
如果最优点在约束条件外,我们的计算过程就如下图:
或许有人会好奇,如果最优解在约束内,就没必要投影了啊。确实,但做投影并不影响找到最优解。实际上,我们每一步迭代时,我们都找到下降方向,然后将这个方向向某条边界进行投影,实际上还是会导致函数值下降。显然,做投影的唯一作用就是不让迭代点跑到约束条件外。
五、非线性不等式约束的非线性规划
对于这类问题,我们主要使用外点法(罚函数法 pentalty function)和内点法(栅栏函数法 Barrier function)来解决。而这两个方法都起源于可行性函数法(feasibility function)。这三类方法都可以统称为惩罚法。
而由于可行性函数是不平滑的,于是才提出外点法和内点法。其中外点法(罚函数法)如下定义:
注意:罚函数是人为设计的函数,与原问题无关。有以下几种罚函数:
同理,内点法(栅栏函数法)的定义与例子为:
将三种方法作用到统一条函数中,可以明显发现其区别:
而罚函数法之所以叫外点法,是因为合成后的函数的最优解出现在约束区域外,不断向约束区域内收敛;而栅栏函数法之所以叫内点法,是因为合成后的函数的最优解出现在约束区域内,最后也会往最优解收敛。
2.除了以上方法外,前人还提出了序列二次性优化(SQP,Sequential Quadratic Programming),其思想总体上而言,就是使用拉格朗日算子法消去约束条件,再根据梯度下降法,迭代收敛到最优解:
(a)首先拉格朗日算子法:
(b)然后求梯度下降方向:
(c)再然后,进行迭代:
整体算法就是:
六、本章小结
1.了解非线性规划问题拥有不同约束条件的情况。
2.认识到主要的思想是消去约束条件,再使用各种办法去求解问题。