为复杂的工作时间表建模


9

我遇到了一个现实世界的问题,我试图代表并实现自动化。我已经将其简化并抽象为以下内容:

  • 有n个工作地点(P1,P2,...,Pn)。
  • 每个位置Pn都有一个密钥Kn。
  • 有m个工人(W1,W2,...,Wm)。
  • 为了在Pn工作,工人必须持有Kn。
  • 每个密钥既可以由工作人员持有,也可以留在交易所E中。
  • 工人可以随时到交易所旅行,以拿起一些无人认领的钥匙或放下一些钥匙以供其他人使用。

  • 现在,必须严格执行外部工作计划。例如:

    • 2016-04-21 W1必须在P6工作
    • 2016-04-21 W2必须在P3工作
    • **需要交换钥匙**
    • 2016-04-22 W3必须在P3工作
    • 2016-04-22 W2必须在P6工作
  • 任何数量的工人都可能必须在其计划的某个时间在Pn工作,尽管从来没有在同一天

我们知道:

  • 所有键的起始位置,包括工作人员或E
  • 每个工人必须履行的未来工作指令

因此,我正在努力为整个情况建模。您能提出我应该考虑的数据结构和算法,以便掌握它并开始优化每个工人的交易所旅行吗?

我要最小化的是去E的行程总数。第二个目标是确保没有工人进行不成比例的行程。

提前致谢!!


2
每个工人到E的平均行程数=“行程总数” / m。因此,如果m为常数,则您的两个目标是相同的目标。更有趣:我猜每个工人可以同时携带多个钥匙吗?
布朗

是的,工人可以携带任意数量的钥匙。关于“平均”,我想我表现得很差。我在考虑更多关于公平性的问题,即没有工人应该完成不成比例的行程,因此差异很小。(匹配的已编辑问题)
Gareth Lloyd

由于工作人员显然是受密钥信任的,并且可以在夜间和必要的时间内保存密钥-只要不需要进行交换-为什么不为他们永久保存的每个工作人员设置一组密钥?或者,为每个工人在给定时间段(例如一周)内去过的所有地方创建一组密钥。根据需要复制密钥,以便为每个工作人员设定一个星期。所有工人每周交换一次密钥。
radbobob '16

去交易所要花钱(钱还是时间)?
Dan Pichelman '16

是的,更多的交流旅行是更糟糕的结果。
Gareth Lloyd

Answers:


1

这个问题在一个关键点上有点模棱两可:我们试图解决哪些元素。我们是否正在考虑优化委派资源的顺序?尽量减少去交易所的次数?最大化工作订单吞吐量?

考虑到这一点,我将假设我们可以做这些事情的任何混合,并将答案保持在较高水平。

我想到的第一件事是,这种尝试解决的相互关联的问题主要集中在依赖性管理上。可以将工作人员,键和位置视为必须完成的依赖关系才能完成工作。

将其带入更高的层次,我将看一下拓扑排序的一种改编(https://en.wikipedia.org/wiki/Topological_sorting)。将问题空间建模为一个大图(现代图数据库也可能是某些此类分析的良好介质),然后使用各种拓扑排序来解决问题空间的不同方面。

稍微切线,听起来像是一个非常有趣的项目。今天,先生,我羡慕你。



着色算法在这种情况下有帮助吗?cn.m.wikipedia.org/wiki/Graph_coloring
linuxunil
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.