【问题标题】:Linear programming - combining models线性规划 - 组合模型
【发布时间】:2013-11-27 15:50:11
【问题描述】:

(将它从 math.se 移到这里 - 它没有得到足够的爱。对不起!)

因此,我被分配使用线性(整数)编程对多处理器设置进行建模。基本上,有五个处理器之间有链接,目标是找到通信/处理的最佳调度,以最大限度地减少处理一组数据的时间。图表如下:

---
|A|
---
 |
 |
---    ---
|B|----|D|
---    ---
 |      |
 |      |
---    ---
|C|----|E|
---    ---

A 是数据源。现在,有几种不同的场景(与流向和发送/接收数据的顺序有关),并且对于每种场景,表示处理时间的不等式是不同的。

例如,如果数据从 B 流向 D,从 B 流向 C,从 D 流向 E,从 C 流向 E,则 B 先与 C 通信,再与 D 通信,E 先从 C 接收,然后从 D 中,C 的总处理时间等于:

Tc >= Cab + Cbc + Cce + Sc*Dc //Sc is constant

但是,如果 B 先将数据发送给 D,然后再发送给 C,那么它是

Tc >= Cab + Cbd + Cbc + Cce + Sc*Dc //Sc is constant

等等。总的来说,有 10 种这样的场景,每一种都需要满足一些不等式。我需要的是一种与我的求解器沟通的方式“选择其中一组不等式,而不介意其余的”。我想我将不得不使用一些二进制变量来对它们进行编码,我也听说过将变量乘以一个巨大的值来“模拟”一个条件,但目前我找不到一种方法来“合并”所有将这些迷你模型合二为一,让求解器选择最佳方案。

【问题讨论】:

  • 只是为了确保我正确理解了您的问题:您列出了 10 种可能的情况,对吗?每个场景都有 2 个不等式?另外,什么是Dc? C 变量(如 Cab 中)与时间变量 Tc 之间有什么区别?
  • @RamNarasimhan 两种不同的场景(ASCII-art 是通用的,post 中的不等式是特定于案例的)。他们每个人都有一堆不等式,超过 2 个 - 这里显示了其中一个。 Dc 是将由处理器(在本例中为 C)处理的数据量。 Cxy 表示链路 (X, Y) 上的通信所花费的时间。很抱歉造成混乱,这个问题本身就很长^^
  • 谢谢。给定两种可行的方案,您如何确定哪一种是最佳方案。跨场景试图最小化的目标函数是什么?我有一个公式,只是想确保它会起作用。
  • min: T; T >= Ta; T >= Tb; T >= Tc; ...
  • @RamNarasimhan 至于关于场景的问题 - 我想留给求解者决定。基本上,哪一个可以最好地减少总处理时间。

标签: linear-programming


【解决方案1】:

这是公式的草图:

你有十个场景,S1 到 S10

让我们引入二进制变量Y_i,它表示 10 个场景中的哪一个在起作用。 所以这些变成了Specially Ordered Set

 Sum (over i in 1..10 )  Y_i = 1 (Only one scenario holds at a time.)

要求

对于每种情况,都必须遵守一些不等式。应忽略所有其他不等式(适用于其他情况)。

M 成为一个大数。假设比任何数据集的最大可能处理时间大两个数量级。

目标函数:

Min T

约束:

T >= Ta
...
T >= Tc
..
T >= Te

让我们使用您的场景...我们称之为场景s。对于场景s 下需要满足的每个不等式,我们在大于不等式的 LHS 中引入一个 M(1-Y_s) 项。

场景 s 的不等式:

Tc + M(1-Y_s) >= Cab + Cbc + Cce + Sc*Dc //Sc is constant
Tc + M(1-Y_s) >= Cab + Cbd + Cbc + Cce + Sc*Dc //Sc is constant
...
...

其他场景的不等式 t:

Td + M(1-Y_t) >= Cde + Cbc + Sd*Dd //Sd is constant
Td + M(1-Y_t) >= Cde + Cbd + Cbc + Cce + Sd*Dd //Sd is constant
..

场景 u 的不等式:

...
...
and so on.

根据 Y_i 为 1,那些 M(1-Y_i) 项将变为零。所以不平等将被强制执行。 对于所有的 M(1-Y_j).. 左边将是一个巨大的数字,不等式将永远保持微不足道。

好消息是,由于总体目标是最小化 T,而 T 又是 Ta...Te...在所有 10 个场景中的最大值,Solver 将自动选择最佳场景。

希望对您有所帮助。

【讨论】:

  • 太好了,这听起来正是我所需要的 :) 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多