为了账号安全,请及时绑定邮箱和手机立即绑定

Netlogo Api 控制器 - 获取表视图

Netlogo Api 控制器 - 获取表视图

幕布斯7119047 2023-10-13 10:31:39
我正在使用 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();        }我在控制台中得到了这个结果:但我想获取表视图并保存到数据库。我可以使用哪个命令来获取表视图?表格视图:有什么帮助吗?
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

如果您能澄清为什么要尝试以这种方式生成数据,我或其他人可能能够提供更好的建议。

没有单一的 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-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 实验。正如您所看到的,它与类绑定在一起LabProtocol,这意味着您必须通过BehaviorSpace设置和运行模型,而不是像在您的代码中那样逐步使用工作区。示例代码。

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


查看完整回答
反对 回复 2023-10-13
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信