[[ja/Projects/i-wat]]

#contents

* モデル [#j71bc76b]

** 世界 [#sfe023c3]
-人口: 2,500人を標準とする。
-初期状態
--スモールワールド。
--参加者間のリンクは疎。
--最小リンク数=3
-時間/ラウンド
--時間はラウンド毎に進む。
--500ラウンドを標準とする。
--100ラウンド毎にシュミレーション結果が出力される。
-資源
--有限種類の資源がある。
--参加者は各資源を所有でき、所有の量は実数により表現される。
--種類毎に固有の生産性 (ラウンド当たりの増価高) と消費率 (ラウンド当たりの減少率) を持てる。
--各参加者は、生産を担当する資源を持つ。
-通貨
--通貨の価値と資源の量は 1:1 で対応する。
---ある資源を 1.0 購入するためには、1.0 の価値の通貨が必要となる。
--参加者全員が銀行に口座を持ち、銀行から借りられる口座変動式の通貨を利用できる。
--自律的な通貨である WAT/i-WAT が利用できる。
---WAT/i-WAT の基本的な仕組みであるワットコアについては http://www.media-art-online.org/iwat/help/core.html を参照。

** welfare (富) [#d4d474ff]
-1ラウンド毎に計算
-各自が所有している資源の量を、各資源最大 1.0 (超える場合は切り捨て) として足し合わせた値の累積

** credit/debit (購買力) [#bb500e2c]
:貸し付け|取得した券の時価 + 銀行口座の正の残高
:負債|振り出した券の時価 + |銀行口座の負の残高|

 credit/debit = 貸し付け - 負債

** ラウンドと取引 [#a8ca1c41]
:積極取引|資源の購入のこと。ラウンド当たりの最大回数は参加者型により決められる (典型的には 3)。
:消極取引|資源の販売のこと。ラウンド当たりの制限はない。

*** 毎ラウンドの処理 [#q17d957e]
-全員が、最大回数分、積極取引を試みる。
--毎ラウンド、参加者のターンはランダムに巡る。
-典型的な参加者型の挙動としては、参加者は自分から 2ホップまでの範囲にいる相手をランダムに選択し、取引を試みる (ほとんどの場合 1ホップ先の相手を選び、2ホップ先の相手を選ぶ確率は参加者型毎に指定される)。
-1回の取引では、ひとつの資源を 1.0 購入する。
-ラウンド終了後、参加者型により定められる利率に応じて、銀行口座の残高は変化する。
-負債が最大以上になっていたら、参加者型により定められる債務不履行の確率に応じて、夜逃げが行われる。

*** 出力ラウンドの処理 [#u198b301]
-参加者型毎に、平均 welfare を計算する。
-参加者型毎に指定された確率に従い、参加者は平均 welfare が高い方の参加者型に変化する。

** 夜逃げ [#v102587d]
-その参加者の知人関係のリンクをクリアする。
-その参加者をランダムな相手に繋ぐ。
-銀行口座はゼロにクリアされる。
-振り出した (i-)WAT 券は、貸付人 (参加者リストの先頭の者) に引き継がれる。
-取得した (i-)WAT 券はそのまま。

** 参加者型 [#w0beac4c]
以下の情報から成る:
-元型 (下の DefaultParticipant等の各クラス)
-銀行口座の正の残高に対する利率
-銀行口座の負の残高に対する利率
-負債の最大値 (銀行口座に適用される利子や、(i-)WAT 券の振出人役務の引き継ぎ等により、負債がこの値を超える可能性はある)
-担当生産物のラウンド当たりの消費率 (何% 消費されるか)
-担当生産物のラウンド当たりの生産高 (どのくらいの量が足されるか)
-夜逃げ率
-2ホップ目まで取引相手を探しに行く確率
-ラウンド当たりの積極取引の最大数
-この型の参加者の、全体に対する割合

*** 元型: 省略型 (i-WAT ユーザ型; DefaultParticipant) [#uc243eb7]
:通貨の利用|i-WAT券のみを利用する。
:積極取引の条件|相手の担当資源の所有量が 1.0以上で、自己の資源の所有量が 1.0 に満たないのであれば、取引を行う。
:相手の探索|1ホップ目をランダムに選び、2ホップ目を探す率に応じて、その相手の先をランダムに選ぶ。選ばれた相手が自分であれば失敗。
:振り出しの条件|負債の最大値に至らないのであれば、振り出す。
:取引相手へのリンクの追加|取引相手へのリンクがなければ追加する。
:振出人へのリンクの追加|i-WAT券の使用時、受取人にその券の振出人へのリンクがなければ追加する。

*** 元型: 清算指向型 (RedeemingParticipant) [#q77d8730]
:清算取引の優先|使用する i-WAT 券を選ぶ際、清算取引になるものを優先的に選択する。

その他の振る舞いは省略型を踏襲する。

*** 元型: 伸張指向型 (StretchingParticipant) [#g8d2a6e4]
:チェインの長い券の優先|使用する i-WAT 券を選ぶ際、チェインの長い券を優先的に選択する。

その他の振る舞いは清算指向型を踏襲する。

*** 元型: WAT ユーザ型 (OriginalWatParticipant) [#gf1fb29b]
:通貨の利用|WAT券のみを利用する。
:振出人へのリンクの不追加|WAT券の使用時、受取人に新たなリンクを追加しない。

その他の振る舞いは清算指向型を踏襲する。
*** 元型: 銀行ユーザ型 (BankingParticipant) [#e34bf2f4]
:通貨の利用|銀行口座のみを利用する。
:借金|負債の最大値に至らないのであれば、銀行から借りる。

その他の振る舞いは省略型を踏襲する。

*** 元型: グローバル市場銀行ユーザ型 (GlobalMarketBankingParticipant) [#xe502c75]
:相手の探索|全体からランダムに選ぶ。選んだ相手が自分であれば失敗。
:取引相手へのリンクの不追加|ネットワークは取引によって変化しない。

その他の振る舞いは銀行ユーザ型を踏襲する。

*** 元型: 銀行/WAT 併用ユーザ型 (BankingWatParticipant) [#o2baa205]
:通貨の選択|相手が銀行ユーザ型であれば、銀行を利用して取引するが、口座の残高を決して負にしない。

その他の振る舞いは銀行ユーザ型および WAT ユーザ型を踏襲する。

*** 元型: 偽薬省略型 (i-WAT ユーザ型; PlaceboParticipant) [#xc3b575f]
:ランダムなリンク|振出人へのリンクの代わりに、ランダムに選択された相手へのリンクを追加する。

その他の振る舞いは省略型を踏襲する。

*** 元型: 偽薬清算指向型 (PlaceboRedeemingParticipant) [#z5537407]
:ランダムなリンク|振出人へのリンクの代わりに、ランダムに選択された相手へのリンクを追加する。

その他の振る舞いは清算指向型を踏襲する。

*** 元型: 偽薬伸張指向型 (PlaceboStretchingParticipant) [#a196cadb]
:ランダムなリンク|振出人へのリンクの代わりに、ランダムに選択された相手へのリンクを追加する。

その他の振る舞いは伸張指向型を踏襲する。
*** 財の生産者 [#gee89b2e]
-生産高: 3.0
-消費率: 0.1 (10%)

*** 労働者 [#l65eb854]
-生産高: 3.0
-消費率: 1.0 (100%)

*** 情報販売者 [#c3158f0f]
-生産高: ∞
-消費率: 1.0 (100%)

* シミュレータ [#u53002a2]
- [[wija 開発環境]] で説明される Perforce depot からソースコードを取得可能。
- //depot/scm/main/java/org/media_art_online/iwatsim/...

** データ記述 (XML) [#qca22560]
- 主要な要素は以下の通り:
:<min-links/>|初期ネットワークにおける個体の推奨最小リンク数
:<population/>|人口
:<resources/>|資源の種類の数
:<rounds/>|ラウンド数
:<rounds-output/>|出力ラウンド数 (何ラウンド毎か)
:<random-seed/>|疑似乱数の種
:<type/>|参加者の型 (複数登場可能)
::<class-name/>|参加者型のクラスのフルネーム
::<suffix/>|出力ファイル名に用いる suffix
::<percentage/>|この型の参加者が全体に示す割合(%; 足して100になる必要がある)
::<max-trades-per-round/>|1ラウンド当たりの最大積極取引数
::<rate-new-partner/>|2ホップ先まで取引先を探しに行く確率
::<rate-default/>|夜逃げする確率
::<interest-credit/>|銀行口座の正の残高に対する利率
::<interest-debit/>|銀行口座の負の残高に対する利率
::<max-debit/>|負の残高の最大値
::<rate-consumption/>|担当する資源のラウンド当たりの消費率
::<rate-production/>|担当する資源のラウンド当たりの生産高
::<max-mot-ratio/>|増価型 (i-)WAT 券の初期額に対する最高値の割合
::<min-rot-ratio/>|減価型 (i-)WAT 券の初期額に対する最低値の割合
::<rate-variance/>|増減率
::<rate-mutation/>|他の有利な型にシフトする確率

- 例:

 <?xml version="1.0" encoding="UTF-8"?>
 <iwatsimp>
 <output-chains>chain-length</output-chains>
 <output-credit-distribution>credit-distribution</output-credit-distribution>
 <output-debit-total>total-debit</output-debit-total>
 <output-credit-welfare>credit-welfare</output-credit-welfare>
 <output-link-distribution>link-distribution</output-link-distribution>
 <output-link-distribution-initial>initial-link-distribution</output-link-distribution-initial>
 <output-network>network</output-network>
 <output-network-initial>initial-network</output-network-initial>
 <output-trades-accumulated>accumulated-number-of-trades</output-trades-accumulated>
 <output-trade-distribution-active>active-trade-distribution</output-trade-distribution-active>
 <output-trade-distribution-passive>passive-trade-distribution</output-trade-distribution-passive>
 <output-welfare-distribution>welfare-distribution</output-welfare-distribution>
 <min-links>3</min-links>
 <population>250</population>
 <resources>100</resources>
 <rounds>500</rounds>
 <rounds-output>100</rounds-output>
 <random-seed>31415926535897932</random-seed>
 <type>
 <class-name>org.media_art_online.iwatsim.PlaceboHedgingParticipant</class-name>
 <suffix></suffix>
 <percentage>100</percentage>
 <max-trades-per-round>3</max-trades-per-round>
 <rate-new-partner>0.2</rate-new-partner>
 <rate-default>0.02</rate-default>
 <interest-credit>0.01</interest-credit>
 <interest-debit>0.01</interest-debit>
 <max-debit>10.0</max-debit>
 <rate-consumption>0.1</rate-consumption>
 <rate-production>3.0</rate-production>
 <max-mot-ratio>2.0</max-mot-ratio>
 <min-rot-ratio>0.0</min-rot-ratio>
 <rate-variance>0.0</rate-variance>
 <rate-mutation>0.0</rate-mutation>
 </type>
 </iwatsimp>
** コマンド [#z4de9109]
 $ java -Xmx300M -jar iwatsim.jar [FILE]
 $ sort chain-length | uniq -c | sort -r > chain-length-distribution

** 出力ファイルと表示方法 [#b1cb3a90]
- '''n''' はラウンド
- 表示アプリケーションの説明がない場合は gnuplot

:chain-length-distribution|(i-)WAT券のチェイン長の分布
 > plot "chain-length-distribution" using 2:1

:initial-link-distribution, link-distribution-'''n'''|(初期)リンクの分布
 > plot "initial-link-distribution", "link-distribution-n",...

:network-'''n'''.net|ネットワーク (参加者間のリンク)
::Pajek|例: 以下のメニュー項目を利用
:::Net|→ Paths between 2 vertices → Distribution of Distances → From All Vertices
:::Draw|→ Draw

:welfare-distribution-'''n'''|welfare の分布
 > plot "welfare-distribution-n"

:credit-distribution-'''n'''|credit の分布
 > plot "credit-distribution-n"

:credit-welfare-'''n'''|credit welfare initial-links links の分布
 > plot "credit-welfare-n" using x:y
::2:1|welfare:credit
::3:1|initial-links:credit
::4:1|links:credit
::2:3|welfare:initial-links
::2:4|welfare:links

:total-debit-'''n'''|世界全体の負債
 > plot "total-debit-n"

:{active/passive}-trade-distribution-'''n'''|{積極/消極}取引数の分布
 > plot "{active|passive}-trade-distribution-n"

:accumulated-number-of-trades-'''n'''|取引数の累積
 > plot "accumulated-number-of-trades-n"

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS