算法笔记-迭代改进

Posted by MaggicQ on July 11, 2017

迭代改进

迭代改进的策略是:从某些可行解出发,通过重复应用一些简单的步骤来不断改进它。

这些步骤一般会通过一些小的、局部的改变来生成一个可行解,这个解使得目标函数值更为优化,

如果目标函数值无法再得到优化,就把最后的可行解作为最优解返回。

几个障碍:

  • 需要一个初始的可行解
  • 对可行解应该做什么样的改变并不总是一目了然
  • 如何避免陷入局部极值(最根本的困难)

单纯形法

单纯形法是线性规划的经典算法。

线性规划问题的可行区域(几何解释)总是具有有限数量的顶点,

而且,线性规划问题的最优解往往可以在可行区域中的一个极点找到。

极点定理: 可行区域非空的任意线性规划问题有最优解,而且,最优解总是能够在其可行区域的一个极点上找到。

根据这个定理,在解一个线性规划问题时,若是可行区域有界,那么我们只需考虑有限数量的点,而可以忽略其他所有点。但是有两个问题:

  • 需要一种方法来生成可行区域的所有极点
  • 可行区域的极点数量随着问题规模的增长呈指数增长

单纯形法可以在一般情况下,只需要检测可行区域极点中的一小部分就能找到最优点。

做法:

  • 先在可行区域中找到一个极点,检查一下在邻接极点处是否可以让目标函数取值更佳
  • 如果不是,当前顶点就是最优点
  • 如果是,转而处理那个能让目标函数更佳的邻接顶点