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

質問 (解決済み)

[artisocモデル] Agt_Initでのif構文での場合分けは可能か
質問者: tentenさん , 質問日時: 2020/12/10 09:18
エージェント(消費者)の種類をUniv_Initで以下のように、2種類生成します。
その際、Agt_Initではその2種類についてif構文で以下のように場合分けをして初期設定を行いたいのですが、if構文のところが動作していないことがわかりました。
Agt_Initではif構文は使えないのでしょうか。

Univ_Init{
DIm i As Integer
Dim one AS Agt
Dim consumer As Agtset

//消費者の誕生
For i = 0 To Universe.消費者数 - 1
one = CreateAgt(Universe.二次元空間.consumer)
If Rnd() < 0.319 Then //31.9%の確率で食経験あり,繰り返し消費なし
one.experience = Color_Red
Else
one.experience = Color_Black //68.1%は食経験なし
End if
Next i
}

Agt_Init{
My.info3 = 0
My.意識 = Rnd() * 2 - 1
My.年代 =CInt( Rnd() * 5) //20代;1ー60代以上;5
My.能動的回数 = 0
My.受動的回数 = 0
ClearAgtset(My.target)

//ここから下が動いてない
If My.experience == Color_Red Then
My.info1 = RNd() * 1 + 1
My.info2 = Rnd() * 2 - 1
My.視野 = Rnd() * 1 + 10
My.attitude =0.5 * (My.info1 + My.info2 + My.info3 + My.意識) //検討
My.効用 = (0.247 * CDbl(My.info3) + 0.305 * CDbl(My.能動的回数) + 0.680 * CDbl(My.受動的回数) + 0.400 * (My.年代) -3.011)

Elseif My.experience == Color_Cyan Then
My.info1 = Rnd() * 4 - 3
My.info2 = Rnd() * 4 - 3
My.attitude =0.1 * (My.info1 + My.info2 + My.info3 + My.意識)
My.視野 = Rnd() * 1

End if
}



▼解決した回答


Agt_Initにてif構文は使えます。

ソースコードによると、
Univ_Initでconsumerを生成してますが、CreateAgtを実行した時点でAgt_Initが走ります。

解決策ですが、Agt_Initに記述している変数の初期化部分を、Univ_Initにコピーしていただくとよいです。

回答者: m.tamada さん , 回答日時: 2020/12/10 10:31

▼ 全ての回答


Agt_Initにてif構文は使えます。

ソースコードによると、
Univ_Initでconsumerを生成してますが、CreateAgtを実行した時点でAgt_Initが走ります。

解決策ですが、Agt_Initに記述している変数の初期化部分を、Univ_Initにコピーしていただくとよいです。

回答者: m.tamada さん , 回答日時: 2020/12/10 10:31



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