java - Netlogo Api Controller - 获取 TableView

标签 java api spring-boot controller netlogo

我正在使用 Netlogo Api Controller 和 spring boot 这是我的代码(我从 link 得到的)

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();
        }

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

enter image description here

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

表格 View :

enter image description here

有什么帮助吗?

最佳答案

如果您能弄清楚为什么要尝试以这种方式生成数据,我或其他人可能会给出更好的建议。

没有单独的 NetLogo 命令或 NetLogo API 方法来生成该表,您必须使用 BehaviorSpace 来获取它。以下是一些选项,按照从最简单到最难的粗略顺序列出。

选项 1

如果可能,我建议您只从命令行运行 BehaviorSpace 实验来生成您的表格。这将为您提供与您正在寻找的完全相同的输出。您可以在 the NetLogo manual's BehaviorSpace guide 中找到有关如何执行此操作的信息。 .如有必要,您可以从 Java 程序中的命令行 headless 运行 NetLogo,只需查找有关从 Java 调用外部程序的资源,也许使用 ProcessBuilder

如果您在 Java 中运行以设置和更改您的 BehaviorSpace 实验的参数,而您无法在该程序中执行此操作,您可以改为在 Java 中生成实验 XML 文件以传递给 NetLogo命令行。参见 the docs on the XML format .

选项 2

您可以在模型中使用 CSV 扩展重新创建表格的内容,并添加更多命令来生成数据。这不会创建完全相同的表格,但会以计算机和人类可读的格式输出数据。

在纯 NetLogo 代码中,您需要如下所示的内容。请注意,在 Java 代码中运行 setupgo 之前,您可以通过运行其他预实验命令来控制更多行为(如文件名或所需变量)。您还可以使用控制 API 从 Java 运行特定于 CSV 的文件代码并保持模型不变,但是您需要编写自己的 csv:to-row 原语的 NetLogo 代码版本。

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-ticks
end

to go
  ;;; the rest of your model code here

  file-print csv:to-row map [ v -> runresult v ] output-variables
  file-flush
  tick
end

选项 3

如果您确实需要准确地重现 BehaviorSpace 表导出,您可以尝试直接从 Java 运行 BehaviorSpace 实验。表生成by this code但如您所见,它与 LabProtocol 类相关联,这意味着您必须通过 BehaviorSpace 设置和运行模型,而不是像在您的示例代码。

一个很好的例子可能是 the Main.scala object ,它从预期的命令行参数中提取一些实验设置,然后将它们与 lab.run() 方法一起使用以运行 BehaviorSpace 实验并生成输出。那是 Scala 代码而不是 Java,但希望它不会太难翻译。同样,您必须设置一个 org.nlogo.nvm.LabInterface.Settings 实例并将其传递给 HeadlessWorkspace.newLab.run() 以使事情顺利进行。

关于java - Netlogo Api Controller - 获取 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58317724/

相关文章:

java - 原型(prototype)是反模式吗?

java - 修剪在 mongodb java 驱动程序中保存为值的字符串的双引号

json - Node.js 请求 GET 返回原始数据而不是 JSON

c++ - 获取已安装的应用程序列表

java - org.languagetool 包不存在

java - Spring cloud Netflix-Hystrix gradle 依赖项不允许启动 spring boot 应用程序

spring - Spring集成测试启动缓慢。原因?无法禁用 RabbitMQ

java - GPS追踪比较(Android)