
Checking Real Data Sets for Consistency
Mohammad Saifuzzaman shows how the Aimsun Real Data Set Checker makes it quicker and easier to create clean datasets and examines some different use cases.
2015年1月
想象一下,你已经运行了一个动态仿真(中观、微观或混合),为你提供准确的公共交通车辆行驶时间,其中考虑到了拥堵、专用车道、信号灯和公共交通优先算法。 在宏观的公共交通分配中,利用这些信息对站与站之间的旅行时间进行更准确的估计不是很好吗?
多亏了Aimsun提供的综合建模环境,这才得以实现。 你只需编写一个公共交通延迟函数,从动态仿真产生的时间序列中读取公交车行驶时间。
公共交通分配
例子:
costCol = None def pdf( context, line, ptsection ): global costCol if costCol == None: model = ptsection.getModel() vehicleType = model.getType("GKVehicle") vehicleId = model.getCatalog().findByName("Bus", vehicleType).getId() costCol = model.getColumn("DYNAMIC::SRC_GKSection_travelTime_%i" % vehicleId) res = 0.0 fromStop = ptsection.getMaster().getOrigin() if fromStop != None: sectionLength = fromSection.length2D() fromSection = fromStop.getSection() fromFraction = (sectionLength - fromStop.getPosition()) / sectionLength else: fromSection = None toStop = ptsection.getMaster().getDestination() if toStop != None: toSection = toStop.getSection() toFraction = toStop.getPosition() / toSection.length2D() else: toSection = None for section in ptsection.getMaster().getRoute(): fraction = 1.0 if fromSection != None and section.getId() == fromSection.getId(): fraction = fromFraction elif toSection != None and section.getId() == toSection.getId(): fraction = toFraction ts = section.getDataValueTS(costCol) if ts != None: res += ts.getAggregatedValue()/60 * fraction if res == 0.0: print "No dynamic cost for PT Section %i" % ptsection.getId() res = 60.0 * ptsection.getDistance()/1000.0 / 20.0 #km/h return res
该函数从路段中读取公交车辆类型的最后一次仿真行驶时间,由于公交分配的成本是针对公交路段表示的,即针对站与站之间的区段,它把站与站之间的所有路段加起来,根据站点的位置,计算出第一和最后一个部分路段。
这种方法的一个重要应用是估计对公共交通系统的运行变化对交通分布和出行模式划分的影响,例如沿走廊引入信号优先和专用车道。
Mohammad Saifuzzaman shows how the Aimsun Real Data Set Checker makes it quicker and easier to create clean datasets and examines some different use cases.
2015年7月:Dimitris Triantafyllos讨论了Aimsun API如何让研究中心致力于了解探针车辆数据的创新用途、可用的应用程序、可视化、性能测量和管理技术。