我有一个交互式工作的模型。但是,每当我尝试使用BehaviorSpace运行它时,我都会遇到各种错误。
该模型使用R扩展名。事件的一般顺序是:
当我只使用一个处理器时似乎工作,所以我认为R端的并行进程之间存在某种污染(因为每个线程创建和操作具有相同名称的网络)。但是,R-extension文档明确指出它可以与BehaviorSpace一起使用,并为每个NetLogo运行创建一个单独的R环境。
错误包括:
这些错误仅在几次运行中发生,并且具有各种参数组合。具有相同参数组合的其他运行没有错误。
我是否可以访问可以打印到的BehaviorSpace的某种输出日志,以尝试找出问题?理想情况下,我想暂停实验并查看变量的内容等。
更新:以下是典型错误的错误日志:
扩展异常:R-Extension中的错误:Eval中的错误: org.nlogo.api.ExtensionException:readBin中的错误(filename,what = raw(0),n = tmpbufsize):只能读取二进制连接
运行R:EVAL的观察者在程序EXPORT-NW2R调用时出现错误 由程序__EVALUATOR
调用的过程SETUP调用org.nlogo.nvm.EngineException:扩展异常:错误 R-Extension:Eval中的错误:org.nlogo.api.ExtensionException:错误 在readBin中(filename,what = raw(0),n = tmpbufsize):只能读取 来自二进制连接
at org.nlogo.extension.r.Entry $ Eval.perform(Entry.java:560)at at org.nlogo.prim._extern.perform(_extern.java:54)at org.nlogo.nvm.Context.stepConcurrent(Context.java:91)at org.nlogo.nvm.ConcurrentJob.step(ConcurrentJob.java:82)at org.nlogo.job.JobThread.org $ nlogo $工作$ JobThread $$ runPrimaryJobs(JobThread.scala:143) 在 org.nlogo.job.JobThread $$ anonfun $运行$ 1.适用$ MCV $ SP(JobThread.scala:78) 在org.nlogo.job.JobThread $$ anonfun $ run $ 1.apply(JobThread.scala:76) 在org.nlogo.job.JobThread $$ anonfun $ run $ 1.apply(JobThread.scala:76) 在scala.util.control.Exception $ Catch.apply(Exception.scala:88)at org.nlogo.util.Exceptions $ .handling(Exceptions.scala:41)at org.nlogo.job.JobThread.run(JobThread.scala:75)
NetLogo 5.3 main:org.nlogo.app.AppFrame线程:JobThread Java HotSpot(TM)64位服务器VM 1.8.0_65(Oracle Corporation; 1.8.0_65-b17)操作系统:Windows 8.1 6.3(amd64处理器)Scala版本2.9.2 JOGL :( 3D视图未初始化)OpenGL图形: (3D视图未初始化)模型:干预
03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread 03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread 03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread 03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread 03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread 03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread 03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread 03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread 03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread 03:41:43.172 JobRemovedEvent(org.nlogo.app.App $$ anon $ 1 (org.nlogo.window.GUIWorkspace))JobThread
export-nw2r过程如下所示:
to export-nw2r
; create file with useful graph format
nw:set-context people links
let filename (word "Networks/netlogo" behaviorspace-run-number ".gml")
export-simple-gml filename
;; reset the R-workspace
r:clearLocal
let dir pathdir:get-model
r:eval "library(igraph)"
; read network in R
set filename (word dir "/" filename)
r:put "fn" filename
r:eval "gg <- read_graph(file = fn, format = 'gml')"
r:eval "V(gg)$name <- V(gg)$id" ; gml uses 'id', but igraph uses 'name'
r:eval "if (file.exists(fn)) file.remove(fn)"
end
基本上,它调用一个程序来创建一个非常简化的gml格式文本文件(因为igraph有一个残缺的导入程序),切换到R并清除R工作区,导入图形并计算属性。
我已经将我的代码的当前版本作为单个处理器行为进行了大约10次没有失败的行为,并且每次都有4次失败。因此,BehaviorSpace和R-extension的交互方式似乎存在错误。在此留下这些信息,但除非有人能解释java错误,否则我真的不希望有解决方案。似乎与NetLogo BehaviorSpace crashing when using R extension
相同的错误