【发布时间】: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 至于关于场景的问题 - 我想留给求解者决定。基本上,哪一个可以最好地减少总处理时间。