重新路由概率行为异常
Reroute with probability behaves strangely
我的网络有 2 个路口。所有汽车都从左侧开始,在第一个交叉路口,它们向底部行驶(概率 = 0.2)或向右行驶(概率 = 0.8)。这工作得很好。执行这些操作的代码如下 (hello.rou.xml):
<?xml version="1.0" encoding="UTF-8"?>
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">
<vType accel="1.0" decel="5.0" id="Car" length="5.0" minGap="2.0" maxSpeed="50.0" sigma="0" />
<flow id="type1" color="1,1,0" begin="0" end= "7200" period="3" type="Car">
<routeDistribution id="routedist1">
<route id="route0" edges="gneE7 gneE8" probability="0.2"/>
<route id="route1" edges="gneE7 gneE10" probability="0.8"/>
</routeDistribution>
</flow>
</routes>
所以我们有很多车来到了 gneE10 edge。我想指定此刻去 top/right/bottom 的概率。所以我用重新路由附加了额外的文件:
<?xml version="1.0" encoding="UTF-8"?>
<additional>
<routeDistribution id="reRouteE10">
<route id="routeX0" edges="gneE10 -gneE14" probability="0.34" /><!--UP-->
<route id="routeX1" edges="gneE10 gneE15" probability="0.33" /><!--STRAIGHT-->
<route id="routeX2" edges="gneE10 gneE12" probability="0.33" /><!-- DOWN -->
</routeDistribution>
<rerouter id="rerouterE10" edges="gneE10">
<interval begin="0" end="100000">
<routeProbReroute id="reRouteE10" />
</interval>
</rerouter>
</additional>
如果我们有像上面那样的概率,我总是有这样的行为:
每辆车都倒下了!为什么?老实说,很可能是因为代码排在最后。
我指定了一些不同的密度。
即使有非常大的数字 0.7 - 所有汽车仍然直行。 (它随 0.9 变化 - 然后全部上升)。
不确定是错误还是我误解了什么。完整代码可在 Github
重路由不以路由分布为参数。我同意这样做是合乎逻辑的,但 SUMO 的做法是:
<rerouter id="rerouterE10" edges="gneE10">
<interval begin="0" end="100000">
<routeProbReroute id="routeX0" probability="0.34" />
<routeProbReroute id="routeX1" probability="0.33" />
<routeProbReroute id="routeX2" probability="0.33" />
</interval>
</rerouter>
在您的示例中,sumo 在创建重新路由时从给定分布中绘制一条路线,然后始终使用这条路线。
我的网络有 2 个路口。所有汽车都从左侧开始,在第一个交叉路口,它们向底部行驶(概率 = 0.2)或向右行驶(概率 = 0.8)。这工作得很好。执行这些操作的代码如下 (hello.rou.xml):
<?xml version="1.0" encoding="UTF-8"?>
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">
<vType accel="1.0" decel="5.0" id="Car" length="5.0" minGap="2.0" maxSpeed="50.0" sigma="0" />
<flow id="type1" color="1,1,0" begin="0" end= "7200" period="3" type="Car">
<routeDistribution id="routedist1">
<route id="route0" edges="gneE7 gneE8" probability="0.2"/>
<route id="route1" edges="gneE7 gneE10" probability="0.8"/>
</routeDistribution>
</flow>
</routes>
所以我们有很多车来到了 gneE10 edge。我想指定此刻去 top/right/bottom 的概率。所以我用重新路由附加了额外的文件:
<?xml version="1.0" encoding="UTF-8"?>
<additional>
<routeDistribution id="reRouteE10">
<route id="routeX0" edges="gneE10 -gneE14" probability="0.34" /><!--UP-->
<route id="routeX1" edges="gneE10 gneE15" probability="0.33" /><!--STRAIGHT-->
<route id="routeX2" edges="gneE10 gneE12" probability="0.33" /><!-- DOWN -->
</routeDistribution>
<rerouter id="rerouterE10" edges="gneE10">
<interval begin="0" end="100000">
<routeProbReroute id="reRouteE10" />
</interval>
</rerouter>
</additional>
如果我们有像上面那样的概率,我总是有这样的行为:
每辆车都倒下了!为什么?老实说,很可能是因为代码排在最后。
我指定了一些不同的密度。
即使有非常大的数字 0.7 - 所有汽车仍然直行。 (它随 0.9 变化 - 然后全部上升)。
不确定是错误还是我误解了什么。完整代码可在 Github
重路由不以路由分布为参数。我同意这样做是合乎逻辑的,但 SUMO 的做法是:
<rerouter id="rerouterE10" edges="gneE10">
<interval begin="0" end="100000">
<routeProbReroute id="routeX0" probability="0.34" />
<routeProbReroute id="routeX1" probability="0.33" />
<routeProbReroute id="routeX2" probability="0.33" />
</interval>
</rerouter>
在您的示例中,sumo 在创建重新路由时从给定分布中绘制一条路线,然后始终使用这条路线。