Python:交通仿真(道路上的汽车)

时间:2010-04-27 10:29:21

标签: python simulation traffic

我想创建一个像这里的交通模拟器: http://www.doobybrain.com/wp-content/uploads/2008/03/traffic-simulation.gif 但我对此并不十分了解。

我会创造班车。 每辆车都有自己的颜色,位置等等。

我可以创建一个带阵列的道路。

但如何告诉汽车去哪里? 我能听到你的想法吗?

编辑:是否禁止从优秀程序员那里获得新想法?为什么有些人想要关闭这个帖子?还是要问这样的问题?我不明白他们。 :(

EDIT2:下次我会去游戏玩家论坛。我喜欢这些想法,直到现在。谢谢!

7 个答案:

答案 0 :(得分:6)

你不告诉汽车去哪里。无论如何,它仍然是由于它的速度。通过向前看(从现在开始几步之后,还有一条道路?)你可以看到是否需要调整速度。

道路不是阵列;它是一个矩阵或位图。你不能在拐角处快速行动,否则你将从路上飞起来。

首先明确制定目标和范围始终是一个好主意。在这种情况下,您将考虑建模的范围(涉及的物理)和汽车运动的复杂性(碰撞,弯道之后,等等)。

我发现,如果你能用简单的英语(或者我的情况下是荷兰语)清楚地陈述你的概念,那么编写代码会变得更加容易,有时甚至是微不足道的。

修改

为清楚起见,当我谈论速度时,我正在谈论一个具有幅度(10MPH)和方向的矢量。你的向量将有2个元素, x y ,除非你也想要飞机,或者想要模拟山丘等(你不想要山丘'因为你'还必须考虑重力:)其中使用 z 位置和速度。

答案 1 :(得分:2)

每辆车都有位置,速度,方向/轨迹/目的地。根据这些信息以及其他车辆的相对位置和(最终)“道路标志”的存在,您可以计算出每辆车的下一个位置以及车辆是否会减速或加速。

在模拟中添加新车时,只需设置其初始位置,速度和目的地。

答案 2 :(得分:2)

你还需要考虑碰撞检测,不一定要考虑汽车本身之间的碰撞,但是你需要一种方法告诉代理商(AI)何时适合在其他车辆附近制动。你可以用每辆车周围的球体来做到这一点。

答案 3 :(得分:2)

我鼓励你使用我自己的项目。它被称为GarlicSim,它是一个进行模拟的平台,它对于你想到的那种模拟非常有用。 (顺便说一下,just yesterday我发了一个很大的版本,版本0.4)。

这都是Python,它也会给你一个很好的GUI。

如果你认真对待它,我可以帮你写下你的小说。如果你想这样做,请在邮件列表上发送邮件。

答案 4 :(得分:2)

模拟器背后的理论是排队论。我在母校的课程上找到了一个页面,它会向您显示一些可以帮助您的关键字 - https://www.erasmus.cvut.cz/prospectus/FTS/11THO-E.html。 模拟器本身将“更容易”。

答案 5 :(得分:1)

有一个名为processing的基于Java的软件包,面向艺术家和非初级程序员,包括一些非常好的可视化功能,同时呈现简化的开发环境(没有“public static void main” String [] args)“,例如)。查看显示粒子系统的演示,以了解如何为您的个别车型建模。这个代码调用pyprocessing的Python演绎遵循大部分相同的简单编程习惯。

这是我的小"tesla" applet - 将鼠标移动到两个球形电极之间。

答案 6 :(得分:0)

第一个问题:模拟的范围是什么?

您可以在离散时间内像一维细胞自动机一样简单,也可以像完整的物理系统一样复杂(您甚至可以模拟引擎中的化学反应!),具有复杂的AI和先进的真实感图形和声音效果。

介于两者之间,有很多可能性。想想你能做什么以及想要学习什么。