物流

物流的概念主要通过集装箱集装箱停靠点来实现。

集装箱停靠点#

集装箱停靠点可用于模拟转运站、港口以及其他集装箱/货物转运和存储的地点。 与公交站点的概念类似,集装箱停靠点是停靠点的一种,车辆在此处可以进行集装箱的装载或卸载。 车辆在集装箱停靠点的接近行为与在公交站点使用相同的高级逻辑。 在 SUMO 中,集装箱停靠点位置的定义格式如下:

<additional>
    <containerStop id="<CONTAINER_STOP_ID>" lane="<LANE_ID>" startPos="<STARTING_POSITION>" endPos="<ENDING_POSITION>" [line="<LINE_ID>[ <LINE_ID>]*"]/>
    ...
</additional>

这意味着集装箱停靠点是车道上的一个区域。 各参数含义如下:

属性名称 值类型 值范围 默认值 描述
id 字符串 id 集装箱停靠点的名称;必须唯一
lane 字符串 有效的车道 id 集装箱停靠点所在的车道名称
startPos 浮点数 -lane.length < x < lane.length (负值表示从车道末端向后计算) 0 车道上的起始位置(车道上较低的位置),单位为米
endPos 浮点数 -lane.length < x < lane.length (负值表示从车道末端向后计算) lane.length 车道上的结束位置(车道上较高的位置),单位为米,必须比 startPos 大 0.1m 以上
friendlyPos 布尔值 true,false false 是否自动修正无效的停靠位置(默认 false
name 字符串 简单字符串 集装箱停靠点名称。仅用于可视化目的。
color 颜色 参见颜色定义 "83,89,172" 集装箱停靠点颜色。仅用于可视化目的。
lines 字符串列表 由空格 (' ') 分隔的名称列表 预期停靠此集装箱停靠点的物流线路名称列表。仅用于可视化目的。
angle 浮点数 (度) 集装箱绘制的角度。仅用于可视化目的。

Caution

请注意,必须通过 --additional-files 参数将集装箱停靠点添加到配置中。

必须告知车辆它们必须在集装箱停靠点停车。以下示例展示了如何执行此操作:

<vtype id="truck" accel="2.6" decel="4.5" sigma="0.5" length="15" maxspeed="70" color="1,1,0"/>
<vehicle id="0" type="truck" depart="0" color="1,1,0">
    <route edges="2/0to2/1 2/1to1/1 1/1to1/2 1/2to0/2 0/2to0/1 0/1to0/0 0/0to1/0 1/0to2/0 2/0to2/1"/>
    <stop containerStop="containerStop1" duration="20"/>
    <stop containerStop="containerStop2" duration="20"/>
    <stop containerStop="containerStop3" duration="20"/>
    <stop containerStop="containerStop4" duration="20"/>
</vehicle>

这里定义了一个名为 "0" 的 "truck" 类型车辆。"truck" 是之前声明的引用类型。该车辆有一个内嵌的路线(在此为手动编写)和一个停靠点列表。每个停靠点由两个属性描述:"containerStop" 和 "duration",其中 "containerStop" 是车辆应停靠的集装箱停靠点的名称,"duration" 是车辆在集装箱停靠点等待的时间(秒)。请注意,车辆应停靠的集装箱停靠点的顺序必须正确。

您也可以让车辆停靠在集装箱停靠点以外的位置。车辆停靠的简短定义如下:

<stop [containerStop="<CONTAINER_STOP_ID>" | ( lane="<LANE_ID>" endPos="<POSITION_AT_LANE>" )] duration="<HALTING_DURATION>"/>

这意味着您可以使用集装箱停靠点或车道位置来定义车辆必须停靠的位置。有关车辆 "stop" 元素属性的完整列表,请参见 Specification#Stops

访问车道#

每个 containerStop 可以有额外的子元素,用于模拟从网络其他部分的访问(例如,通往铁路网络上停靠点的道路访问)。形式如下:

<containerStop id="myStop" lane="A_0" startPos="230" endPos="250">
   <access lane="B_0" pos="150"/>
</containerStop>

等待集装箱的间距#

等待集装箱之间的间距默认为 2.5。这适用于宽度为 2.44m 的标准海运集装箱并排堆叠的情况。 当集装箱以不同角度堆叠时,必须增加沿停靠点的距离。这可以通过参数完成:

<containerStop id="ct_5" angle="0" lane="324040749#0_0" startPos="0.00" endPos="630.00">
        <param key="waitingWidth" value="13"/>
        <param key="waitingDepth" value="2.44"/>
 </containerStop>

挂车和轨道车辆#

通过在装载/卸载时动态改变车辆的长度,可以使用集装箱来模拟挂车和编组/转辙。 这是通过设置通用参数 <param key="device.container.loadedType" value="TYPE_ID"/> 来实现的。

必须定义 id="TYPE_ID"<vType>,模拟将使用其以下值:

  • containerCapacity
  • length
  • mass
  • vClass
  • guiShape
  • 参数键 'locomotiveLength'
  • 参数键 'carriageLength'
  • 参数键 'carriageGap'

每当由于装载/卸载导致集装箱数量发生变化时,连接的轨道车辆/挂车数量将计算为 ceil(containerNumber / containerCapacity)。 然后,masslength 将乘以连接单元的数量,并添加到车辆原始类型的长度和质量中。 vClassguiShape 和可视化参数也将应用于车辆,直到 containerNumber 再次降至零。

如果由于装载/卸载导致 vClass 发生变化,车辆将根据网络中的当前行程时间重新计算其路线。这可用于模拟所需转弯半径的变化,方法是禁止加载类型 TYPE_IDvClass 的某些连接,但允许车辆原始(空载)类型的连接。