3

假设我们想从$A$ 走到$B$,但是它们之间有几条河流。为了从$A$ 走到$B$,我们需要为每条河流建造一座桥。

我们有几种类型的木板。不同类型的木板成本和长度不同,但相同类型的木板成本和长度相同。我们可以用木板搭桥。但是,可用木板的数量是有限的。我们的目标是为每条河流建造一座桥梁,同时最大限度地降低木板的总成本。

为了更好地描述问题,我们画了一个图来描述我们的问题。

在此处输入图像描述

有 3 条河流需要的桥梁长度分别为 $d_1$、$d_2$ 和 $d_3$。

我们有 4 美元的木板。令 $l_i$ 和 $c_i$ 表示第 $i$ 种木板的长度和成本。令$\delta_i$ 表示第$i$ 种木板的可用数量。令 $n_{ij}$ 表示用于建造桥梁 $j$ 的木板数量。

那么问题可以表述如下:

最小化 $\sum_{j=1}^3 \sum_{i=1}^4 n_{ij}c_i$

英石

$\sum_{i=1}^4 n_{ij}l_i \geq d_j$

$\sum_{j=1}^3 n_{ij} \leq \delta_i$

$n_{ij}\geq 0$ & $n_{ij} \in Z$

我认为这个问题应该是 NP-Hard,因为它是一个整数规划问题。这是真的?有谁知道如何解决这个问题?即使是不是最优的解决方案。

4

1 回答 1

2

如果您可以划分木板,并在多座桥上使用这些碎片,并且您可以在单个桥上使用不同类型的木板,那么这不是 NP 完全的,因为您只需先使用每米最便宜的木板并继续。

否则它可能是 NP 完全的,因为它也是一个装箱问题。例如,如果您不能分割木板以在多座桥梁上使用这些部分,假设您有以下数据集:

  • 1号河有7米的差距
  • 2号河有6米的差距

用木板:

  • 10块7米长的木板。价格:每块木板 60 美元。那是每米 8.57 美元。
  • 10块6米长的木板。价格:每块木板 40 美元。那是每米 6.66 美元。

最便宜的选择是花 100 美元购买每块木板,而不是花 120 美元购买 3 块最便宜的木板。

至于解决方案:查看元启发式(禁忌搜索、模拟退火、延迟验收)和OptaPlanner(java,开源)等软件。

于 2013-09-10T16:42:35.213 回答