是否有一种有效的算法以既避免冲突又允许偏见的方式分配资源?

Posted

技术标签:

【中文标题】是否有一种有效的算法以既避免冲突又允许偏见的方式分配资源?【英文标题】:Is there an efficient algorithm to distribute resources in a way that both avoids conflict and allows bias? 【发布时间】:2012-12-13 04:06:08 【问题描述】:

背景


(如果你只关心算法,请跳过这个)

在我工作的大学里,我们系最大的麻烦之一就是课堂安排。出于说明目的和列出问题的范围,我们现在进行调度的方式如下:

    教授向我们提供了他们正在教授的课程的列表,以及他们希望教授的时间段,按优先级排序(最需要到最不想要)。 管理部门向我们提供了我们可能分配的房间列表以及这些房间可供我们部门使用的时间。 我们开始将教授分配到房间,试图(起初)考虑到不同教授的偏好。 不可避免地会出现冲突,教授们开始要求改变,而计划在 30 号教授附近的某个地方分崩离析,此时我们开始分配房间,基本上可以放在任何可以容纳的地方,到处都是皱巴巴的纸,没有人快乐的。 (如果你想知道为什么你的课是在星期四早上 9.30 上课,但每隔一天下午 4 点上课,现在你知道了)

我被要求悄悄地调查软件是否可以更优化地做到这一点。


实际问题

是否有一种算法可以有效地调度一组资源,从而满足以下条件:

算法绝不能同时将两位教授分配到同一个房间。 在为每位教授分配一个房间/时间之前,该任务尚未完成。 该算法无需担心教授过多而无法满足可用时隙的数量。 (我们没有那么资金充足。) 算法应尽可能尊重个别教授的调度偏好。

我觉得我不能成为第一个提出这个问题的人。有没有一种有效的算法,或者这种问题只能被暴力破解?

【问题讨论】:

【参考方案1】:

一段时间以来,已经有关于时间表和日程安排问题的论文。对“时间表包”这两个词进行网络搜索会出现商业包和其他包。

我知道一个问题领域,尽管人们曾多次尝试寻求复杂的解决方案,但最终还是编写了非常基本的程序来实施临时解决方案 - 在该领域没有明显的机构学习迹象。这样做的原因是用户需要了解程序做出决定的原因,特别是如果它未能解决问题并且他们需要放松约束。

听起来您的特定问题 - 如果它像最初听起来一样简单 - 可以通过使用 http://en.wikipedia.org/wiki/Assignment_problem 来解决,您可以将特定课程分配到特定的房间时间段而不是代理到任务。

一个程序或算法可能会受到其输入中约束的相对顺序的影响,尤其是当它遇到平局时,两个解决方案的结果都一样好。我将被包括在内来检查这一点,如果是这样,在将输入呈现给程序或算法之前随机重新排序输入,以尝试至少将偏见转化为随机运气。

【讨论】:

以上是关于是否有一种有效的算法以既避免冲突又允许偏见的方式分配资源?的主要内容,如果未能解决你的问题,请参考以下文章

伙伴算法的实现-分配页框

最近的一组3分

是否有一种算法可以在无向图中找到成本最高的长度为 k 的路径

海康威视复赛题 ---- 碰撞避免方案

是否有一种高效且 Python 的方式比较 isoweekday() 的日期名称和输出?

是否有任何有效的方法可以以最新的一阶对给定的 mongodb 数据进行分页并避免排序超出大数据的内存限制?