最近做了些东西,用到了 Matlab 的优化工具箱, optimization toolbox。因为以前没用过这东西,今天把这个工具箱的帮助文档基本上翻了一遍。
这个工具箱的确非常之强大,如它所说,所有的优化问题都能解,包括自定义的目标函数,甚至自定义的限制条件。最后解出来是什么样子就不确定了。
以下是 Matlab 推荐的各种优化问题对应的 Solver。
**限制条件** | **优化目标** | ||||
**线性** | **二次(正定)** | **自定义函数** | **不光滑** | ||
无 | quadprog | fminsearch fminunc | fminsearch \* | ||
线性 | linprog | quadprog | fmincon fseminf | \* | |
自定义函数 | fmincon | fmincon | fmincon fseminf | \* | |
整数 | bintprog |
Matlab 的帮助文档里用了很小一个片段说明了,以上所有的规划问题,都只是寻找局部解。不过如果优化函数是凸函数,那么局部最优(最小)解就是全局最优解。而线性、二次函数都是凸的,所以对线性和二次目标函数而言找的都是全局最优解。
Q. E. D.