Java Repast-将模型打包并作为jar分发,无需GUI和源代码

Java Repast-将模型打包并作为jar分发,无需GUI和源代码,java,agent-based-modeling,repast-simphony,Java,Agent Based Modeling,Repast Simphony,以前我使用的是一个ABM模型,现在该模型将投入生产环境(将其嵌入在线平台系统) 为此,我有两个重要目标要实现: 如何以强化的方式将模型和相关文件打包并分发给其他人,最好是作为一个jar文件,其他程序可以方便地自动调用该文件,以便在需要时运行模拟。最好在无头模式下运行模型。调用和运行模型时,应避免弹出repast GUI控制窗口。 顺便说一句:当前版本的模型不需要同时批量运行不同的场景,每次只需要一次运行 如何完全或至少部分隐藏/混淆模型的源代码,以保护与模型本身相关的知识产权 对于1来说,这

以前我使用的是一个ABM模型,现在该模型将投入生产环境(将其嵌入在线平台系统)

为此,我有两个重要目标要实现:

  • 如何以强化的方式将模型和相关文件打包并分发给其他人,最好是作为一个jar文件,其他程序可以方便地自动调用该文件,以便在需要时运行模拟。最好在无头模式下运行模型。调用和运行模型时,应避免弹出repast GUI控制窗口。 顺便说一句:当前版本的模型不需要同时批量运行不同的场景,每次只需要一次运行

  • 如何完全或至少部分隐藏/混淆模型的源代码,以保护与模型本身相关的知识产权


  • 对于1来说,这并不理想,但实际上可以模拟单个批处理运行的功能。它不是一个单一的jar解决方案,但它肯定是实现单一无头运行的最简单方法。所以

  • 使用批处理运行GUI创建完整的_model.jar(单击右侧第二个按钮中的“为批处理运行创建模型存档”按钮)。这将创建一个jar文件,其中包含运行模型所需的所有内容
  • 制作一个目录,完整的_model.jar将被解压缩到其中
  • 将完整的_model.jar复制到该目录
  • 用jar-xf解压这个jar,或者直接解压它
  • 在提取模型的目录中创建一个“实例”目录
  • 所有这些就绪后,您应该能够使用shell脚本,以
    repast.simphony.batch.InstanceRunner
    为主类运行模型。在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脚本来运行模型。正如我所说,这并不理想,但它是我能想到的唯一无头解决方案。

    嗨,尼克,成功应用了上述方法,解决问题2的最佳方法是什么?(使源代码对其他人不可见)我注意到完整的_model文件夹实际上并不包括src文件夹。这种方法是否已经自动省略了模型源代码?