У меня есть модель, которой необходимо обновлять одно конкретное значение для всех исправлений перед каждым запуском. После каждого временного шага эти значения обновляются (через внешнюю модель). Это означает, что модель Netlogo должна запуститься, а затем остановиться (сделать перерыв), мне нужно вывести некоторые данные, затем мне нужно обновить значения патча, а затем снова запустить Netlogo. Я хотел бы запустить один R-скрипт для настройки модели Netlogo, а затем запустить другой аналогичный R-скрипт для запуска функции go в Netlogo. Однако в настоящее время - я закрываю R-скрипт, который выполняет Netlogo setup
, - затем я пытаюсь запустить другой аналогичный R-скрипт с функцией go
(без setup
) - тогда этот второй скрипт не выполняется.
У кого-нибудь есть опыт инициализации Netlogo через R без запуска setup
? Другими словами, я пытаюсь задать начальные условия без разгона (без части setup
) — возможно ли это, и если да, то как? Хоть я и писал про R, это не обязательно. Я также мог бы использовать интерфейс Python, но мне нужно использовать интерфейс без графического интерфейса, так как он должен работать на терминале. Фундаментальный вопрос заключается в том, как задать начальные условия для запуска.
Итак, вот пример кода R:
# для настройки модели
# load RNetLogo package
library(rJava)
library(RNetLogo)
require(RNetLogo)
nl.path <- "C:\\Program Files (x86)\\NetLogo 5.2.0"
# the path to the NetLogo model file
model.path <- "......\\veg_model_1.nlogo"
#Load specific model
my.netlogo <-"veg_model_1.nlogo"
NLStart(nl.path, gui=F, nl.obj=my.netlogo) #Creates an instance of NetLogo.
NLLoadModel(model.path,nl.obj=my.netlogo)
NLCommand("setup", nl.obj=my.netlogo) #Executes a command
NLQuit(nl.obj = my.netlogo)
# чтобы обновить значение и запустить go на 1 год
# load RNetLogo package
library(rJava)
library(RNetLogo)
require(RNetLogo)
# an R random seed (for beeing reproducible)
set.seed(-986131948)
nl.path <- "C:\\Program Files (x86)\\NetLogo 5.2.0"
# the path to the NetLogo model file
model.path <- ".......\\veg_model_1.nlogo"
#Load specific model
my.netlogo <-"veg_model_1.nlogo"
NLStart(nl.path, gui=F, nl.obj=my.netlogo) #Creates an instance of NetLogo.
NLLoadModel(model.path,nl.obj=my.netlogo)
# here is the value i needed to update
NLCommand("Setpatchwaterpotential", nl.obj=my.netlogo) #Executes a command
Command("go", nl.obj=my.netlogo)
NLQuit(nl.obj = my.netlogo)
## в Netlogo настраиваем и вперед:
to setup
clear-all
reset-ticks
setup-globals
setup-patches ; Init patches, init Hydroregime
setup-individuals
end
to Setpatchwaterpotential
'read input files'
end
to go
ifelse ticks = 0
[
Setpatchwaterpotential
......
tick ;to count timesteps (ticks) = how often did the model
]
end
Thanks