Netlogo: Как перенести списки, принадлежащие соседям, в матрицу? - PullRequest
0 голосов
/ 06 мая 2019

Список под названием ownList2 состоит из двух параметров.Flockmates все соседи в данном радиусе соседа.Я попробовал этот код в версии 6.0.Но это не работает.По сути, я хочу поместить список равных размеров в матрицу.Что-то не так я делаю?Или кто-то может улучшить код?

ask turtles[set ownList2 (list who sensed)] 
;sensed is sensor value of a turtle with respect to the patch. 
;ownList2 is like a message of two bytes, 
    ;first byte mentioning the identity of the itself 
    ;second byte mentioning the value of the sensor. 

ask turtles[
    foreach (list flockmates)
    [
       i -> set m45 matrix:to-column-list ( list [ownList2] of i )
    ]
   ]

Результат: Для turtle-0 с соседями 1, 2, 3: ownList2 ~ [1 200] [2 400] [3 900] M43 для turtle-0 должно выглядеть как [[1 200] [2 400] [3 900]]

1 Ответ

0 голосов
/ 08 мая 2019

Спасибо за добавление этой информации. Вот игрушечный пример, который может сделать то, что вам нужно:

extensions [ matrix ]

turtles-own [ ownlist2 sensed m45 ]

to setup
  ca

  ; Setup example turtles as per question
  foreach [ 100 200 400 900 ] [
    n ->
    crt 1 [
      while [ any? other turtles-here ] [
        move-to one-of neighbors4
      ]
      set sensed n
      set ownlist2 ( list who sensed )
    ]
  ]

  ; Get the turtles to create matrices from the ownlists of
  ; sorted other turtles
  ask turtles [
    set m45 matrix:from-column-list map [ i -> [ ownlist2] of i ] sort other turtles
  ]

  ; Example output:
  ask turtle 0 [
    print "Turtle 0's m45:"
    print matrix:pretty-print-text m45
  ]

  reset-ticks
end

Пример вывода:

Turtle 0's m45:
[[   1    2    3 ]
 [ 200  400  900 ]]
...