1. 求解一个优化问题的绝对最优解或者理论最优解只有一种方法:遍历法(也叫枚举法),即计算他所有可能的解,然后找到最优的那个。这也是最直接也是最笨的方法。
2. 但一般我们都不用遍历这种方法,因为对于稍微复杂一点的问题,它的计算量就可能需要计算机运行100年以上!
3. 所以对于一些复杂的优化问题NP问题,我们会用遗传算法、粒子群算法、蚁群算法等智能优化算法来求解,因为智能算法可以大大减少计算量并得到一个我们可以接受的最优解。
至于智能算法求的最优解是不是理论最优解呢?不知道。因为一些复杂的问题,我们压根求不出它的理论最优解,理由就是第1、2条。
4. 如果一个问题很简单,它所有可能的解的数量都能数过来,也就是遍历方法计算量也不大,这个时候用智能算法就基本体现不出智能算法的作用了,这时也容易得到问题的理论最优解,因为它其实就是遍历。
5. 智能优化算法是随机搜索过程,随机搜索可以保证解的“面面俱到”,即解的全局性。但正是这种随机搜索可能会使每次程序的计算结果不一样。对于某一次计算,我们怎么来确定优化算法是有效的呢?首先看收敛曲线,收敛曲线最终趋向一条直线(而不是震荡),说明算法是收敛的而不是发散的;再者看初次迭代的函数值与最终函数值之间的差别,有了较大的优化,我们就可以认定算法是有效的,得到解可以认为是最优解。
6. 既然每次程序运行结果不一样,我怎么判断哪个是最优值呢?这个你可以参考其他论文,一般就是多次运行程序,然后找到最好的结果,认为这就是理论最优解或者最优解。还有一种分析方法就是多次运行程序,统计每次的计算结果然后分析得到解的平均值和方差等。
7. 总之对于一个复杂的NP问题,没有人知道它的理论最优解。所以你用智能算法求得的最优解,你认为它是最优解,那它就是最优解了。
8. 说一下遍历算法的计算量,很多人可能不相信。TSP问题是个全排列求最优的一种排列方式,求解一个32个城市的TSP问题看看书上说它的计算量是多少。(如果你了解TSP,你应该知道32个城市其实已经是比较少数量的TSP问题了)
学习是一个动脑思考的过程,看完上述内容一定要思考。如果你对上述内容有异议,那么更要想办法证明你是对的还是我是对的?