我将在接下来的几个月里提出很多问题。对于我的九年级科学博览会项目,我想创建一个交通模拟器,以测试互连的交通信号灯是否可以增加交通流量。我有几个通用的问题需要帮助......
我不是在寻找具体的代码,只是很好的指针和资源来帮助我入门。任何帮助表示赞赏,C.Ruhl。
PS我只是在高中,所以没有高级数学符号请:)
答案 0 :(得分:7)
经常采用的一种可能方法是使用离散模型来处理道路和汽车的位置。
道路上的每个位置都可以被汽车占用(蓝点)或者是空的。汽车沿着给定的箭头以离散的时间步长移动恰好一个位置(如果目标位置为空)。因此,如果车辆不得不减速或停止,它甚至可以切换车道。
您可以通过使用每辆车的单独时间步(模拟更快/更慢的汽车)或许多其他方式来进一步改进它。
在您通过适当的数据结构定义道路(即位置及其后续位置)之后,此模型相对容易模拟,但已经显示出有趣的效果。
答案 1 :(得分:7)
这将是一个非常具有挑战性的项目。
但如果你的目标是概念证明,我有一个更简单的建议。您可以在这里生成用户,并获得模拟的所有复杂性和所有准确性。从15-20遥控车开始,虚构城镇的纸板模型,模拟交通灯的一些灯泡和一些知道如何驾驶。将预编程的开关序列写在纸上,并指定一些志愿者来控制这些灯。让另一组志愿者控制汽车。如果您有基本电子学方面的实践经验,您可以构建一个定时器控制电路来控制灯光。
一切顺利!
答案 2 :(得分:2)
答案 3 :(得分:1)
这是一个建议:考虑首先调用的对象。你有汽车,他们沿着道路旅行。从一个正方形的道路网开始,所以你的车从十字路口到十字路口。
为汽车选择固定的速度,因此从交叉路口到交叉路口需要一段时间。
每个交叉路口都有一个红绿灯或红绿灯。如果它是红色的,当然汽车无法通过;他们不得不等待。
现在,您的基本程序将如下所示
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服务是一大优势。
+它会有更专业的外观;)。