Netlogo Модель изменения землепользования: команда foreach list - PullRequest
0 голосов
/ 11 июня 2018

Я сделал код для модели изменения землепользования, но одна часть не работает должным образом.Я не очень опытен с Netlogo и не могу найти свою ошибку (ы).

проблема: часть foreach не будет работать, хотя я скопировал ее из словаря NETLOGO.

Словарь 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 сообщает, что «здесь ожидалась анонимная команда, а несписок или блок "

мой код:

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 голосов
/ 11 июня 2018

Есть несколько проблем с этим кодом.Процедура 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 процедуре.Вы выполняете процедуру load-gis позже, чем процедура setup-patches.Ваша процедура load-gis начинается с команды clear-all, которая удаляет все, что вы уже сделали.

...