2017-03-11 3 views
0

私は民主主義モデルを作りたいと思っています。私はそのために4匹の品種を作りました。 1つは投票する人、もう1つはパーティーです。私のコードでは、いずれかの当事者が100票の総数に達したときにモデルを停止するつもりです。私はそれを理解することはできません。私を助けてください。ここに私のコードです:それはあなたの停止手順に問題のように見えますnetlogoで品種を使ってダニを止めるには?

breed [people p] 
breed [party1 p1] 
breed [party2 p2] 
breed [party3 p3] 

party1-own [vote] 
party2-own [vote] 
party3-own [vote] 

to setup 
    clear-all 
    setup-patches 
    setup-people 
    setup-parties 
    reset-ticks 
end 

to setup-patches 
    ask patches [ 
    ifelse pxcor >= 4 and pycor >= 6 
    [set pcolor white] 
    [set pcolor brown] 
    ] 
end 

to setup-people 
    set-default-shape people "person" 
    create-people number-of-people 
    ask people [setxy random-float -16 random-float -16] 
end 

to setup-parties 
    set-default-shape party1 "person" 
    set-default-shape party2 "person" 
    set-default-shape party3 "person" 
    create-party1 1 
    create-party2 1 
    create-party3 1 
    ask party1 [setxy 15 -1] 
    ask party2 [setxy 15 -3] 
    ask party3 [setxy 15 -5] 
    ask party1 [set color blue] 
    ask party2 [set color green] 
    ask party3 [set color yellow] 
end 

to go 
    start-voting 
    ask party1 [ 
    if (vote) >= 100 [stop] 
    ] 
    ask party2 [ 
    if (vote) >= 100 [stop] 
    ] 
    ask party3 [ 
    if (vote) >= 100 [stop] 
    ] 
    tick 
end 

to start-voting 
    let x random 3 
    ifelse x = 2 
    [ask party3 [set vote vote + 1]] 
    [ 
    ifelse x = 1 
    [ask party2 [set vote vote + 1]] 
    [ask party1 [set vote vote + 1]] 
    ] 

    ifelse show-votes? 
    [ 
    ask party1 [set label vote] 
    ask party2 [set label vote] 
    ask party3 [set label vote] 
    ] 
    [ 
    ask party1 [set label ""] 
    ask party2 [set label ""] 
    ask party3 [set label ""] 
    ] 
end 

答えて

1

があること亀できる手順でのみstop独自の役割。それが記載されている、より完全な説明のためにprocedure manualに関するボタンをチェックしてください:すべてのカメやパッチが止まるまで

カメやパッチ永遠ボタンで、ボタンは停止しません - 単一カメやパッチを全体ボタンを

を停止する力を持っているので、他のカメを何であるかが起こっていることは、あなたの最初のグループは、手続きを停止していることであるように見えますが、それが起こるので、後の議決権が発生していません停止されていない場合、票は引き続き追加され、手順はr国連。この場合、以下のようにグローバルレベルの停止条件を設定する方がよいでしょう。オブザーバーがofを使ってカメに照会すると、その変数はリストに返されるので、item 0が必要です。

to go 
    start-voting 
    if (item 0 [vote] of party1 > 100) or (item 0 [vote] of party2 > 100) or (item 0 [vote] of party3 > 100) [ 
    stop 
    ] 
    tick 
end 
+0

ありがとうございます。それはとても役に立ちました –

関連する問題