使用randomTrips脚本按概率生成指定路线失效问题求助
解决SUMO randomTrips脚本route概率不生效的问题
问题出在你同时使用了<flows>配置,且脚本默认生成的是<trip>元素而非引用预定义路线的<vehicle>元素:
<flows>会强制脚本生成自动路径规划的trip,这类trip不会读取你定义的<route>的probability/number属性,而是随机选择起点终点并自动计算路径。- 你定义的
<route>只有在生成引用它的vehicle时才会生效。
解决方案1:修改roucfg配置
移除<flows>,仅保留需要的路线并指定生成数量,同时禁用随机起点选择:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <routes> <!-- 只保留目标路线,设置生成数量为5 --> <route id="E01_E12" edges="E01 E12" number="5" /> <!-- 直接删除概率为0的路线,无需保留 --> </routes> <begin value="0"/> <end value="1"/> <o value="baselineRoute.rou.xml"/> <n value="baselineNet.net.xml"/> <!-- 禁用随机选点,强制使用预定义路线 --> <random value="false"/> </configuration>
解决方案2:直接使用命令行参数
如果不想修改配置文件,用命令行直接指定路线和数量更直观:
python randomTrips.py -n baselineNet.net.xml -o baselineRoute.rou.xml --route "E01 E12" --route-number 5 --begin 0 --end 1
验证效果
生成的路线文件会包含引用指定路线的<vehicle>元素,而非自动路径的<trip>,示例输出:
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd"> <route id="E01_E12" edges="E01 E12"/> <vehicle id="0" depart="0.00" route="E01_E12"/> <vehicle id="1" depart="0.00" route="E01_E12"/> <!-- 剩余3辆同路线的vehicle --> </routes>
内容的提问来源于stack exchange,提问作者Mouad
相关产品推荐
相关产品推荐

