Presentation is loading. Please wait.

Presentation is loading. Please wait.

応用プロジェクト後半 第3回 (12/14) 担当:奥田先生

Similar presentations


Presentation on theme: "応用プロジェクト後半 第3回 (12/14) 担当:奥田先生"— Presentation transcript:

1 応用プロジェクト後半 第3回 (12/14) 担当:奥田先生

2 今後の予定 第1回(11/30) 環境構築 第2回(12/7) サンプル実行 第3回(12/14) サンプル実行
第1回(11/30) 環境構築 第2回(12/7) サンプル実行 第3回(12/14) サンプル実行 サンプル読解(長い)・最終テーマ案 第4回(12/21) SAGSの操作 データ探しの課題 第5回(1/11) 探したデータでSim. 第6回(1/16) 発表会 最終レポート 数枚。

3 課題について(レポート1) 提出先:徳永(tokunaga@multi.k.u-tokyo.ac.jp)
問1: Sample9_FCVDiffussionSimulationを実行し、ソースの解説をつける 問2 日本における自動車の普及予測(燃料電池自動車、ハイブリッド車、ガ ソリン車、ディーゼル車、電気自動車)をMADSで実装しようとするとき、 自分なりのシミュレーションシナリオを考えて、その際どんなデータが必 要なのか考察  件名:応用プロジェクトレポート1 メール文面:学籍番号、名前  締切:12/28 23:59  分量:A41~2枚程度 ファイル名:応用プロジェクトレポート1_学籍番号_名前

4 本日の内容 SampleSimulation 6,7,9 を実行,中身を読む プログラムの簡単な解説
資料 (下記ページからmanual3.doc) tokyo.ac.jp/lectures/pukiwiki/index.php?FrontPage プログラムの簡単な解説 簡単な問題を出すのでコーディングして下さい(これが終 われば帰ってよし) 暇な人はサンプル9の読解(課題)へ

5 詳しく知りたい人 mads-○×.jar/ sags-○×.jarファイルを解凍してeclipse 等で見てみると継承関係とかオーバーライド関係とか、 どのクラスのどのメソッドを使ってるのかわかりますよ Manual3.doc にも入手方法は書いてある。

6 作業 Manual1.docに倣い、Sample6,7,9を実行 読解の課題もあるので簡単にプログラムの解説もします
SAGS,Eclipse起動 Tutorialからサンプルをコピペ Javaアプリケーションの実行設定を新たに作成(メイン・ 引数・クラスパス)

7 SampleSimulation6の結果

8 SampleSimulation6 これらは何者か?
public class Sample6_Networks extends ASimulationAgent { public void doWork(){ NetworkGenerator gridGenerator = new TwoDimLatticeGenerator(5, false); ServiceNetworkFunction snfGrid = gridGenerator.generateNetwork(); snfGrid.plot(0, "2D Grid"); ServiceNetworkFunction snfSmWorld = (new WattsSmallWorldNetworkGenerator(25, 0.1, 4)).generateNetwork(); snfSmWorld.plot(0, "Small world network"); }

9 ASimulationAgent - madsで中核を担うクラス
public abstract class ASimulationAgent extends Agent{ 抽象クラスASimulationAgentはJADEのAgentクラスを継承している (参考:JavaAgentDEvelopmentFramework ⇒ dade.tilab.com) public abstract void doWork();   抽象メソッドdoWork()は定義・呼び出し方だけ決めてある。中身は空っぽ。 実行用クラス。Thread実行にはrun()メソッドが中で必要 class WorkThread extends java.lang.Thread{ public void run(){ doWork(); } 継承とは?…サブクラスはスーパークラスの変数定義やメソッドなどを受け継ぐ。 抽象クラスASimulationAgent…具体的な記述を行わずに共通部分だけ設計して、詳細は各々のサンプルで

10 SampleSimulation6 残りの部分
public class Sample6_Networks extends ASimulationAgent { public void doWork(){ NetworkGenerator gridGenerator = new TwoDimLatticeGenerator(5, false); ServiceNetworkFunction snfGrid = gridGenerator.generateNetwork(); snfGrid.plot(0, "2D Grid"); ServiceNetworkFunction snfSmWorld = (new WattsSmallWorldNetworkGenerator(25, 0.1, 4)).generateNetwork(); snfSmWorld.plot(0, "Small world network"); }

11 SampleSimulation6 NetworkGenerator gridGenerator = new TwoDimLatticeGenerator(5, false); ①参照型変数の型はNetworkGenerator,二次元格子クラスのインスタンス化 TwoDimLatticeGeneratorはinterface NetworkGeneratorをimplementsしている, 抽象メソッドgenerateNetwork()の中身を定義している ServiceNetworkFunction snfGrid = gridGenerator.generateNetwork(); ②ネットワーク生成 edu.uci.ics.jung.random.generatorsから。 om/generators/Lattice2DGenerator.java snfGrid.plot(0, "2D Grid"); ③ ServiceNetworkFunction クラス中のplotで描画 mads.plot.ServiceFunctionPlotにスーパークラスがある 格子サイズ,円形にするか否か

12 ネットワークモデルについて詳しく知りたい人
増田直紀,今野紀雄,“複雑ネットワーク 基礎から応用まで”, 近代科学社,(2010) グラフ理論の基礎的な部分から始まり、様々なネットワークモ デルが紹介されている。 スモールワールドはミルグラムの実験に見る6次の隔たり、 スケールフリーはBAモデルのような次数分布のべき則

13 Javaの強い人になるために Javaのオブジェクト指向入門 Java Code Conventions デザインパターン
Java Code Conventions デザインパターン Reference ja.html

14 SampleSimulation7 こんな結果が出てくる

15 SampleSimulation7 中身 ServiceNetworkFunction snfGrid = (new TwoDimLatticeGenerator(N, false)).generateNetwork(); int[] initialState = RandomInitialState.generateArray(N*N, new int[]{-1, 1}, new int[]{50,50}); Strategy isingStrategy = new Ising(Temperature); SocialInteractionSimulation isingSimulation = new SocialInteractionSimulation(snfGrid, isingStrategy, initialState, null); SocialInteractionSimulationResult result = isingSimulation.runRandomized(0, 1000, 1); ServiceFunction sfSpinDown = result.getStateEvolution(-1); sfSpinDown.plot("Percent (%)", "Spin-down evolution");

16 SampleSimulation7 中身 ServiceNetworkFunction snfGrid = (new TwoDimLatticeGenerator(N, false)).generateNetwork(); ①前サンプルと同様にネットワーク生成 N*Nの二次元格子 int[] initialState = RandomInitialState.generateArray(N*N, new int[]{-1, 1}, new int[]{50,50}); ②初期状態を与える {-1,1}を半々の割合で。 Strategy isingStrategy = new Ising(Temperature); ③イジングモデルという物理モデルを選択‐元の状態と他の状態で隣接格子とやり 取りして得られるエネルギーが小さければ状態をかえる SocialInteractionSimulation isingSimulation = new SocialInteractionSimulation(snfGrid, isingStrategy, initialState, null); ④シミュレーション実行(サービス関数、戦略、初期状態) あとは結果出力のためのなんたら

17 SampleSimulation9 結果

18 SampleSimulation9 中身 52~150 パラメータの設定 158~297 sagsからデータ読み込み+整形
52~150 パラメータの設定 158~297 sagsからデータ読み込み+整形 301~343 PRODUCTS ガソリン車、ハイブリッド車、燃料電池車(FCV) 347~388 SUPPLIERS ガソリン車、ハイブリッド車、燃料電池車(FCV)、H2-station 391~483 CONSUMERS Rich , veryRich , EarlyAdopter , etc. WattsSmallWorldNetowork 483~502 SIMULATION ComplexInteractionSimulation(consumers, snfComsumers, suppliers, snfSuppliers) 505~ RESULTS

19 SampleSimulation9 中身 長いので頑張って読解してください
開発されたシステムにしてはかなり丁寧にコメントが書い てある方なので、英語を読めばある程度分かった気分に なれます。英語は誤字が比較的多い 「MADSに関する情報ページ」→「Download」→「MADS Source - ZIP archive」

20 問題1 Practice1_Statistics.javaを作成 Sample3のガウス分布(sf1)をプロット
ServiceFunctionを用いて傾き ,y切片0.020 の直線(sf2)をプロット 上記2つのServiceFunctionの差分(sf3=sf2-sf1)をプ ロット.(グラフタイトルもそれぞれ変更する) sf3の平均値,最小値をコンソールに出力 ※Gaussianの定義に注意

21 問題2 Practice2_NetworkGraphs.javaを作成 ServiceNetworkFunctionを用いる
KleinbergSmallWorldNetworkGenerator, EppsteinPowerLawGeneratorクラスを用いてそれぞ れのグラフを出力させる 引数は任意に指定してよい ※どうやらBAモデルは進化を使えなさそう edu.uci.ics.jung.random.generators

22 終わったら お疲れ様です 今日は終了です


Download ppt "応用プロジェクト後半 第3回 (12/14) 担当:奥田先生"

Similar presentations


Ads by Google