首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化代码:Net徽标-更改修补程序颜色

优化代码:Net徽标-更改修补程序颜色
EN

Stack Overflow用户
提问于 2022-06-30 18:47:31
回答 2查看 49关注 0票数 0

目前,我把海龟放在一个光栅上,我要求他们改变他们附近补丁的颜色。然而,这个过程花费了太多的时间,我找不到原因。下面的代码显示了主要部分,但它不应该工作。

代码语言:javascript
复制
breed[tradis tradi]
breed[tecnos tecno]

to setup-map

  user-message "Se Borrará el Mapa y Las Distancias Guardadas"
  ca
  resize-world 0 700 0 700

    set mundo gis:load-dataset "D:/Geografico/Lago_Tota_SZH_Raster_Grueso.asc"
  gis:set-transformation [-72.994844704 -72.835891153 5.418413284 5.648012857666661] [0 700 0 700]
  set lago gis:load-dataset "D:/Geografico/Lago_Tota_Raster.asc"

  draw-tota
  draw-lago

  set emptypatches patches with [pcolor <= 50]
  ask emptypatches  [set tota "na"]
  set terrain patches with [pcolor > 50 and pcolor < 60]
  ask terrain [set tota 1]
  set border patches with [tota = 1 and any? neighbors with [tota != 1]]



to go
  cultivate

  tick
end

to cultivate

   ask tecnos [ if ticks > 0 and ticks mod 4 = 0 [ask patches in-radius 4  with [tota = 1]
    [set dano_suelo_promedio mean [dano_suelo] of patches
      set pcolor 42
      set cosecha cosecha + 1
      ]
    ifelse pcolor = 42 [][set recuperar recuperar + 1]
    
  ]
  ]

 ask tradis [ if ticks > 0 and ticks mod 6 = 0 [if patch-here = terreno [ask patches in-radius 4  with [terreno]; falta presentar la coseachas 6-3-3
    [set dano_suelo_promedio mean [dano_suelo] of patches
      set pcolor 42
      set cosecha cosecha + 1
   ]
    ifelse pcolor = 42 [][set recuperar recuperar + 1]
    ]
  ]
  ]

end

这是给我带来麻烦的部分。这个特定的部分大约需要30分钟才能运行,这是毫无意义的。随着补丁颜色的改变,它正在缓慢地工作。光栅本身是大的,700×700,所以我试图找到一种方法来询问最少的数量,如果其他,以便它可以尽快。

如有任何建议,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-04 13:25:48

为了继续Charles所写的内容,如果您只想计算相关补丁的平均值,而不是所有补丁的平均值,我建议使用一个局部变量(使用let)来定义补丁,并使用另一个局部变量来定义平均值,因为我假设,对于某个海龟选择的所有补丁,这个平均值是相同的。这意味着,您现在计算49个补丁的平均值--每次1次--而不是计算所有1002001个补丁的平均值--每tecno 49次,这在规模上有很大的差异。

代码语言:javascript
复制
   ask tecnos [ 
      if ticks > 0 and ticks mod 4 = 0 [
         let my_patches patches in-radius 4 with [tota = 1]
         let my_mean mean [dano_suelo] of my_patches
         ask my_patches [
            set dano_suelo_promedio my_mean
            set pcolor 42
            set cosecha cosecha + 1
         ] ;end of ask my_patches
         ifelse pcolor = 42 [][set recuperar recuperar + 1]
      ] ;end of if
   ] ;end of ask tecnos
票数 1
EN

Stack Overflow用户

发布于 2022-06-30 20:28:04

我想到的一件事是,您要求每个tecnos和每个tradis计算相同的东西,mean [dano_suelo] of patches,这大概对它们都是一样的。如果有很多补丁,那就是大量的计算。您能在过程开始时计算一次,然后将其提供给每个代理吗?或者,是否有一个子集的补丁,每个代理是要找到均值?

查尔斯

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72820680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档