Download presentation
Presentation is loading. Please wait.
1
応用プロジェクト後半 第3回 (12/15) 担当:奥田先生
2
今後の予定 第1回(11/24) 環境構築 第2回(12/1) サンプル実行 第3回(12/15) サンプル実行
第1回(11/24) 環境構築 第2回(12/1) サンプル実行 第3回(12/15) サンプル実行 サンプル読解(長い)・最終テーマ案 第4回(12/22) SAGSの操作 データ探しの課題 第5回(1/5) 探したデータでSim. 第6回(1/20) 発表会 最終レポート 数枚。
3
課題について Sample9_FCVDiffussionSimulationを実行し、ソースの解説を つける
日本における自動車の普及予測(燃料電池自動車、ハイブ リッド車、ガソリン車、ディーゼル車、電気自動車)をMADSで 実装しようとするとき、自分なりのシミュレーションシナリオを 考えて、その際どんなデータが必要なのか考察 件名:応用プロジェクトレポート1 メール文面:学籍番号、名前 締切:12/29 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アプリケーションの実行設定を新たに作成(メイン・ 引数・クラスパス) ビルドパスの設定 Ctrl + F11
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
終わったら お疲れ様です 今日は終了です
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.