【问题标题】:make turtles move on patches with specific attributes使海龟在具有特定属性的补丁上移动
【发布时间】:2018-05-12 22:03:56
【问题描述】:

我的 netlogo 模型遇到了一些问题,我希望有人能够帮助我解决这个问题。

我有一个带有特定属性的补丁的世界,这些属性代表公园、建筑物、街道(大小两种类型)等。我希望我的海龟向特定点移动(我设法做到了)。但是我希望海龟只在代表街道的补丁上移动,它们具有特定于它们的属性,蓝色和值 3 或 4。你有办法做到这一点吗?

这是我建立自己的世界的方式:

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

【问题讨论】:

  • 你的问题说道路是蓝色的,但你的代码说水是蓝色的?

标签: netlogo


【解决方案1】:

为了防止乌龟踩到蓝块以外的任何东西,你可以这样做:

ifelse [pcolor = blue] of patch-ahead 1
  [ fd 1 ]
  [ ...do something else here... ]

但您需要确定“做其他事情”部分是什么。在那种情况下你想发生什么……?

【讨论】:

  • 我想让乌龟寻找绿色的斑块,因为它们是乌龟的目标,而只在蓝色斑块上移动
  • 好的,但这只是一个非常模糊的描述。您究竟希望海龟如何“寻找”绿色斑块?这可能意味着许多非常不同的事情会导致完全不同的代码。
  • 我是 netlogo 的新手,所以我实际上不确定如何实现这一点,但我正在考虑使用 pcolor in-radius 10 move-per-tick 的补丁之类的东西
  • 这听起来有点可信。当然,试一试类似的事情,如果你卡住了,回来问一个新问题,详细说明你卡在哪里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
相关资源
最近更新 更多