繁体   English   中英

指定资源分配算法?

[英]Specifying Resource Allocation algorithm?

有人可以帮助我解决或指定这是什么类型的问题:

我有一组资源和许多用户,并且对于每个用户,都有特定的资源子集,可以从中选择一个资源进行分配。 无法将两个不同的用户分配给同一资源。我需要以最大化分配的方式为用户分配资源。 例如:

R = {r1,r2,r3,r4}资源集的%

U = {u1,u2,u3,u4}用户组数

u1可以从以下资源中选择一个资源:{r1,r2,r3}

u2可以从以下资源中选择一个资源:{r1,r2}

u3可以从以下资源中选择一个资源:{r1,r4}

u4可以从以下资源中选择一种资源:{r2}

在这种情况下,我应该分配

r3-> u1,r1-> u2,r4-> u3,r2-> u4。

如果对此分配不同,则u4将没有资源可分配。

这仅是为了解释问题,我需要为200个用户和100个资源解决此问题。 我可以就使用哪种算法或如何解决这个问题寻求您的建议吗?

我编写了一个简单的汇编器,该汇编器将变量分配给寄存器。 我发现最有效的方法是先进行最困难的分配,然后再进行下一个最困难的分配。

因此,对于您的情况,您有一个需要分配的用户列表。 由于每个用户都有不同的分配规则,因此您需要为每个可用资源创建一个计数。

然后执行以下操作:

  1. 使用特定规则,计算可用资源
  2. 选择最小的用户
  3. 如果是平局,随机选择一个
  4. 为所选用户分配资源
  5. 重复

通过这种方式,您将优先分配那些最难分配的用户。 但是鉴于用户和资源,可能没有解决方案,因此您可能需要重试几次。 如果在N次尝试之后,找不到解决方案中止。

我经常使用LP / MIP求解器解决这类分配问题。 大小不是太大,因此几乎所有求解器都可以使用,并且有许多随时可用。 看起来有些矫kill过正,但以我的经验来看,它提供了一些有用的灵活性(例如,修复某些任务,允许附加的临时约束)。

您的问题可以表述为:

在此处输入图片说明

我解决了这个问题,因为它只是一个LP的RMIP(对于这种类型的问题,x变量自动为整数)。

针对您的问题,让我尝试解释这些方程式。

首先,我们需要注意变量x(u,r)仅假定值为0或1。这是线性分配问题的一个属性。 原因并不完全清楚,但是一本有关线性编程的好书可以告诉您更多信息。

第一个等式assign1说:我们可以为每个用户分配最多一个资源。 例如,对于用户u1,我们有: x(u1,r1)+ x(u1,r2)+ x(u1,r3)<= 1 此等式禁止向用户分配两个或更多资源。 如果资源不足(例如,如果我们的数据集包含2个用户和1个资源),我们可以允许未分配的用户。 由于无法将用户分配给所有资源,因此我们不对所有r求和,而仅对允许的组合求和。

第二个等式assign2说:我们可以将每个资源最多分配给一个用户。 例如,对于资源r1,我们具有: x(u1,r1)+ x(u2,r1)+ x(u3,r1)<= 1 此等式禁止将资源分配给两个或更多用户。 我们还需要这一资源,否则可以将多个不同的用户分配给同一资源。 在我们缺少用户的情况下(例如,对于我们有2个资源而只有1个用户的情况),我们允许使用未分配的资源。 由于无法将资源分配给任何用户,因此我们不对所有u求和,而仅对允许的组合求和。

最后, 目标计算进行了多少次有效分配。 这是我们要最大化的价值。 诀窍还是再次汇总允许的组合,以防止非法分配。

该模型与此处描述的LP模型略有不同。 有关分配问题的更多信息可以在本书中找到。

对于您的少量数据集,以下是输入数据和结果: 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM