按优先级分配资源的算法

Kri*_*zsa 6 algorithm

我的问题如下:我和我的团队正在搬到办公室的另一部分,我们必须确定每个人的坐位。但是,每个人都有优先事项。我想找到一种算法,可以帮助我们以每个人都满意的方式分配座位。(或至少其中大多数。)

我已经开始实施自己的算法,向每个人询问3个首选选项(团队由10个人组成,并且有10个位置),并考虑其中的“资历”(他们在团队中度过的时间)他们之间的等级。

但是,我一直运气不好,试图浏览互联网以找到一种算法,该算法可以解决类似的问题,但没有找到任何解决方法。

解决此问题的最佳方法是什么?是否有解决该问题或类似问题的众所周知的算法?

谢谢!

Kri*_*zsa 1

正如许多评论所建议的那样,我决定实施一个强力解决方案。所以:

  1. 我要求团队中的每个人给出座位之间的偏好顺序(10 比 1,我用“团队成员-座位”配对的分数,10 是最高分)
  2. 收集所有带有分数的“teamMember-seat”配对,例如姓名:Steve,座位:seat1,分数:5(分数来自上一步的给定顺序)
  3. 从中生成所有可能的坐姿组合,例如 List1: [name:Steve Seat:seat1 Score:5], [name:John Seat:seat2 Score:3] ... [name:X Seat:seatY Score:X] List2: [姓名:Steve 座位:seat2 分数:4],[姓名:John 座位:seat1 分数:4] ... [姓名:X 座位:seatY 分数:X] ... ListX:[],[] ...
  4. 选择得分最高的“teamMember-seat”列表(列表的得分是通过将“teamMember-seat”配对的得分相加计算得出的)
  5. 如果有 2 个得分相等的列表,则算法会选择最资深的团队成员获得最优先席位的列表
  6. 如果仍然有多个列表(组合),算法会随机选择一个

我确信有一些更好的算法可以按照你们中的一些人的建议来做到这一点,但我已经没有时间了。

我没有发布代码,因为它真的很长而且实现起来也不太复杂。但是,如果您需要它,请随时发送私人消息。