2015-03-29 2 views
1

Или как добавить координаты в патч-набор? Я хочу создать список и добавить каждый патч в качестве другого элемента списка (используя lput), но вместо этого список заменяет патч здесь каждый раз, поэтому я пытался использовать патч-набор, однако я не знаю, как добавьте новые патчи в конец и добавьте туда координаты.Как добавить патч-сюда в список в netlogo?

Вот мой код до сих пор:

globals [ frontier frontier2 ] 

breed [squares square] 
breed [circles circle] 

to setup 
    ca 
    set-default-shape squares "square" 
    set-default-shape circles "circle" 
    create-breeds 
    reset-ticks 
end 

to create-breeds 
    create-squares 1 [ 
     setxy 0 0 ] 
    create-circles 1 [ 
     setxy 5 5 ] 
end 

to go 
    ask squares [ 
    fd 1 
    set frontier [] 
    set frontier lput patch-here frontier 
    show frontier 
    ] 
    ask circles [ 
    fd 1 
    set frontier2 patch-set patch-here 
    show frontier2 
    ] 
    tick 
end 

И это то, что командный центр показывает:

«(квадрат 0): [(патч 7 -3)]

(круг 1): (agentset, 1 пластырь)»

я ожидал что-то вроде (квадрат 0): [(патч 0 0) (патч 1 0) (патч 2 0)]

ответ

3

Он заменяет патч каждый раз, потому что вы явно переинициализация список по каждый раз, когда в вашей go процедуры с:

set frontier [] 

Просто переместите эту линию в setup процедуру вместо этого!

Что касается добавления патча патча установлен вместо списка, правильный синтаксис был бы:

set frontier2 (patch-set frontier2 patch-here) 

Но я не предлагаю вам использовать это, потому что нужно восстановить патч установить каждый таким образом, медленнее, чем использование списка и lput. Кроме того, набор патчей всегда доступен в случайном порядке, который, как я подозреваю, вам не нужен.

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