城市交通模拟(一):SUMO基础知识/使用命令行应用程序

SUMO软件包中的大多数应用程序都是命令行工具。当前,只有sumo-guinetedit没有。如果您不知道“命令行”是什么,我们将为您提供有关基本计算机技能的页面。

下面介绍了SUMO-suite应用程序的一些特性。

从命令行使用SUMO应用程序

SUMO应用程序是纯可执行文件。您只需从命令行输入它们的名称来启动它们;例如 netgenerate

netgenerate.exe

在Windows和

netgenerate

在Linux下。

这只是启动应用程序(在这种情况下为netgenerate)。由于未提供任何参数,因此应用程序不知道该怎么办,而仅输出有关其自身的信息:

Eclipse SUMO netgenerate Version 1.6.0
 Build features: Linux-4.1.39-56-default Proj GDAL GUI
 Copyright (C) 2001-2020 German Aerospace Center (DLR) and others; https://sumo.dlr.de
 License EPL-2.0: Eclipse Public License Version 2 <https://eclipse.org/legal/epl-v20.html>
 Use --help to get the list of options.

选件

每个应用程序都有一组选项,这些选项定义应处理或生成的文件,或者定义应用程序的行为。通常,应用程序至少需要两个参数-一个输入文件和一个输出文件-但几乎总是有更多的参数用于细粒度控制。每个应用程序的选项都在应用程序的描述中进行了描述。在下文中,描述了如何设置选项。

在命令行上设置选项

有两种类型的选项:布尔型选项,不需要参数,如果存在选项,则设置为true(但是接受通常的布尔型值,例如“ true”和“ false”作为参数);以及选项,需要参数。在命令行上使用参数设置选项包括两部分-选项名称和选项的值。例如,如果希望模拟加载某个公路网“ mynet.net.xml”,则必须编写以下内容:

--net mynet.net.xml

在这种情况下,前面的'-'表示该选项的长名称紧随其后(“ net”)。在空格之后,必须给出选项的值。也可以使用'='代替空格:

--net=mynet.net.xml

一些常用的选项可以缩写。--net-option的缩写 是-n。以下与上面的两个示例具有相同的效果:

-n mynet.net.xml

请注意,缩写用单个“-”表示。

注意

并非所有缩写都在SUMO套件的应用程序中具有相同的含义。

期权价值类型

SUMO应用程序知道希望设置什么样的值。例如,netgenerate允许您设置默认的通道数,当然,该数量必须是整数值。在这种情况下,将给出字符串或其他内容,这将被识别,并且应用程序将在启动时给出错误消息。请注意,浮点数中的小数点使用点(“。”)进行编码。

值类型的一种特殊情况是列表,例如要加载到模拟中的其他文件的列表。提供多个文件时,必须使用“,”将文件分开。这也计入其他值类型的列表,如整数或浮点数。

配置文件

由于选项列表可能会很长,因此引入了配置文件。您可以设置一个配置文件,其中包含要用来启动应用程序的所有参数。此外,您仅需使用此配置文件来启动应用程序。

配置文件是具有名为的根元素的XML文件 configuration。选项被写为元素名称,所需值存储在属性 value(或v)中。命令行上提供的--net-file * test.net.xml * 选项将成为 <net-file value="test.net.xml"/>配置文件内的内容。对于布尔选项,对于激活,该值应为“ true”,“ on”,“ yes”,“ 1”或“ x”,对于激活为“ false”,“ off”,“ no”或“ 0”停用该选项(此处大小写无关紧要)。

对于上面的示例,配置文件(如下所示,将其保存在“ test.sumocfg”下)如下所示:

<configuration>
    <input>
        <net-file value="test.net.xml"/>
        <route-files value="test.rou.xml"/>
        <additional-files value="test.add.xml"/>
    </input>
</configuration>

input上面给出的部分仅具有文档目的,而没有功能含义。

不太冗长但等效的版本如下所示:

<configuration>
    <n v="test.net.xml"/>
    <r v="test.rou.xml"/>
    <a v="test.add.xml"/>
</configuration>

根据相扑执行调用(同时使用两个配置版本)将是:

sumo.exe -c test.sumocfg

这意味着我们仅使用选项**--configuration-file <FILE>-c **<FILE>给出配置文件的名称,而不是参数。如果您不想在命令行上提供其他选项,则也可以省略“ -c”:

sumo.exe test.sumocfg

配置文件的命名约定

根据目标应用程序,配置文件具有不同的扩展名。强烈建议您遵循此约定。为了在sumo-gui中使用仿真配置, 甚至需 要这样做-sumo -gui只能读取名为“ * .sumocfg”的仿真配置。

可在使用的文件扩展名的页面上找到配置扩展名的所有约定 。

配置文件与命令行参数

除配置文件外,还可以在命令行上提供其他命令行参数。如果在命名的配置文件中以及在命令行中给定的参数被设置,则使用命令行中给定的值(覆盖配置文件中的一个)。如果要禁用在配置文件中启用的布尔选项,则需要在命令行上显式提供“ false”值,例如--verbose false

生成配置文件,模板和方案

SUMO软件包的应用程序允许您生成配置文件模板。可以保存一个空配置-配置模板。这可以通过使用**--save-template **<FILE>来完成。在这种情况下,配置将仅包含填充有其默认值的参数。

也可以保存包含当前设置值的配置文件。使用选项**--save-configuration **<FILE>可以强制应用程序执行此操作。

最后但并非最不重要的一点是,可以生成XML模式(使用选项**--save-schema **<FILE>)来验证配置文件。对于SUMO应用程序,此架构应等效于https://sumo.dlr.de/xsd/sumoConfiguration.xsd上的架构 (分别适用于其他可执行文件)。请注意,该模式比SUMO选项解析器更为严格,因为它仅验证上面给出的详细版本。

无论哪种情况,如果都需要有关参数的更多信息,则还可以传递--save-commented选项。然后,生成有关每个参数的一些其他注释。

配置文件中的环境变量

可以在配置文件中引用环境变量。引用环境变量的语法为$ {VARNAME}。例如,您的配置文件可能引用名为NETFILENAME的变量,其中包含网络文件的名称以及以下配置设置。

<configuration >
    <input>
        <net-file value="${NETFILENAME}.net.xml"/>
    </input>
</configuration>

常用选项

SUMO套件中的应用程序共享多个选项。它们在下面给出。

报告选项

选项 描述
**-v **<BOOL>
**--verbose **<BOOL> 切换到详细输出;默认值:false**
**--print-options **<书本> 在处理之前打印选项值;默认值:false**
-? <BOOL>
**--help **<BOOL> 打印此屏幕;默认值:false**
**-V **<BOOL>
**--version **<BOOL> 打印当前版本;默认值:false**
**-X **<STRING>
--xml验证 <STRING> 设置XML输入的模式验证方案(“从不”,“自动”或“始终”);默认值:自动**
**--xml-validation.net **<STRING> 设置SUMO网络输入的模式验证方案(“从不”,“自动”或“始终”);默认值:从不**
**-W **<BOOL>
**--no-warnings **<BOOL> 禁用警告输出;默认值:false**
**-l **<文件>
**--log **<文件> 将所有消息写入FILE(表示冗长)
**--message-log **<文件> 将所有非错误消息写入FILE(表示冗长)
**--error-log **<文件> 将所有警告和错误写入FILE

日志选项--log--message-log也启用详细输出,但仅输出到给定的文件中(除非也提供了--verbose)。错误始终会打印到控制台(除了可能的日志文件)。

XML验证选项使XML模式处理 XML分析器。这将对输入内容进行基本验证,因此强烈建议特别为初学者使用,因为它很容易在输入内容中发现拼写错误,否则可能会被忽略。仅当在输入文件中声明XML模式时,才执行验证。

随机数选项

这些选项配置如何确定随机数生成器的种子。相同的种子导致相同的生成随机数序列。

默认情况下,种子是硬编码的固定值。因此,只要所有配置设置保持相同,重复模拟运行的输出将相同。要更改此设置,请使用以下选项之一。

选项 描述
--seed <整数> 为随机数生成器设置特定的种子。通过使用不同的值,您可以进行不同但仍可重现的模拟运行。
- 随机 让SUMO选择种子。如果可用,则种子将基于/ dev / urandom的输出,否则种子将从当前系统时间得出。此选项优先于**--seed **<INT>选项。

注意:-- random优先于--seed <INT>意味着无法在配置文件中 设置--random并在命令行中使用**--seed **<INT>覆盖它。将来可能有解决方案。

生成和读取文件

从SUMO包读取或生成的工具中几乎每个文件都是用XML编写的。在开始使用SUMO之前,您应该熟悉 XML。SUMO允许您从不同来源导入文件,但是“本地” SUMO文件-道路网络描述,路线和/或需求描述,基础结构描述等-是SUMO特定的,不遵循任何标准。可以使用简单的文本编辑器来读取和写入XML文件,我们通常这样做。但是,还存在其他几种工具,并且可以重复使用。

对于SUMO使用的某些文件类型,存在xsd(XML模式定义)。请查阅文件扩展名页面以获取描述的文件格式列表。

使用XML的提示

  • Windows上XML文件的默认查看器是Internet Explorer。它可以用于验证XML文件。如果Internet Explorer可以完全加载XML文件的语法,则该语法应有效。
  • Eclipse允许遵循给定的xsd(XML模式定义)来编写XML文档。

写文件

有几个选项希望将文件名(<FILE>)作为参数写入。在命令行中给出时,假定给定路径是相对于当前工作目录的。当在配置文件中给出文件路径时,假定该文件路径相对于配置文件的路径。当然也可以使用绝对路径。

通常,具有相同名称的现有文件会被覆盖而不会发出警告。该目录必须存在,应在其中写入输出文件。

除了写入文件之外,其他特殊符号还允许:

  • 写入空设备(根本没有输出):使用“ NUL”或“ / dev / null”作为文件名(两种表示法均与平台无关)
  • 写入套接字:使用“ <HOST>:<PORT>”作为文件名
  • 写入标准输出(在命令行上打印):使用“ stdout”或“-”作为文件名
  • 写入stderr:使用“ stderr”作为文件名
  • 文件名中的特殊字符串“ TIME”将替换为应用程序的开始时间

目前,无法从套接字或stdin读取输入。

作为修改输出文件名的简单方法,提供了**--output-prefix **<STRING>选项。给定的字符串将放在应用程序编写的所有文件之前。

注意

允许多个日期源(即检测器定义)写入同一输出文件。

从命令行使用Python工具

SUMO分发的许多工具(在 <SUMO_HOME> / tools文件夹中)都是用python 编程语言编写的。要使用它们,必须在计算机安装python 2.7

然后,您需要确保设置了环境变量SUMO_HOME。最简单的方法是使用start-command-line.bat打开命令行窗口 。

此外,您需要确保您的计算机知道在哪里可以找到python工具。最简单(但有点麻烦)的方法是使用完整路径运行该工具:

C:\Users\yourname>D:\path_to_sumo\tools\randomTrips.py  ... arguments ...

或者,您可以将工具所在的目录添加到 PATH-Variable

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342