Netlogo土地使用变更模型:foreach list命令

时间:2018-06-11 11:53:11

标签: iterator iteration netlogo

我已经为土地使用变更模型制作了代码,但有一部分无法正常运行。我对Netlogo不是很有经验,而且无法找到我的错误。

问题: 虽然我从NETLOGO字典中复制了foreach部分,但它不起作用。

Netlogo字典(http://ccl.northwestern.edu/netlogo/docs/dict/foreach.html)给出:

(foreach list (turtle 1) (turtle 2) [3 4]
  [ [the-turtle num-steps] -> ask the-turtle [ fd num-steps ] ])
;; turtle 1 moves forward 3 patches
;; turtle 2 moves forward 4 patches

我重新写了这个我自己的模型需求,但Netlogo报告"期待这里的匿名命令,而不是列表或块#34;

我的代码:

to go     
      ;; Sets Willingness to change true if patches are with more fellow patches than the scenario describes 

      (foreach list (Land-use = 1) (Land-use = 2) (Land-use = 3) (Land-use = 4) (Land-use = 5) (Land-use = 6) (Land-use = 7) [Senario1N Senario1L Senario1A Senario1B Senario1I Senario1R Senario1W]
      [ [the-Land-use the-Scenario] - >  ask patches [if count patches with [the-Land-use] > the-Scenario [ set Willingstochange True ] ] ])



      ;; Gives a score to atractivenesstochangein based on the ratio patches vs scenario 

        (foreach list (Land-use = 1) (Land-use = 2) (Land-use = 3) (Land-use = 4) (Land-use = 5) (Land-use = 6) (Land-use = 7) [Senario1N Senario1L Senario1A Senario1B Senario1I Senario1R Senario1W]
      [ [the-Land-use the-Scenario] - >  set atractivenesstochangein (count patches with [the-Land-use]/the-Scenario) ]

    end

但是当我使用确切的Netlogo字典示例时,Netlogo会报告同样的问题

1 个答案:

答案 0 :(得分:2)

此代码存在多个问题。 StackOverflow过程是您为要修复的每个错误询问一个单独的问题。但这不仅仅是帮助其他人试图找到问题答案的程序,也与良好的编程实践有关。

您需要逐渐编码。写一段代码,测试它做你想要的,修复它,然后只有在它正常工作后继续。添加大量代码时调试要困难得多,因为在引入错误的位置不再容易解决。这在NetLogo中更为重要,因为元素之间的交互可能会导致细微的错误。

话虽如此,我至少可以找出一些语法问题。

1 /我不知道'迭代'部分你的意思

2 /改变程序

ask patches [set Land-use (Land-use of Atractiveneigbor]

应该是

ask patches [set Land-use ([Land-use] of Atractiveneigbor]

3 / setup-patches

不确定,但我怀疑这是关于setup程序中的排序。您可以在setup-patches过程之后运行load-gis过程。您的load-gis过程以clear-all命令开头,该命令删除您已经完成的所有操作。