Я полагаю, что вы хотите, чтобы каждый клиент вел свой собственный черный список, а не имел единый черный список, доступный для всех клиентов. Если это так, то вам нужно создать собственный атрибут turtles для клиентов, который содержит их черный список.
Этот черный список проще всего использовать, если он представляет собой набор агентов. Таким образом, вы можете использовать not member?
, чтобы исключить поставщиков при выборе. Однако вам нужно будет сохранить его в виде списка агентов (никогда не используйте идентификаторы, такие как who
число), если вам нужны более сложные операции, такие как запоминание порядка, в котором они были добавлены в черный список.
Этот код создает черный список, исключает членов из выбора, а также добавляет и удаляет из черного списка вероятностно.
breed [providers provider]
breed [customers customer]
customers-own [blacklist]
to setup
clear-all
create-providers 3 [setxy random-xcor random-ycor set color red]
create-customers 10
[ setxy random-xcor random-ycor
set color blue
set blacklist (turtle-set [])
]
reset-ticks
end
to go
ask customers
[ let choice ifelse-value any? blacklist
[ one-of providers with [not member? self [blacklist] of myself] ]
[ one-of providers ]
; stuff here about purchasing from their choice
ask blacklist [ if random-float 1 < 0.3 [ die ] ]
if random-float 1 < 0.2 [ set blacklist (turtle-set blacklist choice) ]
show blacklist
]
tick
end