Aimsun里的“宏观函数组件”

技术注解 #14

2016年3月
作者:Margarida Delgado

设想你的成本函数有几个组件,如距离、旅行时间或过路费。 如果你想单独评估它们,并将它们作为输出显示出来(除了总成本之外),你可以根据需要声明多个“宏观函数组件”,以便在执行任务时产生每个额外的输出。

你可以在与“成本”函数相同的文件夹中创建新的“宏观函数组件”。



函数字符串关键词

点击放大

有两种类型的组件:非衍生型和衍生型。

非衍生组件是基于对成本函数的一部分(子函数)的评估,它可以通过函数字符串检测出来。



函数字符串关键词 - Time (时间)
点击放大


也就是说,宏功函数组件编辑器将包含一个关键词,它必须与一个子函数的名称相对应(在所有宏观成本函数中:路段的”流量延误“函数,以及转弯的“转弯惩罚”和“路口延误”函数)。

例如,要定义“Distance (距离)(km)”和“Time (时间)(h)”的组件:在宏观函数组件中,分别设置函数字符串“Distance”和“Time”作为关键词。

现在,我们需要在所有的宏观成本函数中引入这些组件的定义(谨慎对待转弯,其默认的转弯惩罚是硬编码 (hard-coded) 的,所以它不包含任何组件),这样就可以在所有的路段和转弯处评估该组件。 在函数代码中,最后一个函数(在下图中,“def vdf”和“def tpf”)是主函数。 在它之前,我们已经定义了子函数“Distance”和”Time“,它们将在分配结束时被评估,并给出额外的输出列。



Aimsun宏观函数组件
点击放大

此外,我们还可以定义由其他组件组合而成的衍生组件。 例如,我们可以将速度定义为距离/时间。



Aimsun宏观函数组件
点击放大

衍生组件意味着在函数定义中没有额外的变化。
在执行分配时,将创建额外的列,包含每个组件的值。



Aimsun宏观函数组件 - 输出
点击放大

路径分配结果也包含宏观函数组件的结果。 非衍生组件是沿着路径添加的,而衍生组件是用非衍生路径值计算的(例如,如果我们把速度定义为衍生,我们就不添加沿路径的速度,而是计算总长度/总时间)。



Aimsun宏观函数组件 - 路径分配
点击放大

而且,每个组件还将提供”指标“和”输出“矩阵。



Aimsun宏观函数组件 - 输出矩阵
点击放大

  • 有问题吗? 请联系我们。

    我们在这里提供帮助!

  • 有问题吗? 请联系我们。

    我们在这里提供帮助!

分享