Repast - 在没有 GUI 的情况下从 java 程序调用模拟
Repast - call simulation from java program without GUI
我正在按照说明测试从另一个 java 程序调用我的仿真模型。
package test;
//import repast.simphony.runtime.RepastMain;
public class UserMain {
public UserMain(){};
public void start(){
String[] args = new String[]{"D:\user\Repast_java\IntraCity_Simulator\IntraCity_Simulator.rs"};
repast.simphony.runtime.RepastMain.main(args);
// repast.simphony.runtime.RepastBatchMain.main(args);
}
public static void main(String[] args) {
UserMain um = new UserMain();
um.start();
}
}
java 程序将使用 RepastMain 配置启动 GUI:
repast.simphony.runtime.RepastMain.main(args);
如果我应用非 GUI 配置,java 程序将在没有 运行ning 且不返回任何内容的情况下很快终止:
repast.simphony.runtime.RepastBatchMain.main(args);
如何在无头模式下启用模拟的 运行ning?
其次,我需要在远程服务器 (Linux) 上部署我的仿真模型。服务器调用我的仿真模型的最佳方式是什么?如果是HTTP,后续如何配置?模型的 运行 宁优选批处理 运行 方法(单个 运行 或多个 运行 取决于用户选择)。批量运行输出需要转成JSON格式反馈给服务器
Simphony 的部分批处理 运行 机制或许可以用于此。有关无头命令行批处理 运行s 的一些上下文,请参阅:
https://repast.github.io/docs/RepastBatchRunsGettingStarted.pdf
考虑到您将模拟 运行 嵌入到其他 java 代码中,这与您尝试做的事情不完全一致,但作为背景应该有所帮助。
最终,尽管批处理 运行 代码调用了 InstanceRunner:
InstanceRunner 遍历文件中的参数集列表或直接传递给它的参数集字符串,然后对每个参数集执行模拟 运行。如果您将单个参数集传递给它,它将 运行 一次,我认为这就是您想要做的。因此,我建议查看 InstanceRunner 代码以了解其工作原理,并在调用模拟的代码中模仿 InstanceRunner.main() 。
至于远程执行,Simphony 可以将模拟复制到远程资源,运行 并将结果复制回来。它与 Simphony GUI 集成在一起,因此如果您不做一些工作,就无法从其他代码中调用它。所有相关代码都在:
SSHSession class 包含通过 SSH 在远程资源上执行命令的代码、复制文件的方法等。所以,也许这对你有用。
我正在按照说明测试从另一个 java 程序调用我的仿真模型。
package test;
//import repast.simphony.runtime.RepastMain;
public class UserMain {
public UserMain(){};
public void start(){
String[] args = new String[]{"D:\user\Repast_java\IntraCity_Simulator\IntraCity_Simulator.rs"};
repast.simphony.runtime.RepastMain.main(args);
// repast.simphony.runtime.RepastBatchMain.main(args);
}
public static void main(String[] args) {
UserMain um = new UserMain();
um.start();
}
}
java 程序将使用 RepastMain 配置启动 GUI:
repast.simphony.runtime.RepastMain.main(args);
如果我应用非 GUI 配置,java 程序将在没有 运行ning 且不返回任何内容的情况下很快终止:
repast.simphony.runtime.RepastBatchMain.main(args);
如何在无头模式下启用模拟的 运行ning?
其次,我需要在远程服务器 (Linux) 上部署我的仿真模型。服务器调用我的仿真模型的最佳方式是什么?如果是HTTP,后续如何配置?模型的 运行 宁优选批处理 运行 方法(单个 运行 或多个 运行 取决于用户选择)。批量运行输出需要转成JSON格式反馈给服务器
Simphony 的部分批处理 运行 机制或许可以用于此。有关无头命令行批处理 运行s 的一些上下文,请参阅:
https://repast.github.io/docs/RepastBatchRunsGettingStarted.pdf
考虑到您将模拟 运行 嵌入到其他 java 代码中,这与您尝试做的事情不完全一致,但作为背景应该有所帮助。
最终,尽管批处理 运行 代码调用了 InstanceRunner:
InstanceRunner 遍历文件中的参数集列表或直接传递给它的参数集字符串,然后对每个参数集执行模拟 运行。如果您将单个参数集传递给它,它将 运行 一次,我认为这就是您想要做的。因此,我建议查看 InstanceRunner 代码以了解其工作原理,并在调用模拟的代码中模仿 InstanceRunner.main() 。
至于远程执行,Simphony 可以将模拟复制到远程资源,运行 并将结果复制回来。它与 Simphony GUI 集成在一起,因此如果您不做一些工作,就无法从其他代码中调用它。所有相关代码都在:
SSHSession class 包含通过 SSH 在远程资源上执行命令的代码、复制文件的方法等。所以,也许这对你有用。