Node.js Netlogo中的NW扩展
我试着运行这个模型,但它没有启动,我不明白“nw”扩展有什么问题。我已经安装了netlogo 5.2.1和捆绑的“nw”扩展。 Netlogo在第48行显示错误(nw:快照节点链接)。错误消息为“未定义任何名称NW:SET-SNAPSHOT”。请帮忙。整个代码是Node.js Netlogo中的NW扩展,node.js,gis,netlogo,Node.js,Gis,Netlogo,我试着运行这个模型,但它没有启动,我不明白“nw”扩展有什么问题。我已经安装了netlogo 5.2.1和捆绑的“nw”扩展。 Netlogo在第48行显示错误(nw:快照节点链接)。错误消息为“未定义任何名称NW:SET-SNAPSHOT”。请帮忙。整个代码是 extensions [gis nw table array] breed [leavers leaver] breed [followers follower] breed [officers officer ] breed [ no
extensions [gis nw table array]
breed [leavers leaver]
breed [followers follower]
breed [officers officer ]
breed [ nodes node ]
turtles-own [voisins]
leavers-own [ cur-link speed path-end current start to-node from-node origin destin]
globals [network walls itc itc-dataset walls-dataset officer_walkspeed leaver_walkspeed follower_walkspeed interaction_time person_size max_preevacuation_delay loaded ticks_per_sec arr-e v path1 next-node distance100 distance200]
undirected-link-breed [ friendships friendship ]
to startup ;; called when first loaded
read-gis-datasets
end
to setup
clear-all-but-globals ;; don't loose datasets
ask patches [set pcolor white]
setup-world-envelope
draw-world
setup-paths-graph
ask nodes [setxy xcor ycor
if show_names? = True [show-names]]
setup-leavers
end
to clear-all-but-globals reset-ticks ct cp cd clear-links clear-all-plots clear-output end
to read-gis-datasets
;set walls gis:load-dataset "walls.shp"
set network gis:load-dataset "BRT.shp"
;set itc gis:load-dataset "itc.shp"
end
to setup-world-envelope
let world ( gis:envelope-of network ) ;; [ minimum-x maximum-x minimum-y maximum-y ]
gis:set-world-envelope (world)
end
to setup-paths-graph
set-default-shape nodes "circle"
foreach polylines-of network 3 [
(foreach butlast ? butfirst ? [ if ?1 != ?2 [ ;; skip nodes on top of each other due to rounding
let n1 new-node-at first ?1 last ?1
let n2 new-node-at first ?2 last ?2
ask n1 [create-link-with n2]
]])
]
ask nodes [hide-turtle]
nw:set-snapshot nodes links
end
to-report polylines-of [dataset decimalplaces]
let polylines gis:feature-list-of dataset ;; start with a features list
set polylines map [first ?] map [gis:vertex-lists-of ?] polylines ;; convert to virtex lists
set polylines map [map [gis:location-of ?] ?] polylines ;; convert to netlogo float coords.
set polylines remove [] map [remove [] ?] polylines ;; remove empty poly-sets .. not visible
set polylines map [map [map [precision ? decimalplaces] ?] ?] polylines ;; round to decimalplaces
;; note: probably should break polylines with empty coord pairs in the middle of the polyline
report polylines ;; Note: polylines with a few off-world points simply skip them.
end
to-report new-node-at [x y] ; returns a node at x,y creating one if there isn't one there.
let n nodes with [xcor = x and ycor = y]
ifelse any? n [set n one-of n] [create-nodes 1 [setxy x y set size 2 set n self]]
report n
end
to show-names
ifelse label = ""
[set label (word who " ")]
[set label ""]
end
to draw-world
gis:set-drawing-color [255 0 0] gis:draw network 1
end
to setup-leavers
set-default-shape leavers "person"
set leaver_walkspeed 1
create-leavers num-leaver [
set size 1
set origin one-of nodes
if origin = 100 or origin = 200
[show origin
set origin one-of nodes]
move-to origin
show origin
ask origin [set distance100 nw:distance-to node 110]
ask origin [set distance200 nw:distance-to node 210]
ifelse distance100 > distance200
[ask origin [set path1 nw:turtles-on-path-to node 210]]
[ask origin [set path1 nw:turtles-on-path-to node 110]]
;[set destin node 200]
;[set destin node 100]
let a array:from-list path1
set destin array:item a 1
]
end
to go
tick
ask leavers
[
if distance destin < 0.01 ;; round off error fix
[ set origin destin
move-to origin
ask origin [set distance100 nw:distance-to node 110]
ask origin [set distance200 nw:distance-to node 210]
ifelse distance100 > distance200
[ask origin [set path1 nw:turtles-on-path-to node 210]]
[ask origin [set path1 nw:turtles-on-path-to node 110]] ;[set destin node 200]
let a array:from-list path1
if array:length a > 1
[set destin array:item a 1 ]
;origin array:item a 1 ;set next-node one-of [link-neighbors] of to-node face to-node destin] ]
]
face destin
fd 0.01
]
end
to create-shortest-path
ask nodes [set color green]
if Origin = Destin [user-message "Please select two different nodes" stop]
ask node Origin [set color blue]
ask node Destin [set color blue]
;ask node origin [ show nw:path-to node Destin]
ask node origin [ show nw:turtles-on-path-to node destin ]
output-show [ nw:distance-to node destin ] of node origin ;=> 1
end
extensions[gis nw表数组]
品种[离开者]
培育[追随者]
品种[军官]
繁殖[节点]
海龟自己的
离开者拥有[cur-link-speed-path-end-current start-to-node-from-node-origin destin]
全局[网络墙itc itc数据集墙数据集官员\u步行速度离开者\u步行速度跟随者\u步行速度交互\u时间人\u最大大小\u预真空\u延迟加载的滴答声\u每秒arr-e v路径1下一个节点距离100距离200]
无向链接繁殖[友谊]
启动;;第一次加载时调用
读取gis数据集
结束
设置
清除除全局外的所有对象;;不要丢失数据集
询问补丁[设置pcolor白色]
设置世界信封
画画世界
设置路径图
询问节点[setxy xcor ycor]
如果显示名称?=True[显示名称]]
设置离开者
结束
要清除除全局标记外的所有重置标记ct cp cd清除链接清除所有绘图清除输出结束
读取gis数据集
;设置墙gis:加载数据集“walls.shp”
设置网络gis:加载数据集“BRT.shp”
;设置itc gis:加载数据集“itc.shp”
结束
设置世界信封的步骤
让世界(地理信息系统:网络的包络线);;[最小-x最大-x最小-y最大-y]
gis:设置世界范围(世界)
结束
设置路径图的步骤
将默认形状节点设置为“圆形”
网络3的每条多段线[
(foreach butlast?butfirst?[if?1!=?2[;;由于四舍五入,跳过彼此顶部的节点)
让n1新节点先?1后?1
让n2在第一个?2最后?2处创建新节点
询问n1[创建与n2的链接]
]])
]
询问节点[隐藏海龟]
nw:设置快照节点链接
结束
报告[数据集小数点]的多段线的步骤
让多段线gis:数据集的要素列表;;从功能列表开始
设置多段线地图[第一条?]地图[地理信息系统:多段线的顶点列表;;转换为virtex列表
设置多段线地图[地图[gis:位置?]?]多段线;;转换为netlogo浮动坐标。
设置多段线删除[]映射[删除[]?]多段线;;删除空多边形集。。看不见
设置多段线映射[映射[映射[精度?小数位数]?]?]多段线;;小数点附近
;; 注意:在折线的中间可能要折断空线对的折线。
报告多段线;;注意:带有几个非世界点的多段线只需跳过它们即可。
结束
在[x y]处报告新节点;返回x,y处的节点,如果没有,则创建一个。
设n个节点[xcor=x,ycor=y]
还有别的吗?n[设置n个节点中的一个][创建节点1[设置XY x y设置大小2设置n个自身]]
报告n
结束
点名
ifelse label=“”
[设置标签(单词who”“)]
[设置标签“”]
结束
画世界
gis:设置图形颜色[255 0 0]gis:绘制网络1
结束
设置离场者
设置默认形状离开者“person”
将leaver_步行速度设置为1
创建leaver num leaver[
1号套餐
将原点设置为其中一个节点
如果原点=100或原点=200
[显示产地]
将原点设置为一个节点]
移到原点
显示来源
询问原点[设置距离100 nw:到节点110的距离]
询问原点[设置距离200 nw:到节点210的距离]
ifelse距离100>距离200
[询问来源[设置路径1 nw:到节点210的路径上的海龟]]
[询问来源[设置路径1 nw:到节点110的路径上的海龟]]
;[设置目的节点200]
;[set destin node 100]
让数组:从列表路径1
设置目标数组:项目a 1
]
结束
外带
打上钩
询问离别者
[
如果距离destin<0.01;;四舍五入错误修复
[设置起点和终点]
移到原点
询问原点[设置距离100 nw:到节点110的距离]
询问原点[设置距离200 nw:到节点210的距离]
ifelse距离100>距离200
[询问来源[设置路径1 nw:到节点210的路径上的海龟]]
[询问来源[设置路径1 nw:到节点110的路径上的海龟];[设置目的节点200]
让数组:从列表路径1
如果数组:长度a>1
[设置目标数组:项目a 1]
;原点数组:项目a 1;将下一个节点设置为[link Neighbories]中的一个,该节点的[link Neighbories]指向节点destin]]
]
面对命运
fd 0.01
]
结束
创建最短路径的步骤
询问节点[设置绿色]
如果Origin=Destin[用户消息“请选择两个不同的节点”停止]
询问节点原点[设置蓝色]
询问节点目标[设置蓝色]
;询问节点来源[显示nw:到节点目的地的路径]
询问节点来源[显示nw:到达节点目的地的路径上的海龟]
输出显示节点原点的[nw:到节点目的地的距离];=>1.
结束
设置快照
不是网络(nw)扩展中的原语。你是说nw:set context
?set snapshot
是一个不推荐使用的原语-这是旧型号吗?那就可以解释了。珍和亚瑟都是对的。在这种情况下,我认为您可以直接将nw:set snapshot
替换为nw:set context
,这样就可以了。谢谢大家;-)我用“nw:set context”替换了它,问题解决了,但出现了一个新问题!在第36行,“gis:网络的包络线”是新的错误!:-(你们三个中的一个应该把答案写下来作为答案,这样就可以标记为已回答;)