代码之家  ›  专栏  ›  技术社区  ›  user308225

二元整数规划中的构造启发式

  •  0
  • user308225  · 技术社区  · 8 年前

    我一直在寻找这个问题的答案,但我找不到任何全面的答案。我正在寻找一种算法或启发式方法来构造二进制整数规划问题的初始可行解,更具体地说,是集打包、集划分和集覆盖问题。

    如果有以下二进制整数规划问题:

    Minimize      ax_1 + bx_2 + cx_3
    Subject to    x_1 + x_2 <= 2
                  3x_1 + 3x_2 >= 6
                  x_2 + 2x_3 = 2
    

    用解表示法

    [x_1, x_2, x_3]
    

    其中x_ i=0或1。

    那么,如何着手构建这个问题的初始可行解决方案呢。当问题由数千个变量和约束组成时,遍历所有可能的解决方案显然是行不通的。

    这里的目标是构造一个初始可行值,以便可以执行局部搜索以获得局部极小值,然后对此应用元启发式。

    1 回复  |  直到 8 年前
        1
  •  2
  •   sascha    8 年前

    为一些二元整数规划问题找到可行解的问题已经存在 NP完全 这是Karp最流行的21个NP完全问题之一-> wiki : 01整数规划 !

    在一般情况下,没有什么比以下情况更好 完成 方法(完整:如果在有限时间内存在一个可行的解决方案或证明不存在,则他们将找到可行的解决方法):

    他们也在内部使用启发式(事实上,他们必须这样做:因为问题是NP完全的)。

    如果您不想使用通用算法/软件,则必须针对某些问题专门调整启发式算法。但您提到的这些问题有点不同,可能需要不同的启发式方法。分析实例中的特殊结构也很重要(随机实例的行为与大多数现实问题非常不同)!在设计这些特殊用途的启发式算法时,您可以实现一些 不完整 方法可能更适合您的情况。

    您面临的问题是,在许多元启发式中,找到初始可行的解决方案也是非常常见的!

    这是一个复杂的话题!