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

質問  (回答受付中)

[artisocモデル] println()について
質問者: shunさん , 質問日時: 2019/01/23 13:39
print㏑()で順番を入れ替えたら値が変わることがあるのですが、なぜでしょうか。

println(my.Direction)
println(universe.terminal.direction)

println(universe.terminal.direction)
println(my.Direction)
では違う結果が出てきます。
directionは、自分で作った変数です。



▼ 全ての回答


全体の構成がわからないのではっきり言えないのですが、どこかでdirectionの値を書き換えているのではないでしょうか?

実行中の変数の値を表示するパラメータ情報画面([メニュー] -> [パラメータ情報画面]で表示されます)があります。マップ上でエージェントを右クリックすると、クリックされたエージェントの現在のパラメータがパラメータ情報画面に表示されますので、どこで値が書き換わっているか調査すると原因がわかるかもしれません。

回答者: ObiWan さん , 回答日時: 2019/01/24 09:16
デバックで調べたところ,gethistory(direction,1)で値が常に0.701487となっていました.
いろいろ試行錯誤しましたが,値が常に0になるなど,ふさわしい値が得られませんでした.また,今回だけでなくgethistory()を用いた時に思った値が得られないことがほとんどです.gethistory()を用いる際に注意すべき点などございましたら,ご教授ください.

回答者: shun さん , 回答日時: 2019/01/25 14:37
1.GetHistory関数を使用する際に、変数のプロパティダイアログで記憶数を1以上に設定する必要があります。これは設定されているでしょうか?

(ツリーの変数を右クリック->プロパティで変数のプロパティダイアログがでてきます。マニュアルの22ページ 変数のプロパティ「記憶数」に詳しい説明があります。)

2.gethistory(direction,1)で参照しているdirectionはローカル変数でしょうか?
ローカル変数は毎ステップ変数の定義がなされるので、GetHistoryはできません。

また、エージェント変数の場合はGetHistory(My.direction, 1)のように書く必要があります。

回答者: ObiWan さん , 回答日時: 2019/01/25 16:06
現在,
universe.port.direction = gethistory(my.direction,1)
という様に,現在,universe.port.directionの中に1step前のdirectionを格納したいと考えています.
そこで,次元数を1にすべきはuniverse.port.directionの方ですか、それともmy.directionの方でしょうか。
universe.port.directionの次元数は1にしてありますが,my.directionの方ならば,設定方法を教えてください.

回答者: shun さん , 回答日時: 2019/01/25 16:50
GetHistoryで過去の値を取りたい変数の「記憶数」に1を設定する必要があります。質問のコードですと、my.directionに設定します。

先ほど書いたとおり、
ツリーの変数を右クリック->プロパティで変数のプロパティダイアログがでてきます。マニュアルの22ページ 変数のプロパティ「記憶数」に詳しい説明がありますのマニュアルを読んで設定してみてください。

ライフゲームのサンプルソースでGetHistoryを使っています。
Universe.Lattice.Cell.Stateに記憶数1を設定していますので、参考にしてください。
http://mas.kke.co.jp/modules/tinyd4/index.php?id=36

回答者: ObiWan さん , 回答日時: 2019/01/25 16:58



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