Я новичок в NetLogo, поэтому заранее извиняюсь, если этот вопрос очень глупый.Я хотел бы создать агентную модель, в которой животные перемещаются по сложной местности в поисках источников воды.Движение должно быть наклонным, ограниченным крутыми склонами (> 25 °), а цели должны быть озерами.Для этого я использую реальный пример из данных ГИС, и мне уже удалось настроить мир, содержащий сетку высот ASCII, шейп-файл, содержащий линии, которые представляют склоны с более крутыми 25 градусами, и шейп-файл, содержащий области, представляющие озера.Я создал животных (коров) и нашел кодовую строку, указывающую им двигаться вниз по склону.Теперь я хотел бы сказать им
a) избегать уклонов> 25 °, используя шейп-файлы склона в качестве препятствий, и
b) идти к озерам, используя шейп-файлы озера в качестве целей
Может кто-нибудь помочь мне, как это кодировать?Спасибо заранее!Вот код, который я собрал до сих пор
breed [ cows cow ]
extensions [ gis ]
patches-own [ elevation ]
globals [
slope-dataset
lake-dataset
elevation-dataset
]
to setup-terrain
clear-all
reset-ticks
set slope-dataset gis:load-dataset "FILENAME.shp" ;;extent of GIS datasets is N42.3-43.4 and W120.0-121.1
set lake-dataset gis:load-dataset "FILENAME.shp"
set elevation-dataset gis:load-dataset "FILENAME.asc"
gis:set-world-envelope gis:envelope-of slope-dataset
gis:set-world-envelope gis:envelope-of lake-dataset
gis:set-world-envelope gis:envelope-of elevation-dataset
end
to display-slopes
gis:set-drawing-color red
gis:draw slope-dataset 0.5
end
to display-lakes
gis:set-drawing-color blue
gis:draw lake-dataset 2
end
to display-elevation-in-patches
gis:apply-raster elevation-dataset elevation
let min-elevation gis:minimum-of elevation-dataset
let max-elevation gis:maximum-of elevation-dataset
ask patches
[ ; note the use of the "<= 0 or >= 0" technique to filter out
; "not a number" values, as discussed in the documentation.
if (elevation <= 0) or (elevation >= 0)
[ set pcolor scale-color black elevation min-elevation max-elevation ] ]
end
to setup-cows
set-default-shape cows "cow"
create-cows 100 [
setxy random-pxcor random-pycor
set size 1
set color white
]
end
to move
move-to patch-here ;; go to patch center
let p min-one-of neighbors [elevation]
if [elevation] of p < elevation [
face p
move-to p ;; makes cows move to the next lower elevation patch, if no lower
elevetion is present, cow doesn't move
]
end
to go
ask cows [
move
]
end