Python:交通仿真(道路上的汽车)
-
01-10-2019 - |
题
我想在这里创建一个流量模拟器:http://www.doobybrain.com/wp-content/uploads/2008/03/traffic-simulation.gif但是我对此并不深入。
我会创建班车。每辆车都有自己的颜色,位置等。
我可以用数组创建道路。
但是如何告诉汽车去哪里?我可以听到你的想法吗?
编辑:是否禁止从好程序员那里获得新想法?为什么有些人想关闭此线程?还是问这样的问题?我不了解他们。 :(
EDIT2:下次我会去游戏者。到目前为止,我喜欢这些想法。谢谢!
解决方案
有一个基于Java的软件包,称为 加工 这是针对艺术家和非或初学者程序员,其中包含一些非常好的可视化功能,同时呈现简化的开发环境(例如,没有“公共静态void main(string [] args)”。查看显示粒子系统的演示,以了解如何建模单个汽车。此代码调用有python的演绎 pyprocessing 这是相同的简单编程习语。
这是我的小 “特斯拉”小程序 - 在两个球形电极之间移动小鼠。
其他提示
你不告诉汽车去哪里。无论如何,由于其速度。通过向前看(从现在起,还有一些时间段,还有一条路吗?)您可以查看是否需要调整速度。
道路不是阵列;这是矩阵或位图。您不能在角落里走那么快,也不能从道路上飞来。
首先清楚地制定目标和范围总是一个好主意。在这种情况下,您将考虑建模的程度(涉及的物理)和汽车运动的复杂性(碰撞,弯曲道路等)。
我发现,如果您可以用普通英语(或我的情况下荷兰语)清楚地陈述您的概念,那么编写代码会变得容易得多,有时几乎是微不足道的。
编辑
为了清楚起见,当我谈论的是速度时,我说的是一个矢量,该向量既有幅度(10mph)又有方向。您的向量将有2个元素, X 和 y, ,除非您还想要飞机或想要建模山丘等(您不想要山丘,因为您还必须考虑重力:) z 使用位置和速度。
每辆车都有一个位置,速度,方向/轨迹/目的地。基于此信息和其他汽车的相对位置,(最终)存在“路标”,您可以计算每辆车的下一个位置,以及汽车是否会放慢或加速。
当您在模拟中添加新车时,只需设置其初始位置,速度和目的地即可。
您还需要考虑碰撞检测,不一定是汽车本身之间的碰撞,但是当在其他车辆附近刹车时,您需要一种告诉代理(AI)的方法。您可以使用每辆车周围的边界球进行此操作。
模拟器背后的理论是Queing理论。我在母校的一门课程中找到了一个页面,该页面将向您展示一些关键字,可以帮助您 - https://www.erasmus.cvut.cz/prospectus/fts/11tho-e.html. 。模拟器本身将“更容易”。
第一个问题:模拟的范围是什么?
您可以在离散时间或与完整的物理系统(甚至可以在发动机中的化学反应建模!)一样,在离散时间或复杂的情况下,可以做到这一点,也可以像一维的蜂窝自动机一样简单。 。
在两者之间,有很多可能性。考虑一下您可以做什么以及想学的东西。