The ONE 命令行cmd 运行: ./one.bat [-b runcount] [conf-files]
-
不带任何参数(./one.bat)
使用默认配置文件(default_settings.txt),图形窗口运行一次 -
带参数(./one.bat [-b runcount] )
-b 表示批量运行,runcount表示运行次数,使用默认配置文件 如果配置文件中变量是不变的,则生成的报告文件会复写。 -
带参数(./one.bat [-b runcount] [conf-files] ) conf-files 表示自定义配置文件,针对相同的值设定,会覆盖默认配置文件default_settings.txt中设定的值。结合批量运行可以一次运行得到想要的对比。
例如可以设定Group.route为: Group.router
=[EpidemicRouter;DirectDeliveryRouter;FirstContactRouter;SprayAndWaitRouter;ProphetRouter]
就可以考量在其他条件不变的情况下,不同路由方法的性能差异 -
运行中遇到的疑问:自定义了配置文件,想通过设定变量一次运行多个对比。 例如设定路由方法、缓存大小、网络规模(节点个数)等。但在运行中发现,路由方法、缓存大小可以一次性设定,运行可以出正确数目的报告文件;但网络规模出现了问题,因为后边设定消息产生模式时,消息产生节点牵涉到节点编号,这样节点数目在一次运行中只能使用一个数值,否则运行会因为找不到相应的节点而报错。不知道自己这样的理解是不是正确?有同样研究的可以讨论。
又遇到了新的问题:尝试运行的时候设置无线缓冲区,查找资料,提供的解决方式是:因为程序中有对buffersize的初始化(一个很大的值),所以只需要在配置文件中将对buffersize的赋值部分删除或注释掉。但在运行时,提示找不到关于Group.bufferSize的设置,不知道原因是什么,所以还是采用设置成一个很大值的方法更靠谱。 -
运行ProphetRouter遇到的问题:报错如下
Running simulation ‘default_scenario-ProphetRouter’ Exception in thread “main” java.lang.IllegalArgumentException: Comparison method
violates its general contract!
at java.util.TimSort.mergeHi(Unknown Source)
at java.util.TimSort.mergeAt(Unknown Source)
at java.util.TimSort.mergeForceCollapse(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.ArrayList.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at routing.ProphetRouter.tryOtherMessages(ProphetRouter.java:241)
at routing.ProphetRouter.update(ProphetRouter.java:201)
at core.DTNHost.update(DTNHost.java:330)
at core.World.updateHosts(World.java:217)
at core.World.update(World.java:186)
at ui.DTNSimTextUI.runSim(DTNSimTextUI.java:29)
at ui.DTNSimUI.start(DTNSimUI.java:77)
at core.DTNSim.main(DTNSim.java:85) 去查找了一下,说是因为高版本的jdk和低版本jdk对于Comparable接口的实现不同,导致抛出异常。提供两种解决方法:
1、在主函数,即main函数中加入一行代码:System.setProperty(“java.util.Arrays.useLegacyMergeSort”, “true”);
2、设置JVM参数-Djava.util.Arrays.useLegacyMergeSort=true来兼容JDK6的代码。
我是通过第一种方法解决的,第二种方法不知道如何操作,感兴趣的可以参考操作
有疑问的地方:在前边的运行中并没有出现ProphetRouter抛异常的情况,不知道为什么突然就出现问题了,难道这个还是概率性的?