Как только я выбрал одну черепаху и проверил ее породу, я создаю один элемент с атрибутами, которые я хочу добавить в список выбранной черепахи и в списки ее соседей. Чтобы добиться этого, я написал следующий код:
to add-items
;; (1) EMPTY list
let creator nobody
let my-neighb nobody
set creator one-of turtles with [breed = breed1 or breed = breed2]
ifelse empty? [my-list] of creator [
ifelse [breed = breed1] of creator[
;; Breed1
ask creator [
set attribute1 random-float 1
set attribute2 random-float 1
]
create-items 1[
hide-turtle
set new_item self
set attribute1 [attribute1] of creator
set attribute2 [attribute2] of creator
]
]
;; Breed2
[ ask creator [
set attribute1 0
set attribute2 random-float 1
]
create-items 1[
hide-turtle
set new_item self
set attribute1 [attribute1] of creator
set attribute2 [attribute2] of creator
]
]
;;;; Add new item to the list ;;;;
ask creator [
set my-list fput (list attribute1 attribute2) my-list
set my-neighb link-neighbors
ask my-neighb [set newsfeed fput (list quality fitness) newsfeed]
show newsfeed
]
]
;; (2) NOT EMPTY LIST
[ ... ]
, где породы и переменные определены следующим образом:
breed[breed1 breed_1]
breed[breed2 breed_2]
breed[items item_1]
breed1-own [
my-list
attribute1
attribute2
]
breed2-own [
my-list
attribute1
attribute2
]
items-own[
attribute1
attribute2
]
Я должен ожидать, что созданный элемент может быть добавлен всписки выбранной черепахи и списки ее соседей:
(breed1 1): [[0.35 0.54] [0.64 0.43]] ;; if breed 1 is linked with breed1 43
(breed1 43): [[0.64 0.43] [0.35 0.54]] ;; same above
(breed1 4): [[]] ;; no items as it was not selected
(breed 1 43): [[0.32 0.31]] ;; only one item created by itself
(breed2 7): [[0 0.23]]
Однако я получаю только эти значения:
(breed1 1): [[0.35 0.54]]
(breed1 43): [[0.64 0.43]]
(breed1 4): [[]]
(breed 1 43): [[0.32 0.31]]
(breed2 7): [[0 0.23]]
...
т.е. один предмет для каждой черепахи.
Конечно, что-то не очень хорошо реализовано в моем коде. Поскольку я создаю один элемент на каждом шаге, в списке выбранных черепах отображается только этот элемент. И это не позволяет мне проверить, превышает ли длина списка пороговое значение, чтобы удалить из него элементы.
То, что я хотел бы, это что-то, что перечисляет все элементы, созданные выбранной черепахой, и добавляет их как в свой собственный список, так и в список его соседей.
Несомненно, было бы полезно узнать, сколько (и каких) соседей у каждой выбранной черепахи, чтобы проверить, был ли созданный предмет эффективно добавлен в списки своей сети.
Надеюсь, вы сможетепомогите мне разобраться с этим.
Спасибо