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