2015-12-04 2 views
2

Как случайным образом выбирать среди всех соседних патчей, которые выше, чем самый высокий патч соседа? Я думал удалить (если высота> = [высота] макс-одного соседей [высота] [стоп]) и поместить «[стоп]» в [перемещение к одному соседей [стоп]]Как случайно выбрать соседний патч, который имеет более высокую высоту в netlogo

to move ; a turtle procedure 

if elevation >= [elevation] of max-one-of neighbors [elevation] [stop] 


ifelse random-float 1 < q 
[uphill elevation] 
[move-to one-of neighbors] 

end 
+0

Сначала вы хотите, чтобы определить, сколько выше патчей вы хотите измерить, вы можете выбрать среди всех 8 и просто выбрать один случайно или вы можете выбрать наибольший. С другой стороны, вы могли бы подумать о том, чтобы иметь какую-то сделку, которая определяла бы, когда патч является кандидатом на выбор. –

ответ

1

one-of случайным образом выбирает агент из agentset и with создает agentset этих агентов, удовлетворяющих условию. Вам также нужно будет проверить, что есть хотя бы одно место для входа. Выбор будет выглядеть следующим образом (пороговое условие необходимо определить):

to move-up ; a turtle procedure 
    let candidates neighbors with [elevation >= <thresholdhold condition> ] 
    if any? candidates [ move-to one-of candidates] 
end 

Если вы вместо того, чтобы хотеть, чтобы выбрать среди высших соседей, независимо от того, являются ли они выше некоторого порогового значения, вы хотите max-n-of. Похоже, это выбрать один из 3 высоких:

to move-up 
    move-to one-of max-n-of 3 neighbors [elevation] 
end 
+0

Что такое условие порогового уровня? это высота? – kaka

+0

Это может быть что-то вроде возвышения> 20. В вашем вопросе было неясно, хотите ли вы выбрать те, которые были выше некоторого числа (или порога), и те, которые были выше в группе соседей. Что вы хотите, когда черепаха находится на вершине своего местного холма? – JenB

1
; The butterfly move procedure in turtle context 
to move ; a turtle procedure 
    if elevation >= [elevation] of max-one-of neighbors [elevation] [stop] 
    ; Decide whether to move uphill deterministically with probability q 
    ifelse random-float 1 < q 
    [ uphill elevation ] ; move uphill 
    [ move-to one-of neighbors ] ; otherwise move randomly 
    set patches-visited patches-visited + 1 
end 
Смежные вопросы