Netlogo 让海龟在具有特定属性的补丁上移动
我的netlogo模型有点问题,我希望有人能帮我解决这个问题 我有一个具有特定属性的补丁的世界,代表公园、建筑物、街道(大小两种),等等。我希望我的海龟朝着特定的点移动(我成功做到了)。但是我希望海龟只在代表街道的斑块上移动,这些斑块具有特定于它们的属性,颜色为蓝色,值为3或4。你有办法做到这一点吗 以下是我如何建立我的世界:Netlogo 让海龟在具有特定属性的补丁上移动,netlogo,Netlogo,我的netlogo模型有点问题,我希望有人能帮我解决这个问题 我有一个具有特定属性的补丁的世界,代表公园、建筑物、街道(大小两种),等等。我希望我的海龟朝着特定的点移动(我成功做到了)。但是我希望海龟只在代表街道的斑块上移动,这些斑块具有特定于它们的属性,颜色为蓝色,值为3或4。你有办法做到这一点吗 以下是我如何建立我的世界: extensions [ gis ] globals [ Batiments ChemindeFer Cimetiere Den
extensions
[
gis
]
globals
[
Batiments
ChemindeFer
Cimetiere
Densite
Eau
Ponts
Routes
TerrainSports
Vegetations
]
patches-own
[
Cheminferroviaire
Bati
pont
TerraindeSport
Vege
cimetary
water
road
densitepop
Npatchvert
]
breed [ Renards renard]
breed [ Proies proie]
Renards-own
[
stress
poids
]
Proies-own
[
weight
]
to setup
ca
initialiserGIS
creerRenard
creerProie
move
reset-ticks
end
to initialiserGIS
; ---------------------- chargement densité ----------------------------
set Densite gis:load-dataset "desite_ind_g.asc"
gis:apply-raster Densite densitepop
let min-Densite gis:minimum-of Densite
let max-Densite gis:maximum-of Densite
ask patches
[
ifelse densitepop >= 1.5
[ set pcolor scale-color grey densitepop 1.5 6]
[ set pcolor white ]
]
;------------------- chargement des chemin de fer ----------------
set ChemindeFer gis:load-dataset "chdefer_g.asc"
gis:apply-raster ChemindeFer Cheminferroviaire
ask patches with [Cheminferroviaire = 1]
[set pcolor grey]
;--------------------- chargement batiments --------------------
set Batiments gis:load-dataset "batiment_g.asc"
gis:apply-raster Batiments Bati
ask patches with [Bati = 1]
[set pcolor brown]
;--------------------- chargement des ponts --------------------
set Ponts gis:load-dataset "ponts_g.asc"
gis:apply-raster Ponts pont
ask patches with [ pont = 1]
[set pcolor 87]
;--------------------- chargement de l'eau ----------------------
set Eau gis:load-dataset "eau_g.asc"
gis:apply-raster Eau water
ask patches with [ water = 1]
[set pcolor blue]
;--------------------- sports field -----------------
set TerrainSports gis:load-dataset "terrain_sport_g.asc"
gis:apply-raster TerrainSports TerraindeSport
ask patches with [ TerraindeSport = 1]
[set pcolor green]
;--------------------- végétation --------------------
set Vegetations gis:load-dataset "vegetation_g.asc"
gis:apply-raster Vegetations Vege
ask patches with [ vege = 1 ]
[set pcolor green]
;--------------------- cimetary --------------------
set Cimetiere gis:load-dataset "cimetiere_g.asc"
gis:apply-raster Cimetiere cimetary
ask patches with [ cimetary = 1 ]
[set pcolor green]
;---------------------- roads ---------------------------
set Routes gis:load-dataset "routes_g.asc"
gis:apply-raster Routes road
ask patches with
[ road = 4] [set pcolor 87]
ask patches with
[ road = 3] [set pcolor 104]
ask patches with
[ road = 0] [set pcolor green]
end
to creerRenard
create-Renards 10
end
to move
; --- 1st mouvement (towards campus) ---
ask renards
[ set heading towardsxy 10 101
fd 1 ]
end
要防止海龟踩到蓝色斑块以外的任何地方,可以执行以下操作:
ifelse [pcolor = blue] of patch-ahead 1
[ fd 1 ]
[ ...do something else here... ]
但你需要决定“做点别的”是什么。在这种情况下,你希望发生什么…?你的问题说道路是蓝色的,但你的代码说水是蓝色的?我想让乌龟寻找绿色的补丁,因为它们是乌龟的目标,而乌龟只在蓝色的补丁上移动,这只是一个非常模糊的描述。你到底希望海龟们如何“寻找”绿色斑块?这可能意味着很多非常不同的事情,会导致完全不同的代码。我对netlogo相当陌生,所以我实际上不知道如何实现这一点,但我想用一些东西,比如如果半径为10的pcolor面片每勾移动一个面片,听起来似乎有点似是而非。当然,尝试一下类似的事情,如果你陷入困境,回来问一个新问题,详细说明你到底在哪里陷入困境。