Netlogo Api 控制器 - 获取表视图

我正在使用 Netlogo Api 控制器和 spring boot 这是我的代码(我从这个链接得到它)

HeadlessWorkspace workspace = HeadlessWorkspace.newInstance();

        try {

             workspace.open("models/Residential_Solar_PV_Adoption.nlogo",true);


             workspace.command("set number-of-residences 900");

             workspace.command("set %-similar-wanted 7");

             workspace.command("set count-years-simulated 14");

             workspace.command("set number-of-residences 500");

             workspace.command("set carbon-tax 13.7");

             workspace.command("setup");

             workspace.command("repeat 10 [ go ]");

             workspace.command("reset-ticks");

             workspace.dispose();


             workspace.dispose();

        }

        catch(Exception ex) {

                  ex.printStackTrace();

        }

我在控制台中得到了这个结果:

https://img1.sycdn.imooc.com/6528ac440001bb9c03260524.jpg

但我想获取表视图并保存到数据库。我可以使用哪个命令来获取表视图?

表格视图:

https://img1.sycdn.imooc.com/6528ac510001625306520583.jpg

有什么帮助吗?



幕布斯7119047
浏览 94回答 1
1回答

慕婉清6462132

如果您能澄清为什么要尝试以这种方式生成数据,我或其他人可能能够提供更好的建议。没有单一的 NetLogo 命令或 NetLogo API 方法来生成该表,您必须使用BehaviorSpace 来获取它。以下是一些选项,按从最简单到最难的粗略顺序列出。选项1如果可能的话,我建议只从命令行运行BehaviorSpace 实验来生成表。这将为您提供与您正在寻找的完全相同的输出。如有必要,您可以从 Java 程序中的命令行运行 NetLogo headless,只需查找从 Java 调用外部程序的资源,也许可以使用ProcessBuilder.如果您在 Java 中运行,以便以无法在程序中执行的方式设置和更改BehaviorSpace 实验的参数,则可以改为在 Java 中生成实验 XML 文件,以在命令行中传递给 NetLogo。选项2您可以使用模型中的 CSV 扩展重新创建表的内容,并添加更多命令来生成数据。这不会创建完全相同的表,但它会以计算机和人类可读的格式输出数据。在纯 NetLogo 代码中,您需要如下所示的内容。setup请注意,您可以通过在运行之前或go在 Java 代码中运行其他预实验命令来控制更多行为(例如文件名或所需变量) 。您还可以使用控制 API 从 Java 运行特定于 CSV 的文件代码,并保持模型不变,但您需要编写自己的原语 NetLogo 代码版本csv:to-row。globals [  ;; your model globals here  output-variables]to setup  clear-all  ;;; your model setup code here  file-open "my-output.csv"  ; the given variables should be valid reporters for the NetLogo model  set output-variables [ "ticks" "current-price" "number-of-residences" "count-years-simulated" "solar-PV-cost" "%-lows" "k" ]  file-print csv:to-row output-variables  reset-ticksendto go  ;;; the rest of your model code here  file-print csv:to-row map [ v -> runresult v ] output-variables  file-flush  tickend选项3如果您确实需要准确地重现BehaviorSpace 表导出,您可以尝试直接从Java 运行BehaviorSpace 实验。正如您所看到的,它与类绑定在一起LabProtocol,这意味着您必须通过BehaviorSpace设置和运行模型,而不是像在您的代码中那样逐步使用工作区。示例代码。一个很好的例子就是objectMain.scala,它从预期的命令行参数中提取一些实验设置,然后将它们与方法一起使用来lab.run()运行BehaviorSpace实验并生成输出。这是 Scala 代码而不是 Java,但希望翻译起来不会太难。您同样必须设置一个org.nlogo.nvm.LabInterface.Settings实例并将其传递给 aHeadlessWorkspace.newLab.run()才能使事情顺利进行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java