JavaScript中的流量模拟入门

时间:2011-05-15 06:30:16

标签: javascript simulation simulator

我将在接下来的几个月里提出很多问题。对于我的九年级科学博览会项目,我想创建一个交通模拟器,以测试互连的交通信号灯是否可以增加交通流量。我有几个通用的问题需要帮助......

  • 我如何代表道路?
  • 我如何让汽车沿路行驶?
  • 我如何制作汽车开关车道或道路?

我不是在寻找具体的代码,只是很好的指针和资源来帮助我入门。任何帮助表示赞赏,C.Ruhl。

PS我只是在高中,所以没有高级数学符号请:)

5 个答案:

答案 0 :(得分:7)

经常采用的一种可能方法是使用离散模型来处理道路和汽车的位置。

Road representation

道路上的每个位置都可以被汽车占用(蓝点)或者是空的。汽车沿着给定的箭头以离散的时间步长移动恰好一个位置(如果目标位置为空)。因此,如果车辆不得不减速或停止,它甚至可以切换车道。

您可以通过使用每辆车的单独时间步(模拟更快/更慢的汽车)或许多其他方式来进一步改进它。

在您通过适当的数据结构定义道路(即位置及其后续位置)之后,此模型相对容易模拟,但已经显示出有趣的效果。

答案 1 :(得分:7)

  1. 忘记用户界面。
  2. 以基本形式表示每个对象 - 只在其中放置对象属性。例如,汽车将具有移动的尺寸和能力。但它没有逻辑可以让它移动。类似地,交通灯将具有诸如绿色,琥珀色和红色的状态。但它没有在这些状态之间切换的逻辑。类似的道路,车道等课程。
  3. 为驱动程序构建不同的类。这个类将包含所有方法,如车道变换,停止,转弯,前进等。从技术上讲,这将是你的“演员”,并将作用于veichle。一个类似的演员将用于交通灯控制,它将作用于红绿灯网络。使它成为一个接口并有两个实现 - 一个利用互连性和其他在静态时间运行的实现。
  4. 可选在此对象模型的顶部添加UI。不要花哨,开始有简单的点。一旦你完成所有简单的工作,添加更多花哨的功能应该是容易和无影响(相对)。
  5. 这将是一个非常具有挑战性的项目。

    但如果你的目标是概念证明,我有一个更简单的建议。您可以在这里生成用户,并获得模拟的所有复杂性和所有准确性。从15-20遥控车开始,虚构城镇的纸板模型,模拟交通灯的一些灯泡和一些知道如何驾驶。将预编程的开关序列写在纸上,并指定一些志愿者来控制这些灯。让另一组志愿者控制汽车。如果您有基本电子学方面的实践经验,您可以构建一个定时器控制电路来控制灯光。

    一切顺利!

答案 2 :(得分:2)

您可以在Javascript中尝试SIM.JS离散事件模拟库。他们有一个非常简单的道路交叉口模拟交通示例here

答案 3 :(得分:1)

哦,康纳,你确实找到了一个有趣的问题 - 即使在今天也是研究的主题。这里有一个建议:在你担心如何在JavaScript中做这件事之前,花点时间考虑一下如何去做。

这是一个建议:考虑首先调用的对象。你有汽车,他们沿着道路旅行。从一个正方形的道路网开始,所以你的车从十字路口到十字路口。

为汽车选择固定的速度,因此从交叉路口到交叉路口需要一段时间。

每个交叉路口都有一个红绿灯或红绿灯。如果它是红色的,当然汽车无法通过;他们不得不等待。

现在,您的基本程序将如下所示

time = 0
while time < end-time:
    for each car:
        update the car's location
    add time consumed to time

当您更新汽车位置时,会发生什么? (提示:汽车移动;是否可以通过十字路口?)

这会给你一个开始。

答案 4 :(得分:1)

在我的学士学位考试中,我开发了一个交通控制网络应用程序,实时跟踪我镇上的车辆,并使用谷歌地图api。 我建议您使用地图服务,例如maps.google.com,yahoo.maps.com ...
他们有一个api的一切......你可以使用标记来代表地图上的任何东西(汽车,路灯,甚至行人:)))你可以使用他们的api来计算距离和路径。
它可能看起来比平均div实现复杂一点,但是,相信我,使用组织良好的api服务是一大优势。
+它会有更专业的外观;)。