求助:使用nlrx执行敏感性分析时NetLogo提示找不到gis扩展
解决nlrx运行NetLogo模型时的"Can't find extension: gis"错误
问题背景
我尝试使用R语言的nlrx包开展敏感性分析,当前系统Java环境满足要求:
$ java -version java version "16.0.1" 2021-04-20 Java(TM) SE Runtime Environment (build 16.0.1+9-24) Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing) $ javac -version javac 16.0.1
但运行实验时出现Can't find extension: gis的错误,更换不同版本Java后问题仍未解决。相关R代码及报错信息如下:
R代码
library(nlrx) # Sys.setenv("JAVA_HOME"="C:/Program Files/Java/jdk1.8.0_361") # Sys.setenv("JAVA_HOME"="C:/Program Files/Java/jdk-16.0.1") nl_path = "C:/Program Files/NetLogo 6.3.0" nl_version = "6.3.0" model_path = file.path( "C:/Users/derke001/Documents/My desktop/ABM/Article ABM/model/", "Netlogo_the latest/(V5.4) Netlogo Amsterdam - Mark/(V5.4) Netlogo Amsterdam - Mark/V(6.0) BehaviorSpace version.nlogo" ) out_path = "C:/Users/derke001/Documents/My desktop/ABM/Article ABM/model/Netlogo_the_latest" #create a nl object model <- nl( nlversion = nl_version, nlpath = nl_path, modelpath = model_path, jvmmem = 1024 ) ##experiment1 - electricity price model@experiment <- experiment( expname = "elec-price", outpath = out_path, repetition = 1, tickmetrics = "true", idsetup = "setup-quick", idgo = "go", runtime = 10, metrics = c( db = "length filter [ i -> i = 2 ] overview-investments-owner", ins = "length filter [ i -> i = 3 ] overview-investments-owner", pv = "length filter [ i -> i = 4 ] overview-investments-owner", hp = "length filter [ i -> i = 5 ] overview-investments-owner", "r-seed" ), variables = list("electricity-price" = list(values=c(0.082, 0.232, 0.382))), constants = list( "dataset-residents" = "4. dataset residents/zuid-oost.csv", "gas-price" = 0.829, "owners-only?" = "true", "new-random-seed?" = "true", "min-building-size" = 3, "unc-energy-prices-mean" = 0.2, "owners-building-only?" = "false", "unc-stand.dev-consumat" = 0.05, "collective-dm?" = "true", "maximum-years" = 10 ) ) eval_variables_constants(model) model@simdesign = simdesign_ff(nl = model, nseeds = 20) results = run_nl_all(model)
报错信息
> eval_variables_constants(model) All defined variables and constants are valid! > > model@simdesign = simdesign_ff(nl = model, nseeds = 20) Creating full factorial simulation design > results = run_nl_all(model) Exception in thread "main" Can't find extension: gis at position 15 in at org.nlogo.core.ErrorSource.signalError(ErrorSource.scala:11) at org.nlogo.workspace.ExtensionManager.importExtension(ExtensionManager.scala:180) ***
解决方法
检查并安装NetLogo GIS扩展
打开NetLogo软件,点击顶部菜单栏Tools->Extension Manager,在列表中找到GIS扩展:- 若未安装,点击
Install按钮完成安装,确保扩展版本与NetLogo 6.3.0兼容 - 若已安装,尝试卸载后重新安装,避免扩展文件损坏
- 若未安装,点击
手动指定GIS扩展路径
若NetLogo无法自动识别GIS扩展,在创建nl对象时手动指定扩展路径:model <- nl( nlversion = nl_version, nlpath = nl_path, modelpath = model_path, jvmmem = 1024, extensions = list(gis = file.path(nl_path, "app", "extensions", "gis")) )默认情况下,NetLogo扩展目录为
C:/Program Files/NetLogo 6.3.0/app/extensions,确认gis文件夹存在于此路径下。验证NetLogo模型的扩展声明
打开你的NetLogo模型文件,检查代码开头是否有extensions [gis]的声明:- 若模型用到了GIS功能但未添加该声明,需手动添加
- 若已存在,确认拼写无错误
单独运行NetLogo模型排查问题
直接打开NetLogo软件加载模型,手动执行setup-quick和go命令:- 若NetLogo单独运行时也报错,说明问题出在NetLogo或扩展本身,需优先解决NetLogo端的扩展问题;若能正常运行,再回到nlrx配置排查。
内容的提问来源于stack exchange,提问作者Turtle
相关产品推荐
相关产品推荐

