3

我想创建一个像这里这样的交通模拟器:http: //www.doobybrain.com/wp-content/uploads/2008/03/traffic-simulation.gif 但我并没有对此深思熟虑。

我会创造一流的汽车。每辆车都有自己的颜色、位置等。

我可以用数组创建道路。

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

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

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

4

7 回答 7

5

你不告诉汽车去哪里。由于它的速度,它无论如何都会去。通过向前看(距离现在几个时间步长,还有一条路吗?)你可以看到你是否需要调整速度。

道路不是阵列;它是一个矩阵或位图。你不能在拐角处走得那么快,否则你会飞出马路。

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

我发现如果你能用简单的英语(或者在我的例子中是荷兰语)清楚地表达你的概念,编写代码会变得容易得多,有时几乎是微不足道的。

编辑

为清楚起见,当我谈论速度时,我指的是一个矢量,它既有大小(10MPH)又有方向。您的向量将有 2 个元素,xy,除非您还想要飞机,或者想要模拟山丘等(您不想要山丘,因为您还必须考虑重力:) z位置和使用速度。

于 2010-04-27T10:36:18.633 回答
2

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

当您将一辆新车添加到模拟中时,只需设置它的初始位置、速度和目的地。

于 2010-04-27T11:25:10.143 回答
2

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

于 2010-04-27T11:32:17.410 回答
2

我鼓励您为此使用我自己的项目。它被称为GarlicSim,它是一个用于进行模拟的平台,它非常适合您想到的那种模拟。(顺便说一句,就在昨天我发布了一个大版本,0.4 版)。

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

如果您认真对待它,我可以帮助您编写您的 simpack。如果您想这样做,请在邮件列表中发送邮件。

于 2010-04-27T11:53:20.383 回答
2

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

于 2010-04-27T12:32:54.170 回答
1

有一个名为processing的基于 Java 的包,它针对艺术家和非程序员或初学者程序员,其中包括一些非常好的可视化功能,同时提供了一个简化的开发环境(没有“public static void main(String[] args)”,例如)。查看展示粒子系统的演示,了解如何为您的个人汽车建模。此代码调用pyprocessing有一个 Python 版本,它遵循许多相同的简单编程习惯。

这是我的小“特斯拉”小程序——在两个球形电极之间移动鼠标。

于 2010-04-27T12:36:33.397 回答
0

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

您可以在离散时间内像一维元胞自动机一样简单,也可以像成熟的物理系统一样复杂(甚至可以对引擎中的化学反应进行建模!),使用复杂的 AI 和高级逼真的图形和声音效果.

在这之间,有很多可能性。想想你能做什么,你想学什么。

于 2010-04-27T12:36:02.363 回答