当在Java中控制NetLogo实验时,NetLogo是否可以通过只使用内置的NetLogo API命令并行运行(像BehaviorSpace一样)?

当在Java中控制NetLogo实验时,NetLogo是否可以通过只使用内置的NetLogo API命令并行运行(像BehaviorSpace一样)?,java,netlogo,Java,Netlogo,我正在尝试使用Java的“控制API”特性运行NetLogo的一系列实验(如图所示),因为我享受项目中额外的灵活性。但是,提供的所有示例都是使用一组实验值完成的,因此,如何像内置的BehaviorSpace实用程序那样在不同线程上运行一组具有不同值的实验并不明显。当浏览API时,我似乎找不到这个功能。这仅在NetLogo API中是可能的,还是我现在必须用Java直接管理这一点?如果是,我如何确保在不打开JVM的单独实例的情况下获得并发运行 这是我目前在Java中控制它的尝试,我还没有开始工作—

我正在尝试使用Java的“控制API”特性运行NetLogo的一系列实验(如图所示),因为我享受项目中额外的灵活性。但是,提供的所有示例都是使用一组实验值完成的,因此,如何像内置的BehaviorSpace实用程序那样在不同线程上运行一组具有不同值的实验并不明显。当浏览API时,我似乎找不到这个功能。这仅在NetLogo API中是可能的,还是我现在必须用Java直接管理这一点?如果是,我如何确保在不打开JVM的单独实例的情况下获得并发运行

这是我目前在Java中控制它的尝试,我还没有开始工作——因此我的动力是让它使用NetlogoAPI“为我”工作

public class NetLogoHOBMC implements Runnable {

public static void main(String [] args) {
Runnable trial1 = new NetLogoHOBMC("\"/Users/nqe/updateTable/dff/BMC_HO_mixed_onedist.nlogo\"", "\"Users/nqe/temp/\"", "1000", "100", "10", "1", "0", "1000");
Thread thread1 = new Thread(trial1);
thread1.setName("trial1");
System.out.println("Starting trial1.");
thread1.start(); 
}

public void run() {
    try {
        HeadlessWorkspace workspace = HeadlessWorkspace.newInstance();  
        //open the model
        workspace.open(model);
        ...}

对于那些感兴趣的人来说,上面的代码似乎无法在调用HeadlessWorkspace.newInstance()时实际打开JVM会话,尽管我能够让它作为主函数的一部分在前面的控制API指南中使用

你能给出你写的程序的实际输出吗?它是否抛出异常?就这么挂着?对我来说,这似乎是正确的方向。@BryanHead谢谢你的帮助。我设法让Java代码正常工作,因为我意识到我所遵循的指南(我觉得太盲目了)将Daemon属性设置为true——这不是我实际运行JVM进程所要做的。我不完全理解他们在代码中的推理,但这就是为什么我最终从我的问题中删除了所有Java部分,并将我最初的问题集中在NetLogo API部分,这对于喜欢使用NetLogo API接口的人可能仍然有用。我很想帮你,但你的问题不清楚。什么不起作用?你怎么知道它不工作?你可能想创建一个实现runnable的工人类,然后在主线程中创建你需要的数量。你能给出你编写的程序的实际输出吗?它是否抛出异常?就这么挂着?对我来说,这似乎是正确的方向。@BryanHead谢谢你的帮助。我设法让Java代码正常工作,因为我意识到我所遵循的指南(我觉得太盲目了)将Daemon属性设置为true——这不是我实际运行JVM进程所要做的。我不完全理解他们在代码中的推理,但这就是为什么我最终从我的问题中删除了所有Java部分,并将我最初的问题集中在NetLogo API部分,这对于喜欢使用NetLogo API接口的人可能仍然有用。我很想帮你,但你的问题不清楚。什么不起作用?您如何知道它不工作?您可能希望创建一个实现runnable的工人类,然后在主线程中创建所需数量的工人类。