【发布时间】:2012-07-11 08:31:50
【问题描述】:
背景故事
所以事情就是这样。我住在三口之家,我们中的老大已经厌倦了一个人做所有的家务。我们尝试为任务制定不同的时间表,但总是会出现问题,因为我们中的一个人不在家,家务活没有做完,或者有人觉得他们比其他人做的工作多,导致怨恨和不情愿完成一项家务。
问题
人类会犯错,但计算机程序是万无一失的,对吧?这个想法是,可以使用计算机程序公平地分配要完成的家务,这样没有人会觉得他或她正在做更多的工作。我正在尝试提出一种算法来分配符合这些标准的家务:
- 从长远来看,它应该以大约 1/3 的概率平均分配家务。
- 它应该返回一个有序的人员列表,所以如果第一个不可用,第二个可以完成它。
- 应避免在同一天为每个人安排多项家务。
- 应避免将同一家务事连续多次安排给同一个人。
- 它应该是容错的。如果安排的人没有做家务,只要反馈实际做家务的人,它应该仍然是公平的。
- 它应该适用于不同频率的不同家务(您需要每天洗碗,但每周只打扫一次浴室,...)
我的问题是:实现此算法的最佳/最酷/最公平的方法是什么? (非常可笑的过于复杂的解决方案受到赞赏:D)
我尝试了什么?
我认为实现这种算法的一种简单方法是为不同的标准定义一个成本表,然后只使用加权随机数来选择这个人,但我认为这从长远来看是不公平的(真的必须限制在每人 1/3,否则将不被接受:))。
【问题讨论】:
-
这是你学习 Prolog 的机会 :)
标签: algorithm language-agnostic scheduling