MAS コミュニティ
artisoc質問用掲示板(アーカイブ)
  
質問掲示板は移転しました。新掲示板はこちら

質問 (解決済み)

[artisocモデル] 渋滞吸収運転3
質問者: marshさん , 質問日時: 2017/09/29 20:25
dim stop_car as agt
ここでまず停止している車の変数stop_carを入手し、

if (My.Speed <= 0) then
My.Speed = 0
my.color=color_red
end if
色々な条件分岐の後、このようなとき、停止とし、colorをredとしています。


if (my.color==color_red) then
stop_car=stop_car+1
if(stop_car>=3) then
if(my.id==15)then
my.speed=my.speed*0.5
end if
end if
end if
現状は、これでプログラムするのですが、
これで実行する場合、1台赤が生まれた瞬間にプログラムが停止してしまいます。
また、stop_carを初期化しないで使用していますと出るのですが、
初期化とはどのようにしたら良いのでしょうか??



▼解決した回答


そもそも変数の型を理解していますか?
stop_carがインクリメントされているので(+1)、本来はstop_carに数字(整数)が入るはずです。しかしあなたは、stop_carをエージェント型として定義しています。
整数型にすべきです。
Dim stop_car As Integer
また、この値は毎ステップ、0に戻す必要がありますよね。
そのため、コードの初めに
stop_car = 0
とすべきです。
『人工社会構築指南』もう一度よく読んでみましょう。
プログラムの基本です。

回答者: igaguri さん , 回答日時: 2017/09/29 20:32

▼ 全ての回答


そもそも変数の型を理解していますか?
stop_carがインクリメントされているので(+1)、本来はstop_carに数字(整数)が入るはずです。しかしあなたは、stop_carをエージェント型として定義しています。
整数型にすべきです。
Dim stop_car As Integer
また、この値は毎ステップ、0に戻す必要がありますよね。
そのため、コードの初めに
stop_car = 0
とすべきです。
『人工社会構築指南』もう一度よく読んでみましょう。
プログラムの基本です。

回答者: igaguri さん , 回答日時: 2017/09/29 20:32



Copyright © KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
( 会社情報 情報セキュリティ・個人情報について )