[[ja/Projects/i-wat]] #contents * 方針 [#ub788d17] -なるべく単純化したモデルを用いることで、通貨システムの本質的な性質の理解の一助とする。 * モデル [#j71bc76b] ** 世界 [#sfe023c3] -人口: 2,500人を標準とする。 -初期状態 --スケールフリーネットワーク。 --最小リンク数=3 (生成アルゴリズムの都合上、それを下回る場合もあり) --リンクを辿って互いに到達できない 2者は存在しない。 --初期状態は疑似乱数の seed を同一値にすることで再現可能。 -時間/ラウンド --時間はラウンド毎に進む。 --500ラウンドを標準とする。 --100ラウンド毎にシミュレーション結果が出力される。 -資源 --100種類 (標準値) の資源がある ---食物、労働力、情報等を代表します。 --参加者は各資源を所有でき、所有の量は実数により表現される。 ---基本的に、1.0 あれば、その資源については足りることにします。 --種類毎に固有の生産性 (ラウンド当たりの増加高) と消費率 (ラウンド当たりの減少率) を持てる。 ---資源の消費率を 1.0 (100%) にすることにより、労働時間等、その場限りのものを表現できます。 ---資源の生産性を無限大 (あるいは極めて大) にすることにより、情報のように、生産コストが極端に低いものを表現できます。 --各参加者は、生産を担当する資源 (自己生産物) を持つ。その資源は、取引により他の参加者に売ることができる。 -通貨 --通貨の価値と資源の量は 1:1 で対応する。 ---ある資源を 1.0 購入するためには、1.0 の価値の通貨が必要となる。 --参加者全員が銀行に口座を持ち、銀行から借りられる口座変動式の通貨を利用できる。 ---口座の残高は 0.0 から始まる。 --自律的な通貨である WAT/i-WAT が利用できる。 ---WAT/i-WAT の基本的な仕組みであるワットコアについては http://www.media-art-online.org/iwat/help/core.html を参照。 ** welfare (富/幸福度) [#d4d474ff] -参加者が、そのラウンドまで、どれだけ豊かな生活を送ってきたかを表す値 -1ラウンド毎に計算 -各自が所有している資源の量を、各資源最大 1.0 (超える場合は切り捨て) として足し合わせた値の累積 --各資源については 1.0 で足りる (としている) ため切り捨てます -通貨システムのゴールのひとつは、交換を促進する結果、welfare が高く、かつ格差が生じないようにすること ** credit/debit (購買力) [#bb500e2c] -その時点で、参加者が潜在的に購買できる資源の量を表す (負債の最大値に到達するまで購買は可能) :貸し付け|取得した券の時価 + 銀行口座の正の残高 :負債|振り出した券の時価 + |銀行口座の負の残高| credit/debit = 貸し付け - 負債 ** ラウンドと取引 [#a8ca1c41] :積極取引|相手を見つけて資源を購入すること。ラウンド当たりの最大回数は参加者型により決められる (典型的には 3)。 :消極取引|相手の要求に応じて資源を販売すること。ラウンド当たりの制限はない。 *** 毎ラウンドの処理 [#q17d957e] -全員が、最大回数分、積極取引を試みる。 --各ラウンドで、参加者のターンはランダムに巡る。 -典型的な参加者型の挙動としては、参加者は自分から 2ホップまでの範囲にいる相手をランダムに選択し、取引を試みる (ほとんどの場合 1ホップ先の相手を選び、2ホップ先の相手を選ぶ確率は参加者型毎に指定される)。 -1回の取引では、相手の自己生産物を 1.0 購入する。 -ラウンド終了後、参加者型により定められる利率に応じて、銀行口座の残高は変化する。 -負債が最大以上になっていたら、参加者型により定められる債務不履行の確率に応じて、破産する者が出る。 *** 出力ラウンドの処理 [#u198b301] -参加者型毎に、平均 welfare を計算する。 :型シフト|参加者型毎に指定された確率に従い、参加者は平均 welfare が高い方の参加者型に変化する (有利な戦略に鞍替えする)。 -出力する情報は以下の通り: --累積取引数 --累積積極取引数の分布 --累積消極取引数の分布 --welfare (富) の分布 --credit (購買力) の分布 --credit-welfare(-links) の分布 --リンク数の分布 --ネットワーク構造 ** 破産 [#v102587d] -次の処理を行う: --その参加者の知人関係のリンクをクリアする。 --その参加者をランダムな相手に繋ぐ。 --銀行口座はゼロにクリアされる。 --振り出した (i-)WAT 券は、貸付人 (参加者リストの先頭の者) に引き継がれる。 --取得した (i-)WAT 券は、清算されたのと同じ扱いとなる。 -すなわち、人間関係を清算して、再出発する ** 参加者型 [#w0beac4c] 以下の情報から成る: -元型 (下の DefaultParticipant等の各クラス) -銀行口座の正の残高に対する利率 -銀行口座の負の残高に対する利率 -振り出す増価型券の最高値の割合 (例: 2.0 ← 200% まで増大) -振り出す減価型券の最低値の割合 (例: 0.5 ← 50% まで減額) -振り出す券の増減率 -負債の最大値 --銀行口座に適用される利子や、(i-)WAT 券の振出人役務の引き継ぎ等により、負債がこの値を超える可能性はある -自己生産物のラウンド当たりの消費率 (何% 消費されるか) --その資源が他の型の参加者に所有される場合も、この消費率が適用される -自己生産物のラウンド当たりの生産高 (どのくらいの量が足されるか) -債務不履行率 -型シフトを起こす確率 -2ホップ目まで取引相手を探しに行く確率 -ラウンド当たりの積極取引の最大数 -この型の参加者の、全体に対する割合 *** 元型: 省略型 (i-WAT ユーザ型; DefaultParticipant) [#uc243eb7] :通貨の利用|i-WAT券のみを利用する。 :積極取引の条件|相手の自己生産物の所有量が 1.0以上で、その資源の自分の所有量が 1.0 に満たないのであれば、取引を行う。 :相手の探索|1ホップ目をランダムに選び、2ホップ目を探す率に応じて、その相手の先をランダムに選ぶ。選ばれた相手が自分であれば失敗。 :振り出しの条件|負債の最大値に至らないのであれば、振り出す。 ::増価型券の振り出し方法|必要な額を最高値の割合 (例: 2.0) で当分した複数枚を振り出す。これにより、1枚の額面が 1.0 を超える (と、使用できなくなる) ことを防ぐ。 :使用する券の選択|所有する券のリストの先頭から、必要額を超えない範囲で追加して選択していく。 :取引相手へのリンクの追加|取引相手へのリンクがなければ追加する。 :振出人へのリンクの追加|i-WAT券の使用時、受取人にその券の振出人へのリンクがなければ追加する。 *** 元型: 清算指向型 (RedeemingParticipant) [#q77d8730] :清算取引の優先|使用する i-WAT 券を選ぶ際、清算取引になるものを優先的に選択する。 その他の振る舞いは省略型を踏襲する。 -相手が発券した券があれば使う、という行為の効果を他から切り出して測定するために用意した型。 *** 元型: 伸張指向型 (StretchingParticipant) [#g8d2a6e4] :チェインの長い券の優先|使用する i-WAT 券を選ぶ際、チェインの長い券を優先的に選択する。 その他の振る舞いは清算指向型を踏襲する。 -チェインの長い券を好んで使う、あるいは受け取る、という防衛行為の効果を他から切り出して測定するために用意した型。 *** 元型: 清算選択型 (SelectiveParticipant) [#h72cc35a] :振出人の優先|取引相手を選ぶ際、10% の確率で、所持している券の振出人からランダムに候補を抽出し、取引可能な相手ならばその参加者を選択する。 その他の振る舞いは伸張指向型を踏襲する。 -i-WAT における標準的な戦略を組み込んだ型として用意した。 *** 元型: WAT ユーザ型 (OriginalWatParticipant) [#gf1fb29b] :通貨の利用|WAT券のみを利用する。 :振出人へのリンクの不追加|WAT券の使用時、受取人に新たなリンクを追加しない。 その他の振る舞いは清算選択型を踏襲する。 *** 元型: 銀行ユーザ型 (BankingParticipant) [#e34bf2f4] :通貨の利用|銀行口座のみを利用する。 :借金|負債の最大値に至らないのであれば、銀行から借りる。 :i-WAT 最適化行動に合わせた調整|取引相手を選ぶ際、10% の確率で、リンク先からランダムに候補を抽出し、取引可能な相手ならばその参加者を選択する。 その他の振る舞いは省略型を踏襲する。 *** 元型: グローバル市場銀行ユーザ型 (GlobalMarketBankingParticipant) [#xe502c75] :相手の探索|全体からランダムに選ぶ。選んだ相手が自分であれば失敗。 :取引相手へのリンクの不追加|ネットワークは取引によって変化しない。 :i-WAT 最適化行動に合わせた調整|取引相手を選ぶ際、10% の確率で、ランダムに候補を抽出し、取引可能な相手ならばその参加者を選択する。 その他の振る舞いは銀行ユーザ型を踏襲する。 *** 元型: 銀行/WAT 併用ユーザ型 (BankingWatParticipant) [#o2baa205] :通貨の選択|相手が銀行ユーザ型であれば、銀行を利用して取引するが、口座の残高を決して負にしない。 その他の振る舞いは銀行ユーザ型および WAT ユーザ型を踏襲する。 *** 元型: 偽薬省略型 (i-WAT ユーザ型; PlaceboParticipant) [#xc3b575f] :ランダムなリンク|振出人へのリンクの代わりに、ランダムに選択された相手へのリンクを追加する。 その他の振る舞いは省略型を踏襲する。 -振出人がリンクに加わることの効果を測定するために用意した型。 *** 元型: 偽薬清算指向型 (PlaceboRedeemingParticipant) [#z5537407] :ランダムなリンク|振出人へのリンクの代わりに、ランダムに選択された相手へのリンクを追加する。 その他の振る舞いは清算指向型を踏襲する。 -振出人がリンクに加わることの効果を測定するために用意した型。 *** 元型: 偽薬伸張指向型 (PlaceboStretchingParticipant) [#a196cadb] :ランダムなリンク|振出人へのリンクの代わりに、ランダムに選択された相手へのリンクを追加する。 その他の振る舞いは伸張指向型を踏襲する。 -振出人がリンクに加わることの効果を測定するために用意した型。 *** 元型: 偽薬清算選択型 (PlaceboSelectiveParticipant) [#a196cadb] :ランダムなリンク|振出人へのリンクの代わりに、ランダムに選択された相手へのリンクを追加する。 その他の振る舞いは清算選択型を踏襲する。 -振出人がリンクに加わることの効果を測定するために用意した型。 *** 元型: 減価最適化型 [#od947e05] :減価型 i-WAT への最適化行動|指定された度合いに従って、最低値になるまでは清算取引を選択せず、損失の高い券を優先して選択する。 その他の振る舞いは清算選択型を踏襲する。 *** 元型: 増価最適化型 [#g964660d] :増価型 i-WAT への最適化行動|指定された度合いに従って、最高値になるまで券を使用せず、使用する際は清算取引を選択する。 その他の振る舞いは清算選択型を踏襲する。 *** 財の生産者 [#gee89b2e] -生産高: 3.0 -消費率: 0.1 (10%) 食糧などの財は、ある程度の生産性を持ち、備蓄が可能で、徐々に消費される。 *** 労働者 [#l65eb854] -生産高: 3.0 -消費率: 1.0 (100%) 労働時間は、ある程度、提供できるが、備蓄できない。 *** 情報販売者 [#c3158f0f] -生産高: ∞ あるいは 1000.0 程度 -消費率: 1.0 (100%) 情報は、非常に低いコストで生産 (コピー) されるが、消費も急速 (飽きられる) と見なす。 * シナリオとシミュレーション結果 [#nc35ccbd] ** 初期ネットワーク [#g6af3a6e] ** 基準: グローバル市場無利子銀行、債務不履行のリスク=0 [#wb995f0b] |平均 welfare|12654| ** 口座変動方式 (銀行, LETS) vs. WAT - あるいは何故、WAT を選択すべきか [#g101d698] *** LETS vs. WAT [#d11d7b50] ''LETS'' |平均 welfare|9675| |破産| 493件| ''WAT'' |平均 welfare|9761| |破産| 522件| *** 利子の影響 [#tdebd1b7] ''利子 1%'' |平均 welfare|5367| |破産|410件| *** 型シフトによる WAT 使用の普及 [#o1727174] ''WAT 併用型 50% 固定'' ''WAT 併用型 10% から型シフト可能'' |>|銀行ユーザ|h |最終比率|46%| |平均 welfare|2240| |>|WAT 併用ユーザ|h |最終比率|54%| |平均 welfare|5708| |>|合計|h |平均 welfare|5331| |破産| 339件| ** i-WAT 基礎データの取得 [#f195494b] *** i-WAT (w/ 最適化行動) [#q775d445] |平均 welfare|12461| |破産| 28件| *** 破産率の影響 (w/o 最適化行動) [#uac13c01] ''破産率 0.2%'' |平均 welfare|12153| |破産| 124件| ''破産率 2%'' |平均 welfare|9259| |破産|7616件| *** 清算指向による最適化 [#u9c79b60] *** 伸張指向による局所最適化 [#h453574e] *** 清算選択による最適化 [#n84d0985] ** 増減価型 i-WAT [#o3185459] *** 減価型 i-WAT の最適化戦略の検証 [#i5583152] *** 増価型 i-WAT の最適化戦略の検証 [#kfbe8230] ** 情報生産者と新しい経済 [#r1f90c6c] *** 財の生産者 vs. 労働者 vs. 情報販売者 [#ufc9ebbe] *** 情報の共有と減価型 i-WAT [#e8e14770] * シミュレータ [#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"