2017-02-12 1 views
0

私には2つの代理店、顧客、メーカーがあります。これらのカメにはいくつかの変数があり、それらのうちいくつかはグローバルに定義され、別のタイプのエージェントに割り当てることができます。私はこれを定義しました。年末に商品1の購入が商品2と3の両方よりも高い場合、その商品は3店舗に分配されます。問題は、ループが論理的に機能しないことです。レポーターが真実ではない間に、コマンドで定義されていることが起こっている!ループが論理的に機能しない場合! in netlogo

ask manufacturers [ 
if (product1purchases > product2purchases) and (product1purchases > product3purchases) [ 



set storesavailability storesavailability + 3 
    set Brandd 1 
    set color red 
] 

ifで定義された条件が真でない場合、コマンドが実行されるのはなぜですか? ありがとう

答えて

0

これはありません。 、条件をチェックするには、この素晴らしい方法のため

ask manufacturers [ 
    let _cond ((product1purchases > product2purchases) and (product1purchases > product3purchases)) 
    print (word "_cond is " _cond) 
    if (_cond) [ 
    print (word "within branch, _cond is " _cond) 
    set storesavailability storesavailability + 3 
    set Brandd 1 
    set color red 
    ] 
] 
+0

おかげで、非常に奇妙なことは、私は一度プログラムを実行すると、その後、赤のエージェントをクリックしてくださいということです:あなたはこのように、print文を追加することによって、自分自身にそれを証明することができます私はそれらのいくつかのためにproduct1purchasesがproduct2purchaseよりも少ないことを知っています!またはproduct1の購入数がproduct2の購入数より少なかった。印刷物には、たとえばエージェントの一部(青色のもの)の状態は真だと言われていますが、それらのものについては、クリックして検査すると、私はこの不一致に気付きました! – Naha

+0

@Naha括弧内のコードを実行した時点で、各製造元に条件が適用されます。あなたの期待が間違っている理由を知るために、さらに多くの印刷ステートメントを追加することができます。 NetLogoがあなたに何を伝えているのかを正確に伝えていることを確信し、意図したものとは異なる何かをするように指示している場所を知ろうとします。 – Alan

+0

ありがとう、アラン。あなたが言ったことをすることによって、もしうまくいくのであれば、私は確実にすることができます。エージェントを検査するためのウィンドウが小さすぎたため、値を正しく読み取れませんでした。私はあなたが示唆した印字コードで数回試してみましたが、やっと間違いをしたことに気付きました!どうもありがとう :) – Naha

関連する問題