约束问题的核心有三点:第一是目标函数的定义,目标函数比较清晰,对于后面的求解更有帮助。第二是约束,比如路网约束、交规、动态约束等。第三是约束问题的优化,比如动态规划、二次规划等。本节主要介绍动态规划和二次规划的基本概念,以及二次规划问题的求解方法和形式化方法。
运动规划
动态规划通过类似于有限元的方式,把问题从连续空间抽象成离散空间,然后在离散空间中进行优化。虽然这种方法可以逼近连续空间中的最优解,但是计算复杂度很高。针对计算时间长的问题,可以使用牛顿方法进行优化,它的收敛次数是指数平方,也叫二次收敛。
二次规划
二次规划算法的本质是牛顿法的 Taylor 展开,但是它的求解过程涉及更复杂的情况。因为二次规划方法并不一定是处理一维问题,可能涉及更高阶求导。在实践中,二阶导数基本可以满足问题需求。
然而,牛顿法要求 locally convex 才能保证收敛,也就是导数是严格单调递增的。但是一般函数并没有这样的特性,动态规划或二次规划都无法获得全局最优解。为了解决这样的问题,通常使用启发式搜索方法。
首先通过动态规划方式对整个问题有一个粗浅的认识,然后通过二次规划进行细化。这种启发式搜索方法也是目前百度 Apollo 的 EM 算法的核心思想。这种方法和人开车的过程是一样的,通常驾驶员会先形成一个大概的指导思想,指明往什么方向开,然后再规划一条最优路径。
EM算法
EM算法的流程如下
- 初始化分布参数;
- 重复直到收敛。
重复直到收敛的步骤如下:
E步骤:根据隐含数据的假设值,给出当前的参数的极大似然估计;
M步骤:重新给出未知变量的期望估计,应用于缺失值。
优化决策
优化决策问题本身是一个 3D optimization 问题,其中包含了三个维度,需要生成 SLT 。三维空间的优化相对比较复杂,常用的方法有两种:一种就是离散化的方式去处理。另一种方法是 Expectation Maximization(期望最大化)。其基本思想是降维处理,先在一个维度上进行优化,然后在优化的基础上再对其它维度进行优化,并持续迭代以获得局部最优解。
非线性优化问题
对于非线性优化问题,通常都是分两步走,一是动态规划,先找一个粗略解。然后再是二次规划,从粗略解出发,找出一个最优解。