2014-05-04 47 views
1

我想用3套代理程序--A,B,C編程模擬。 問題是來自集合A的代理可以選擇執行操作還是非操作。 如果他們決定不採取行動,模擬會停止。 當他們決定採取行動時,模擬繼續到下一步,來自組B的代理也可以決定是否採取行動。這裏也是一樣。 而來自集合C的代理人也可以決定採取行動還是不採取行動,但在這裏,兩種情況下的模擬都會停止。 這裏是我的代碼:如何鏈接代理的行爲?

ask turttles [ 
if breed = set A [ ifeslse do?= false [ set lazy] 
             stop] 
[ if breed = set B [ ifelse do1?= false [ set lazy] 
             stop] 
[ask other turtles [ if breed = set C [ ifelse do 2? = false [ set lazy 
                   stop] ] 
             [set done 
             stop] ] 
             ] 
             ] 
            ] 

的代碼不能正常工作很好,我需要somehing鏈接這三個步驟,因爲當我出口世界,我只從第一步得到的數據

回答

0

如果你在ask的內部做stop,它不會導致整個模擬停止。它只會阻止當前的海龜執行ask的其餘部分。

我想你想要更多的東西一樣:

globals [done?] 

to setup 
    ... 
    set done? false 
    ... 
end 

to go 
    if done? [ stop ] 
    ifelse ... 
    [ ask A [ do-action ] ] 
    [ set done? true ] 
    ifelse ... 
    [ ask B [ do-action ] ] 
    [ set done? true ] 
    ifelse ... 
    [ ask C [ do-action ] ] 
    [ set done? true ] 
    ... 
end 

,但我想一些,因爲你很難從你的描述,告訴您的實際意圖是什麼。 (特別是因爲你沒有包含你的真實代碼 - 你問題中的coede不會超過編譯器。)