全局最优和局部最优的理解

1、 突然思考了一下,做个总结。

2、自己想的,如果是凸函数,或者是凸规划,那么只有一个局部最优解,这个局部最优解 就是 全局最优解。

我们在求解的时候,思路上都是找一个局部最优解,或者说是通过迭代运算,找目标函数值下降的解,直到两个解之间几乎没有变化,我们就认为找到了局部最优解。
那线性规划的函数和约束都是凸函数,那么我们通过算法找到了这么一个解,那就是全局最优解;
整数规划或者说组合优化,如果是凸规划(现在更正一下,整数规划由于解的不连续,划分成超级非凸,所以是非凸规划),那么通过一个算法找到局部最优,那也是全局最优解;
但是如果不是凸规划的话, 通过一些算法,找到了最优解,也可能是局部最优解;
因此,对于线性规划LP,混整数线性规划MILP(去除了,这个是非凸的),二次规划QP(凸的二次规划) 这么几种的规划,根据算法得到一个局部最优解的话,都是全局最优解;
再细分一下,LP问题有多项式算法(椭圆算法和内点法,一般商业软件用的是内点法),因此现在求解起来没有多大问题;但是MILP问题有整数在里面,没有好的多项式算法,大部分还是分支定界法(理论上是不是2的n次方?),因此没有好的方法找局部最优。

注:上面的理解还是有问题的。如果牵涉到整数,那么就是非凸的。参考 https://www.sohu.com/a/223907466_717210
因为,整数就是非凸的,还是极度非凸。所以没有好的算法(多项式算法)可以解决,只能按照某种算法解决,这样就成了np-hard问题了,就是说随着问题规模的增大,层指数增长。

3、如果碰到了模型中是非线性的,确切说不是特殊的非线性,或者说不是凸规划,要得到最优解还是比较难的。

首先,你知道有一个全局最优解;
第二,你找不到一种特定的算法能够得到这个全局最优解,因为大部分的算法是迭代下降的方法,找到一个最优解,这个最优解很可能是局部的最优,因为模型有很多个这种局部最优解,其中有一个是全局的,你不知道是哪个。
第三,说明一下,算法是怎么找最优解的。首先是初始化一个解,通过这个解下降得到最优解,那这个最优解只是你这个初始解附近的最优解而已,不能保证是全局的最优解。因此初始解的选取似乎也很重要的。

4、部分小结一下:如果是变量是连续的,目标函数是凸的,那么可以很快的求解。这类模型就两种?LP和凸的QP ,都是用内点法快速求解得到;如果变量是整数的目标函数是凸的,都要用到分支定结法 结合 某种算法 去求解,如MILP和凸的MIQP;如果变量是连续的,目标函数和约束是非线性的,那么就不好求解了,所以就会有很多人用到 启发式算法 去找满意解;如果变量是整数的,目标函数是非凸的,或者额约束是非凸的,那么还是 用启发式算法 去找满意解。

你可能感兴趣的:(最优化)