Как запустить NetLogo без головы без уже существующего файла .nlogo (начиная с файла .nls)?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как запустить NetLogo без головы без уже существующего файла .nlogo (начиная с файла .nls)?

Сообщение Anonymous »

Я хотел бы настроить полностью автономный рабочий процесс NetLogo, который не требует открытия графического интерфейса для создания исходного файла .nlogo. Все, что мне удалось найти с помощью поиска, требует, чтобы файл .nlogo уже существовал в том виде, в каком он был создан графическим интерфейсом. Можно ли создать файл .nlogo из файла .nls без графического интерфейса? Или запускать безголовый режим только из .nls без файла .nlogo? Я использую OpenJDK 11 и NetLogo 6.4.0 в Mac OS Sonoma.
Я просмотрел документацию BehaviorSpace, но во всех безголовых примерах используются уже существующие файлы .nlogo.
Я попытался создать минимальный пример, используя файл .nls и файл .java:

Код: Выделить всё

minimal.nls
(работает корректно при подключении к графическому интерфейсу):

Код: Выделить всё

globals []

to go
print "Hello World!"
tick
end

Код: Выделить всё

Minimal.java:
import org.nlogo.headless.HeadlessWorkspace;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.io.IOException;

public class Minimal {
public static void main(String[] args) {
HeadlessWorkspace workspace = HeadlessWorkspace.newInstance();
try {
// Read NetLogo code from the file
String netlogoCode = new String(Files.readAllBytes(Paths.get("minimal.nls")), StandardCharsets.UTF_8);

// Print the NetLogo code for verification
System.out.println("NetLogo code:");
System.out.println(netlogoCode);

// Open the workspace
try {
workspace.openString(netlogoCode);
System.out.println("NetLogo code loaded successfully.");
} catch (Exception e) {
System.err.println("Error loading NetLogo code:");
e.printStackTrace();
System.exit(1);
}

// Run the simulation
try {
workspace.command("go");
System.out.println("Simulation ran successfully.");
} catch (Exception e) {
System.err.println("Error running 'go' command:");
e.printStackTrace();
System.exit(1);
}

} catch (IOException ex) {
System.err.println("An error occurred while reading the NetLogo file:");
ex.printStackTrace();
System.exit(1);
} finally {
// Close the workspace and handle InterruptedException
try {
workspace.dispose();
} catch (InterruptedException e) {
e.printStackTrace();
// Optionally, restore the interrupted status
Thread.currentThread().interrupt();
}
}
}
}

Ожидаемый результат:

Код: Выделить всё

NetLogo code:
globals []

to go
print "Hello World!"
tick
end

NetLogo code loaded successfully.
Hello world!
Simulation ran successfully.
Фактический результат:

Код: Выделить всё

NetLogo code:
globals []

to go
print "Hello World!"
tick
end

NetLogo code loaded successfully.
Error running 'go' command:
Nothing named GO has been defined.  at position 33 in
at org.nlogo.core.Fail$.exception(Fail.scala:27)
at org.nlogo.core.Fail$.exception(Fail.scala:25)
at org.nlogo.core.Fail$.exception(Fail.scala:23)
at org.nlogo.parse.ExpressionParser$.parseStatement(ExpressionParser.scala:151)
at org.nlogo.parse.ExpressionParser$.$anonfun$apply$1(ExpressionParser.scala:32)
at org.nlogo.parse.ExpressionParser$.parseStatements(ExpressionParser.scala:44)
at org.nlogo.parse.ExpressionParser$.apply(ExpressionParser.scala:32)
at org.nlogo.parse.NetLogoParser.parseProcedure(NetLogoParser.scala:47)
at org.nlogo.parse.NetLogoParser.parseProcedure$(NetLogoParser.scala:29)
at org.nlogo.parse.FrontEnd$.parseProcedure(FrontEnd.scala:10)
at org.nlogo.parse.NetLogoParser.$anonfun$basicParse$1(NetLogoParser.scala:25)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:286)
at scala.collection.Iterator.foreach(Iterator.scala:943)
at scala.collection.Iterator.foreach$(Iterator.scala:943)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
at scala.collection.MapLike$DefaultValuesIterable.foreach(MapLike.scala:214)
at scala.collection.TraversableLike.map(TraversableLike.scala:286)
at scala.collection.TraversableLike.map$(TraversableLike.scala:279)
at scala.collection.AbstractTraversable.map(Traversable.scala:108)
at org.nlogo.parse.NetLogoParser.basicParse(NetLogoParser.scala:25)
at org.nlogo.parse.NetLogoParser.basicParse$(NetLogoParser.scala:15)
at org.nlogo.parse.FrontEnd$.basicParse(FrontEnd.scala:10)
at org.nlogo.parse.FrontEndMain.frontEnd(FrontEnd.scala:26)
at org.nlogo.parse.FrontEndMain.frontEnd$(FrontEnd.scala:25)
at org.nlogo.parse.FrontEnd$.frontEnd(FrontEnd.scala:10)
at org.nlogo.compile.CompilerMain$.compile(CompilerMain.scala:47)
at org.nlogo.compile.Compiler.compileMoreCode(Compiler.scala:85)
at org.nlogo.compile.Compiler.compileMoreCode(Compiler.scala:100)
at org.nlogo.workspace.Evaluator.invokeCompiler(Evaluator.scala:160)
at org.nlogo.workspace.Evaluator.evaluateCommands(Evaluator.scala:20)
at org.nlogo.workspace.Evaluating.command(Evaluating.scala:80)
at org.nlogo.workspace.Evaluating.command$(Evaluating.scala:79)
at org.nlogo.workspace.AbstractWorkspaceScala.command(AbstractWorkspaceScala.scala:25)
at Minimal.main(Minimal.java:30)
Как запустить модель NetLogo в автономном режиме, начиная с файла .nls или исходного кода, без необходимости создавать файл .nlogo в графическом интерфейсе? Я делаю что-то не так, или эта функция не существует/придется использовать графический интерфейс для создания файла модели?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-from-n
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»