【问题标题】:How to dynamically change the road capacity of a road如何动态改变道路的通行能力
【发布时间】:2019-07-16 22:08:00
【问题描述】:

我画了一个路网,需要在模型运行的过程中动态改变一条路的通行能力。例如,一条道路第一分钟的容量是 1000 v/h,第二分钟的容量是 500 v/h。

【问题讨论】:

  • 容量是什么意思?每小时到达的车辆数量?或适合道路的车辆数量?为什么道路的容量会发生变化?
  • 道路容量在道路交通库(车道、长度、汽车距离)中隐含定义,在 AGV 的路径网络中明确定义(例如,在给定时间,一个路径元素最多 10 个 AGV)而对于正常的路径网络来说根本不是。吞吐量不能通过这种方式明确定义。也许更抽象的方法可以做到这一点,例如使用服务流程或系统动力学。
  • 感谢您的回复。请原谅我是新手技术人员。我想要做的是流量在前一段时间运行正常。突然,道路上发生事故,交通容量减少。但是我不知道 AnyLogic 是如何模拟这种情况的。

标签: anylogic


【解决方案1】:

此解决方案不使用停止线,并且可以在任意时刻让事故发生在您想要的任何地方。

首先在源代码中,我将汽车人口添加到汽车人口(请记住让您的人口开始 EMPTY... 默认为 100,您必须更改默认值):

你有一个普通的 carMoveTo 并且有一个事件、一个按钮或任何你想要的东西,你可以通过将汽车的速度更改为零来定义事故......所以在 15 秒后的事件中,我创造了事故像这样:

Car car=cars.random(); //I choose a random car to be accidented
car.setPreferredSpeed(0,KPH); //speed to 0 kph making it stop
create_MyDynamicEvent(30,SECOND,car); //this will fix the accident in 30 seconds

动态事件代码如下:

【讨论】:

  • 绝对更灵活,更好的解决方案!
  • 这对我很有帮助,非常感谢(^-^)
【解决方案2】:

你可以像这样模拟这种情况:

在单独的 Source 和流程流(较低的)中创建汽车,其中 carMoveTo 块的目标不是真正的目标,而是它将“分解”的位置,此处标记为 stopLine,在那里你可以看到停着的红色汽车。其他汽车现在将自动绕过障碍物,有些将不得不移动车道。这会隐式降低您的吞吐量。

在这个例子中,breakDown(延迟)块定义了汽车被破坏/阻塞道路的时间,之后它再次被释放并像所有其他人一样离开道路。

【讨论】:

  • 非常感谢你的回复,弗洛里安(^-^)
猜你喜欢
  • 2019-08-16
  • 2011-09-29
  • 2016-09-25
  • 1970-01-01
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
相关资源
最近更新 更多