Repast - 将模型打包并分发为 jar,无需 GUI 和源代码
Repast - Pack and distribute the model as jar without GUI and source code
之前在做一个ABM模型,现在转入生产环境(嵌入在线平台系统)。
为了做到这一点,我有两个重要的目标要实现:
如何将模型和相关文件以聚合的方式打包并分发给其他人,最好是作为一个单独的 jar 文件,其他程序可以轻松自动地调用它 运行 需要的时候模拟。 运行 无头模式下的模型是首选。在调用和 运行 模型时应避免弹出 REPAST GUI 控件 window。
BTW:the当前版本的模型不需要同时批量运行个不同的场景,每次只需要一个运行。
如何 hide/obfuscate 完整或至少部分模型的源代码,以确保我的知识 属性 与模型本身相关联。
对于 1,这并不理想,但您基本上可以模仿单个批次 运行 的作用。它不是一个单一的 jar 解决方案,但它肯定是做一个单一的 headless 运行 的最简单的方法。所以,
- 使用批处理 运行 GUI 创建 complete_model.jar(单击“为批处理 运行 创建模型存档”按钮,右起第二个按钮)。这将创建一个 jar 文件,其中包含 运行 模型所需的一切。
- 创建一个目录,complete_model.jar 将解压到该目录。
- 将 complete_model.jar 复制到该目录。
- 使用 jar -xf 提取该 jar 或直接解压它。
- 在您提取模型的目录中创建一个“实例”目录
有了所有这些,您应该能够 运行 使用 repast.simphony.batch.InstanceRunner
作为主要 class 的模型,使用 shell 脚本。在 MacOS 上,该脚本类似于:
cd instance
java -cp "../lib/*" repast.simphony.batch.InstanceRunner -pxml ../scenario.rs/batch_params.xml -scenario ../scenario.rs -id 1 -pinput param_line.txt
param_line.txt 文件应该是单行格式的模型参数:R\tP1\tV1,P2\tV2,...
其中 R 是 运行 数字(即 1),'\t' 是一个选项卡,P1是第一个参数的名称,V1是第一个参数的值等等。
在此处了解有关 InstanceRunner 参数的更多信息:
您提供给人们的是顶层目录的压缩副本,并且可以通过执行您的 shell 脚本来 运行 模型。正如我所说,它并不理想,但它是我能想到的唯一无头解决方案。
之前在做一个ABM模型,现在转入生产环境(嵌入在线平台系统)。
为了做到这一点,我有两个重要的目标要实现:
如何将模型和相关文件以聚合的方式打包并分发给其他人,最好是作为一个单独的 jar 文件,其他程序可以轻松自动地调用它 运行 需要的时候模拟。 运行 无头模式下的模型是首选。在调用和 运行 模型时应避免弹出 REPAST GUI 控件 window。 BTW:the当前版本的模型不需要同时批量运行个不同的场景,每次只需要一个运行。
如何 hide/obfuscate 完整或至少部分模型的源代码,以确保我的知识 属性 与模型本身相关联。
对于 1,这并不理想,但您基本上可以模仿单个批次 运行 的作用。它不是一个单一的 jar 解决方案,但它肯定是做一个单一的 headless 运行 的最简单的方法。所以,
- 使用批处理 运行 GUI 创建 complete_model.jar(单击“为批处理 运行 创建模型存档”按钮,右起第二个按钮)。这将创建一个 jar 文件,其中包含 运行 模型所需的一切。
- 创建一个目录,complete_model.jar 将解压到该目录。
- 将 complete_model.jar 复制到该目录。
- 使用 jar -xf 提取该 jar 或直接解压它。
- 在您提取模型的目录中创建一个“实例”目录
有了所有这些,您应该能够 运行 使用 repast.simphony.batch.InstanceRunner
作为主要 class 的模型,使用 shell 脚本。在 MacOS 上,该脚本类似于:
cd instance
java -cp "../lib/*" repast.simphony.batch.InstanceRunner -pxml ../scenario.rs/batch_params.xml -scenario ../scenario.rs -id 1 -pinput param_line.txt
param_line.txt 文件应该是单行格式的模型参数:R\tP1\tV1,P2\tV2,...
其中 R 是 运行 数字(即 1),'\t' 是一个选项卡,P1是第一个参数的名称,V1是第一个参数的值等等。
在此处了解有关 InstanceRunner 参数的更多信息:
您提供给人们的是顶层目录的压缩副本,并且可以通过执行您的 shell 脚本来 运行 模型。正如我所说,它并不理想,但它是我能想到的唯一无头解决方案。