剩余空间为主机分配作业的算法

时间:2018-08-01 03:02:38

标签: algorithm resources allocation

输入:

  • 诸如(job_i,size_of_job_i)的作业实例列表,其中 i = 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)。

当前,使用贪婪算法和贪婪算法的工作方式是首先找到剩余的最大主机,并为其分配作业。

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

我很确定有一些著名的算法可以解决这个问题。 我用关键字“资源分配算法”进行了搜索,但找不到适合我的方法。也许我选择了错误的关键字。

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

2 个答案:

答案 0 :(得分:0)

背包问题可能会帮助您。看看吧。

关于具有重量变量的物品。问题是,如果背包的极限是X(1,2,3 ...),那是最好的组合?

enter image description here

答案 1 :(得分:0)

让我们看一下贪婪的解决方案,它是对现有解决方案的修改。 为了清楚地了解我的解决方案,让我们通过一个示例来了解它。

假设我们前面有5个工作:-

J1(1TB) , J2(5TB), J3(2TB), J4(3TB), J5(2TB).

我们有3个主机:-

H1(25TB), H2(8TB), H3(10TB).

现在,假设乔布斯到达的顺序是从1到n,在我们的情况下为n=5J1, J2, J3, J4, J5

1. For J1, we pick Host with highest capacity = H1. And we increase the job count on this host by 1.
2. For J2, we sort by job count and then by remaining space and we get order of hosts as - H3, H2, H1. And we assign J2 for H3.

在上述两次迭代之后,我们的主机详细信息如下:-

H1(1, 24) , H2(0,8), H3(1,5).

3. Let's continue, for J3 - we pick H2
4. For J4, now all the three hosts have 1 job count, let's pick by remaining space i.e H1 takes up this job.

在上述两次迭代之后,我们的主机详细信息如下:-

H1(2,21), H2(1,6), H3(1,5)

5. J5 goes to H2 because job count is lowest and remaining space is more.

所以我们的最终配置将是

H1(2,21), H2(2,4), H3(1,5).

现在,我并不是说这是一种非常有效的技术,但是我们可以看到这里发生了一定程度的负载平衡。

希望这会有所帮助!