电梯算法

标签 algorithm

<分区>

比方说,在 G+24 大楼的地面层有一部电梯。

G+7 上的一个人叫电梯下去(按下按钮)。

因此,电梯将显示向上箭头直到 G+7,然后切换到向下箭头,因为它应该从那里下降。

如果有人在 G+2 按下向上箭头按钮(电梯刚刚开始向上移动,还没有越过 G+2), 电梯/升降机真的会在 G+2 开放吗?

如果可以,如果 G+2 的人按下按钮转到 G+20 会怎么样?

电梯的路径是什么(如 G -> G+2 -> ...)?

我很困惑电梯/升降机究竟是如何处理这些情况的!

最佳答案

作为一名程序员,您使用统计和建模(最佳情况)或根据您自己的主观经验进行假设。

在您的示例中,程序员会使用这样的假设(或统计数据),即大多数想要下楼的人都希望一路下到地面或 parking 场。再加上想进入二楼电梯(如果建筑物很高)的人想上去的假设。

因此,在到达电梯内人员输入的最低楼层之前,您不会停下来。


基本上,一般答案是您使用运动的统计。这些在不同的建筑物之间有所不同。如果建筑物是新的并且还没有数据,那么您可以查看地板上的东西并尝试预测运动。基本上,您创建了一个人的运动的模型。然后,您尝试创建一个优化函数来最小化等待时间,例如,队列大小或能源消耗。

您还可以考虑一天中的时间。例如,在商业大楼中,您可以优化在早上高峰时间上楼,并在下午晚些时候/傍晚下楼。

建模、模拟和统计是在此类场景中找到好的算法的关键。

添加条件。例如,您可以将条件设​​置为任何人都不应等待超过 20 秒的优化,即使整体效率会下降。例如,如果所有交通都在较低楼层,而 50 楼只有一个人。忽略他/她一个小时可能是最有效的,但这是 Not Acceptable 。或者,感应到满员的电梯可能只会停在里面的人选择的楼层。


例如,您可以在 Internet 上找到有关如何建模的类(class)。在 edX 等教育网站上。这是一个示例(类(class)已关闭但仍可访问):"Mathematical Modeling Basics -- Use mathematics to create models to solve real-life problems."

这是一篇关于如何为电梯建模的论文(其中有很多!)的示例:"Modeling Elevator System With Coloured Petri Nets" (PDF)

为了表明这种建模方法确实在实践中得到实际应用,这里有一个软件示例 (Oasys MassMotion) 以及它如何用于电梯建模:"Oasys Software Blog: Modelling Lifts"



这是计算机科学专业毕业生的做法。在实践中几乎同样有效并且需要更少的技能和知识的是你想出任何你喜欢的东西(做出常识性假设)并且如果有人(负责人)提示你调整算法:-)

关于电梯算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46512016/

相关文章:

algorithm - 如何在重做下打破 Perl 中的无限循环(生成随机数)

python - 迭代 n 个值

algorithm - 如何计算一组循环数据的平均值?

algorithm - 增量 k 核心算法

java - DFS over string trie (前缀)

algorithm - 强连通图

algorithm - 证明函数加减法的大O

algorithm - 编写一个程序检查线性方程是否有正整数解

arrays - 什么是验证给定数组的子序列的总和等于一个数字的最佳算法?

c# - 生成用户友好的字母数字 ID(如业务 ID、SKU)的选项有哪些