You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:55:00