2014-02-17 3 views
3

Я пытаюсь смоделировать цвета бюллетеней на мобильной доске объявлений с помощью NetLogo. Я могу изменить цвет своих цветов, когда они встречаются, но изменение цвета является случайным, и иногда бюллетени, имеющие один и тот же цвет, касаются или закрываются вместе в моем радиусе. Я хотел бы, чтобы бюллетени имели уникальный цвет в данном raduis.Here является частью моего кода. Может ли кто-нибудь помочь мне?Раскраска агента с NetLogo

to color-bulletins 
    ask bulletins [ 
    ask other bulletins in-radius 2[ 
     ask one-of bulletins [ set color green] 
     ask one-of bulletins [ set color white ] 
     ask one-of bulletins [ set color yellow] 
     ask one-of bulletins [ set color blue ] 
    ]] 
end 

ответ

3

Вот один из способов сделать это:

breed [ bulletins bulletin ] 

to setup 
    ca 
    create-bulletins 1000 [ setxy random-xcor random-ycor ] 
end 

to color-bulletins 
    ask bulletins [ 
    let used-colors [ color ] of other bulletins in-radius 2 
    let available-colors filter [ not member? ? used-colors ] base-colors 
    set color ifelse-value (length available-colors > 0) 
     [ one-of available-colors ] 
     [ one-of base-colors ] 
    ] 
end 

Это предполагает, что вы хотите использовать только base-colors и что все они могут быть использованы уже, в этом случае вы все равно получите «цветное столкновение», но вы ничего не можете с этим поделать. Если пространственное распределение ваших агентов довольно плотное, жесткое, это не должно происходить слишком часто.

Смежные вопросы