许多SUMO包里的程序应用是命令行工具。只有SUMO-GUI不是。如果你不知道“命令行”是什么,那么建议你阅读基本计算机技巧页面。
以下内容介绍了SUMO匹配程序的一些特点。
SUMO应用程序是普通的应用程序。你只要在命令行中输入他们的名称就能运行他们。比如NETGENRATE被调用通过
netgenerate.exe
这样就启动了程序。因为并没有给它任何的参数,因此程序不知道该打印什么,智能输出它自己的信息:
SUMO netgenerate Version 0.27.1
Copyright (C) 2001-2015 DLR and contributors; http://sumo.dlr.de
License GPLv3+: GNU GPL Version 3 or later <http://gnu.org/licenses/gpl.html>
Use --help to get the list of options.
每个应用程序都有一组选项,该选项定义哪些文件应被处理或生成,或哪些定义了应用程序的行为。通常情况下,一个应用程序需要至少两个参数-一个输入文件和一个输出文件-但几乎总是更多的参数用于细粒度的控制(fine-grained control)。每个应用程序的选项都在应用程序的描述中描述。在下面描述了如何设置选项。
有两种选项:布尔选项,不需要一个参数,如果选项是存在的并设置为真的(但接受通常的布尔值,如“真”和“假”作为参数)和需要一个参数的选项。在命令行上设置一个参数,由两个部分组成:选项名称和选项的值。例如,如果一个人想要模拟加载特定的道路网络,“mynet.net.XML”,以下必须写:
--net mynet.net.xml
“--”在最前面,指示选项的常明诚紧跟其后。空格后是选项的值。也可以用“=”代替空白格。
--net=mynet.net.xml
很多时候可以缩写。比如—net可以缩写为-n,如:
-n mynet.net.xml
这个例子和前面两个例子一样效果(注意缩写后变成一个-)。并且注意并不是所有的缩写具有相同的意义。
SUMO程序知道哪一种类型的值是他们所期待的。比如,NETGENERATE允许设置默认的车道数,当然必须是整数。如果给它一个string类型或者其他的类型数据,程序就会报错。请注意浮点数的小数点是一个点(.)编码的。
一个比较特别的例子就是列表(lists),比如加载进行模拟的附加文件列表。当你给了多个文件,文件之间必须用逗号隔开。这个同样应用于其他的数值类型,比如整数或者浮点数。
因为选项列表可能会很长,配置文件被引入。您可以设置一个配置文件,其中包含运行应用程序的所有参数。此外,您必须只使用此配置文件启动应用程序。
配置文件是一个XML文件,有一个名为“configuration”的根元素。选项被写为元素名称,在属性value中存储值。命令行语句“—net-file test.net.xml”可以改写为
举例说明,配置文件(让我们保存为“test.sumocfg”)样式如下:
“input”部分只是文件目的,并没有功能意义。
一个比较简短但是同样功能的配置文件如下:
由SUMO程序执行调用,应该为:
sumo.exe -c test.sumocfg
使用选项“—configuration-file ”或者“-c”直接运行配置文件,在命令行中也可以直接省去“-c”:
sumo.exe test.sumocfg
根据目标应用程序,配置文件有不同的扩展。强烈建议遵守本公约。针对使用SUMO-GUI模拟配置的更是必须遵守,因为SUMO-GUI只能够读取命名为“*.sumocfg”模拟配置文件。
在页面 used file extensions中可以找到所有配置扩展的约定
除了配置文件,更多的命令行参数能够通过命令行赋值。如果一个参数设置在指定的配置文件中,以及在命令行上,命令行上的值可以使用。如果您想禁用配置文件中启用的布尔选项,您需要显式地在命令行上给出“错误”的值,就像--verbose false。
SUMO程序允许你生成配置文件模板。保存一个空的配置文件(配置文件模板)是允许的。可以通过命令:--save-template
还可以保存包含当前设置值的配置文件。一个应用程序可以强制使用选项来做这个 --save-configuration
最后但并非最不重要,可以生成一个XML模式(使用选项--save-schema
在任何情况下,如果要进一步的参数的信息,也可以通过选项--save-commented。然后,对每个参数产生一些进一步的信息。
SUMO程序共享几个选项。在下面会详细讲解。
Option |
Description |
-v |
切换到详细的输出。默认值:false |
--print-options |
在处理前打印选项值;默认值:false |
-? |
打印到屏幕。默认值:false |
-V |
打印当前版本;默认值:false |
-X |
设置XML输入的模式验证方案(“never”、“auto”或“always”);默认值:auto |
--xml-validation.net |
设置SUMO网络输入的模式验证方案(“never”、“auto”或“always”);默认值:never |
-W |
不输出警告;默认值:false |
-l |
将所有信息写入文件(意味着冗长) |
--message-log |
将所有非错误信息写入文件(意味着冗长) |
--error-log |
将所有错误信息写入文件 |
--log 和 --message-log选项能够详细的输出但是只能输出到给定的文件(除非 –verbose也被使用)。错误信息总是打印到控制台(除了一个可能的log文件)
XML validation 选项能使 XMLschema processing在XML分析器中运行。这进行了一个基本的输入验证,并强烈推荐,特别是对初学者,因为它很容易发现在输入中的拼写错误,否则可能会默默地忽略。如果在输入文件中声明XML模式,则只执行验证。只有当XML-schema在输入文件中明确时验证才会有作用。
这些选项配置了随机数字生成器的种子是如何生成的。相同的种子导致相同的序列产生的随机数。
默认情况下,种子是硬编码固定值( a hard-coded fixed value)。因此,只要配置选项设置为相同,那么重复的输出总会相同。为了改变这种状况,可是已使用如下选项:
Option |
Description |
--seed |
为随机数发生器设置一个特定的种子。通过使用不同的值,你可以有不同的,但仍然是可重复的模拟运行。 |
--random |
让SUMO选择一个随机数种子。如果可利用,种子将基于/dev/urandom否则种子将根据系统时间进行衍生。这个选项的优先级高于--seed |
几乎每个来自SUMO生成或者读取的文件都是用XML写的。在开始SUMO之前,你应该熟悉XML使用。SUMO允许你导入不同来源的文件不仅仅是SUMO本地文件(road network descriptions, route and/or demand descriptions,infrastructure descriptions, etc)。XML文件能够通过一般的文本编辑器进行编辑。然而,其他几个工具存在,并可以重复使用。
针对SUMO使用的几种文件类型,sxd(XML Schema Definition)文件存在。关于文件类型的问题请阅读页面(file extensions )。
在win系统上默认的XML阅读器是IE浏览器。它可用于验证你的XML文件。如果IE全部加载完成,那XML的语法应该是正确的。
Eclipse 允许书写XML文件作为一个给定的xsd (XML Schema Definition)。
有几个选项期望写入文件名称作为参数值。当在命令行中,给定的路径被假定为相对于当前工作目录。当在配置文件中时,文件路径被假定为相对于配置文件的路径。绝对路径当然也是可以的。
通常,同名的现有文件被覆盖没有警告。输出文件的目录必须存在。
除了写文件,进一步:
1、写进空设备(不输出):使用“NUL”或“/dev/null”为文件名(包括符号工作平台无关)
2、写入一个套接字socket:使用“
3、写stdout(命令行打印):使用“stdout”或“-”为文件名
4、写stderr:使用“stderr”作为文件名
5、将文件名中的“TIME”替换为程序的启动时间。
At themoment it is not possible to read input from sockets or from stdin.
目前,从socket或者stdin中读取输入是不可能的。
NOTE:多样数据源允许有相同的输出文件。
很多SUMO工具类程序(在安装包/tools文件夹中)是由python编程语言编写。为了使用它们,python2.7必须安装到你的电脑上。
然后确保SUMO环境变量设置正确。最简单的方法是直接打开命令行工具,通过start-command-line.bat.
然后,你需要确保电脑知道去哪里寻找python tools,当然最简单的方法就是直接使用全路径,但是比较玛法。你也可以把工具包加入到path路径。(环境变量设置)