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

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
社会人学習講座 「Javaプログラミング概論」
プログラミング基礎I(再) 山元進.
Applet 岡部 祐典 鈴木 敬幸.
第4回 iPhoneアプリ開発勉強会 Objective-C 基礎講座 -クラス- 鷲見政明.
Servlet J2EE I 第8回 /
アルゴリズムとデータ構造1 2007年6月12日
Iアプリプログラミング その1  鳥居秀徳.
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
JavaServlet&JSP入門 01K0018 中村太一.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
アルゴリズムとプログラミング (Algorithms and Programming)
社会人学習講座 「Javaプログラミング概論」
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
オブジェクト指向入門.
応用プロジェクト後半 第2回(11/26) 担当:奥田教授
RMI ソフトウェア特論 第6回 /
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
プログラミング演習3 第2回 GUIの復習.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
応用プロジェクト後半 第3回 (12/15) 担当:奥田先生
第6回 2007年6月1日 応用Java (Java/XML).
ネットワークプログラミング論 平成28年11月7日 森田 彦.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
プログラミング演習3 第2回 GUIの復習.
東京大学人間環境学専攻 奥田・橋本研究室 修士1年 相良 光志
応用プロジェクト後半 第2回(12/11) 担当:奥田教授
C#言語ソースプログラムの原型 C言語 C#言語 Hello World! Hello Students! オマジナイ! 適当なクラス名
応用プロジェクト後半 第2回(12/5) 担当:奥田教授
Java8について 2014/03/07.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
応用プロジェクト後半 第2回 (12/1) 担当:橋本先生
応用プロジェクト後半 第2回 (12/7) 担当:橋本先生
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
応用プロジェクト後半 第3回 (12/14) 担当:奥田先生
50年後の未来を予測する -新技術の普及過程モデリング-
オブジェクト指向プログラミング クラス 継承
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
応用プロジェクト後半 第5回 (1/5) 担当:奥田・橋本
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
応用プロジェクト後半 第6回 (1/20) 担当:奥田
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
応用プロジェクト後半 第5回 (12/17) 担当:奥田教授
プログラム理解のための 付加注釈 DocumentTag の提案
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

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

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

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

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

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

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

SampleSimulation6の結果

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"); } これらは何者か?

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…具体的な記述を行わずに共通部分だけ設計して、詳細は各々のサンプルで

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"); }

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

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

Javaの強い人になるために Javaのオブジェクト指向入門 Java Code Conventions デザインパターン http://www.kab-studio.biz/Programing/OOPinJava/ Java Code Conventions http://www.oracle.com/technetwork/java/codeconventions-150003.pdf デザインパターン http://www.techscore.com/tech/DesignPattern/index.html/ Reference http://www.javaroad.jp/index.htm http://www.oracle.com/technetwork/jp/java/javase/documentation/api-jsp-316041-ja.html

SampleSimulation7 こんな結果が出てくる

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");

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); ④シミュレーション実行(サービス関数、戦略、初期状態) あとは結果出力のためのなんたら

SampleSimulation9 結果

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

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

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

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

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