不懂优化的人希望能有通用的方法来解决他手头的问题,但不幸的事没有这种方法存在,快速的方法都需要某些条件,比如常见的有强凸,线性,可分解啥的。目前研究的比较成熟的就是强凸光源可分解
非凸没有特别有效的方法来解,如果是强凸的,何必用那么复杂的方法求最优解?正是因为不是强凸的,才用到优化方法。就算是凸的,也分好几种不同的情况,只用一阶梯度,达到牛顿梯度法的收敛速度,在convex问题中,还有non-smooth的函数,也是不好解的。
算法论中的动态规划,贪心算法等等是基本的理论。实际中采用的往往需要和计算方法相结合。下面几种是可以通过工具直接实现的最优解算法.
爬山算法:爬山算法是一种简单的贪心搜索算法,是对深度优先搜索的一种改进,利用反馈信息帮助生成解的决策,属于人工智能算法的一种。
采用启发式方法,局部择优,每次从当前解的临近解空间中选择一个最优解,替换为当前解,直到达到一个局部最优解。
缺点:因为不是全面搜索,所以结果可能不是最佳。
爬山算法一般存在以下问题:
1)、局部最大:某个节点比周围任何一个邻居都高,但是它却不是整个问题的最高点。
2)、高地:也称为平顶,搜索一旦到达高地,就无法确定搜索最佳方向,会产生随机走动,使得搜索效率降低。
3)、山脊:搜索可能会在山脊的两面来回震荡,前进步伐很小。