gpt4 book ai didi

java - 使用线性规划 (LP) 的广义负载平衡 (GLB)

转载 作者:搜寻专家 更新时间:2023-11-01 00:57:44 29 4
gpt4 key购买 nike

在我的一个项目中 - 我有一个场景,我需要实现一种能够进行负载平衡的算法。现在,不像 CS 理论中存在的一般负载均衡问题(这是 NP 困难的)——任务是在 N 个服务器中分配 M 个负载(M >> N),这样任何一个服务器中的最大负载被最小化,我正在处理的案例更通用一些。在我的例子中,负载平衡问题在某种意义上更通用——它有更多的约束——这样的工作只能分配给这样的服务器(比如说工作 M_{i} 有一些特殊的安全要求,因此只能在安全服务器 N_{j} 上分配/执行。

现在我查看了 Kleinberg/Tardos 的书,找到了关于更通用的负载平衡问题(带约束的负载平衡)的部分 (11.7),我发现这个问题与我所处的情况完全匹配。通用负载平衡问题已从 IP 转换为 LP,利用 LP 可能导致将作业部分分配给机器的事实,这些机器后来被四舍五入,为流程增加了额外的 O(MN) 时间。然后,该近似解已被证明与最小可能解相差 2 倍以内。

有人能给我指点一些实现了这个算法的 C/Java/Python/MATLAB 代码吗?由于 KL 书几乎没有给出任何示例或示例伪/实际代码,因此有时很难将算法完全内化。另外关于问题的线性规划部分——什么样的实现适合它——单纯形/内点?当这个 LP 部分的复杂性被添加到问题(到分数重新分配部分)时,会有多大的不同?不幸的是,KL 书在这些方面不是很详尽。

一些示例 C/Java/Python/MATLAB 代码(或指向代码的指针)展示了这个完整算法的一些实际实现将非常有帮助。

编辑:原文为《David B. Shmoys, Éva Tardos: An approximation algorithm for the generalized assignment problem. Math. Program. 62: 461-474 (1993)》

最佳答案

我这样做的一种方法是根据每台机器上的当前负载进行负载平衡。因此,如果有三台机器 A、B、C..... A 的负载为 10,B 的负载为 5,C 的负载为 2,那么下一个任务(假设负载为 3)应该转到 C(3+2 = 5 < 所有其他组合)。在相等的情况下,首先开始的任务通常首先完成(至少大多数时候)从每台机器中删除最旧的任务并重复上述过程......递归地执行此操作

关于java - 使用线性规划 (LP) 的广义负载平衡 (GLB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681715/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com