netlogo: вложенный ifelse не может получить доступ к последней команде ifelse
У меня есть три уровня команды ifelse. Я пытаюсь заставить агента что-то сделать, сравнивая 2 переменные разных агентов. Краткое описание команды ifelse.
Процедуры 1 и 2 пытаются сравнить переменные двух разных агентов в одном и том же патче и что-то сделать; еще
Процедура 3 пытается сравнить переменные двух агентов на разных участках в радиусе 2, затем сделать что-то; остальное.
Проблема: Когда я запускаю процедуры 1 и 3 (отключить процедуру 2) ИЛИ процедуры 2 и 3 (отключить процедуру 1), код в порядке. Но когда я попытался выполнить всю процедуру, он не смог получить доступ к команде [сделать что-то] в процедуре 3.
Мой код выглядит так;
to cocreate-value1
ask capabilities-here
[ let this-resource one-of resource
ask one-of prevalues-here
[ ifelse value = this-resource
[ use-resource ]
[ cocreate-value2]
] ]
end
to cocreate-value2
ask capabilities-here
[ let this-knowledge one-of knowledge
ask one-of prevalues-here
[ ifelse value = this-knowledge
[use-knowledge ]
[cocreate-value3]
] ]
end
to cocreate-value3
ask one-of other capabilities in-radius 2
[let resource2 sentence (resource) (knowledge)
let this-resource2 one-of resource2
let new-cap capabilities with [one-of resource = this-resource2]
ask prevalues-here
[ ifelse value = this-resource2
[ask capabilities-here
[if any? other new-cap in-radius 2
[ create-link-to one-of other new-cap in-radius 2
set color white]] ;; this code is not executed
use-network ] ;; this one too
[set color yellow ]
]]
end
Кто-нибудь может найти проблему? Спасибо за помощь
1 ответ
Это разоблачает проблему?
to cocreate-value1
ask capabilities-here [
let _resource one-of resource
let _pv one-of prevalues-here
if (_pv != nobody) [
ask _pv [
ifelse (value = _resource) [
use-resource
] [
cocreate-value2
]
]
]
]
end
to cocreate-value2
print "enter cv3"
ask capabilities-here [
let _knowledge one-of knowledge
let _pv one-of prevalues-here
if (_pv != nobody) [
ask _pv [
ifelse (value = _knowledge) [use-knowledge ] [cocreate-value3]
]
]
]
print "exit cv3"
end
to cocreate-value3
print "enter cv3"
let _oc one-of other capabilities in-radius 2
ifelse (_oc = nobody) [
print "no other capabilities"
] [
ask _oc [
let _resource2 one-of (sentence resource knowledge)
let _resource one-of resource
let _new-cap capabilities with [_resource = _resource2]
if (not any? prevalues-here) [error "no prevalues here!"]
ask prevalues-here [
ifelse (value = _resource2) [
ask capabilities-here [
let _other one-of other _new-cap in-radius 2
if (_other != nobody) [
print "found a link partner!"
create-link-to _other
set color white
]
] ;; this code is not executed
use-network
] [;; this one too
set color yellow
]
]
]
]
print "leave cv3"
end