根据剩余空间将作业分配给主机的算法

标签 algorithm resources allocation

输入:

  • 作业实例列表,其中 (job_i, size_of_job_i) where 我 = 1..n
  • 这样的主机列表 (host_j, remaining_space_host_j) 其中 j = 1..m

想要

  • 相应地将工作分配给主机。

输出

  • (host_j, job_i) 其中 j=1..m 且 i = 1..n

仅供引用,当作业分配给主机时,主机的剩余空间将会减少。 例如job1 = (job_1, 1TB)分配给host1 = (host_1, 100TB)后,host1变为(host_1, 90TB)。

目前使用贪心算法,贪心算法的工作方式是先找到一个最大的剩余主机,然后给它们分配任务。

这个算法的问题是作业没有分布在所有主机上。 这意味着一些有足够剩余空间的主机没有工作,而一些主机分配了太多的工作。

我很确定有一些著名的算法。 我搜索了关键词“资源分配算法”,但找不到适合我的。可能我选错了关键字。

有人知道或推荐一个好的简单算法吗?

最佳答案

背包问题或许能帮到你。看一看。

它是关于具有权重变量的项目。问题是,如果背包的极限是 X(1,2,3...),最佳组合是什么。

enter image description here

关于根据剩余空间将作业分配给主机的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51624811/

相关文章:

algorithm - O(n log n) 时间内排列的边界框

c# - 如何在代码隐藏中添加资源

python - 是否可以使用 python 脚本(或任何其他编程语言脚本)来限制其他应用程序使用的资源(如 RAM、CPU 使用率)?

c - 如何创建一个 `static` 大小为零且没有 calloc 的常量数组?

c++ - 文本文件中的 BellmanFord 未提供与手动输入相同的输出

python - 有优化这个算法的想法吗?

algorithm - 如果在递归堆栈中找到顶点,则在有向图中检测到循环 - 为什么?

java - JSF 所需的库是什么/在哪里(特别是 javax.faces 的东西)

c++ - 释放内存失败 : free(): invalid next size (fast):

c++ - 调用 delete[] 会破坏我的 C++ 程序