Netlogo: просим черепах вылупляться последовательно

Я пытаюсь создать кластерную (или деревенскую) структуру социальной сети с num-nodes и clique-size в качестве основных переменных. В моем коде я создаю num-nodes / clique-size узлов, которые являются начальными узлами в кластере. После этого я прошу эти узлы заштриховать другие узлы рядом с ними. Однако, поскольку все узлы одновременно просят штриховать, общее количество узлов превысит переменную num-nodes. Следовательно, мне нужно, чтобы узлы штриховали последовательно. Как я могу этого добиться? В настоящее время мой код выглядит так:

to create-new-nodes [n]
    clear-all
    ask patches [ set pcolor white ]
    create-nodes n [
    set color red
    set shape "circle"
  ]




  reset-ticks
end
to setup
  clear-all
  ask patches [ set pcolor white ]
  setup-clusters
  reset-ticks
end


to setup-clusters
  create-new-nodes (num-nodes / clique-size)
  ask nodes [set leader 1]
   ring-layout
   ask nodes [set groupid groupid + who] 
   while [count nodes < num-nodes] [
    ask turtles with [leader = 1] [ hatch 1 ]]

end

Как мне продолжить? Есть ли способ встроить функцию [stop], если who> = num-nodes? Или есть способ лучше?

Чтобы прояснить: я хочу, чтобы узлы штриховались последовательно в зависимости от принадлежащего им groupid. Итак, сначала узел вылупится в группе 0, затем в группе 1 и т. Д. До тех пор, пока черепахи больше не вылупятся из-за count nodes = num-nodes. Это несколько отличается от моего другого вопроса.

Я переписал свой код на это, но получаю ошибки:

;;ticker is a global variable 
to setup-clusters
  create-new-nodes (num-nodes / clique-size)
  ask nodes [set leader 1]
   ring-layout
   ask nodes [set groupid groupid + who] 
loop [
    if count nodes >= num-nodes [stop]
    ask n-of 1 nodes with [groupid = ticker] [ hatch 1 [set group-membership groupid ]]
    ifelse ticker = (num-nodes / clique-size) 
    [set ticker 0]
    [set ticker ticker + 1]
  ]

Спасибо!


person ELC    schedule 13.06.2017    source источник
comment
Это повторение твоего вчерашнего вопроса   -  person JenB    schedule 13.06.2017
comment
не совсем имо. См. Редактировать. @Masoud, я получаю сообщение об ошибке при использовании этой строки. Это тоже не совсем то, что я ищу. Спасибо за помощь!   -  person ELC    schedule 13.06.2017
comment
Это ваша формулировка вашей проблемы: общее количество узлов будет превышать переменную num-nodes. Предлагаемый вами подход «последовательной штриховки» вместо этого просто тестирует по одному и невероятно неэффективен, потому что тест должен выполняться для каждого узла. Взгляните на решение вчерашнего вопроса.   -  person JenB    schedule 13.06.2017