現在位置: ホーム その他 講義関連 FY2011 交通シミュレーション特論

「交通シミュレーション特論」講義に関する情報一覧

講義の概要,マテリアルへのリンクなど

目次

この講義に関する「公式情報」

より私的な講義の概要説明

  • 大学院講義です。シミュレーションによる交通システムの評価手法を体得してもらうことを目指しています。
  • ある時期までは「プログラムを作る」を目標にしていたのですが,ウィンドウズの普及でプログラミングということが身近でなくなったおかげ(??)か,あまりに単位修得にいたる者の割合が少ないので,昨年度からは大幅に形式を変更し,プログラムを「作る」よりは「使う」ほうを主な目標にしました。体得してもらう,という部分は変更なしのつもりです。
  • ただし,「作る」ほうも,将来何らかの形で関わる方は多いと思われますので,そのようなときに役立つさまざまな知識は講義で提供することにしています。

マテリアルへのリンク

  • ここにあるプログラムの利用条件は,RTSS のそれに準じます。

RTSS-Sujic-6.0.0a1.tar.bz2

  • ソースコード一式:RTSS-Sujic-6.0.0a1.tar.bz2
  • 添付文書: RTSS-Sujic-6.0.0a1.pdf
  • Dijkstra-demo2 をもとに,ダイヤ評価ツールとしてかなり完成版に近づいたバージョンです。詳細は添付文書をご覧ください。2011年の講義のレポート課題もここに書いてあります。

Dijkstra-demo2.tar.gz

  • ソースコード一式 Dijkstra-demo2.tar.gz
    • 注 (2010. 12. 10): 上記ソースコードを更新しています。GCC 4.5 (MinGW / MSYS 最新版をダウンロードすると入れられるもの) を使うと,エラーのためコンパイルができない問題がありました。これを解消したものです。
  • デモに使用したプログラムです。
  • ソースコード一式を開くと,ひとつのディレクトリができ,そこにいくつかのファイルが存在しているはずです。
  • このプログラムが行うことは,基本的に講義第5~8回のなかで紹介した demo5.cc と同じことをしますが,データがソースコードのなかではなく,XML データファイルにより記述される点が異なります。
  • このプログラムをコンパイルする場合には PCRE (Perl Compatible Regular Expression) ライブラリが前もってインストールされて,使える状態になっていることが必要です。ライブラリはここからダウンロードできます。最新版のソース(pcre-8.10.tar.gz とか pcre-8.10.tar.bz2 とか) をとってきて,展開すると,ひとつのディレクトリができ,そこに関係するファイル一式ができます。そのディレクトリに移動し,インストールのやり方を書いた文書に従ってコンパイル・インストールしてください。
  • これを g++ を用いてコンパイルする場合,たとえば次のようにすればよいでしょう:
  • g++ -O2 RS_Object.cc RS_XmlReader.cc Sujic_Weight.cc X_Cycletime_Initialiser.cc X_OD_Station_Creator.cc X_Simple_CTI_Creator.cc X_SpaceTimeNode.cc X_Station.cc X_Station_Creator.cc X_SujicDemo_Main.cc X_Train.cc X_Train_Creator.cc rtss_path.cc tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp -lpcre -o sujic_demo

  • こうしてできた sujic_demo(.exe) を用いて,当該ディレクトリにあるXML設定ファイル data.xml を読み,シミュレーションを実行することができます。以下のようにしてください:
  • sujic_demo data.xml > world.log 2>&1

  • こうすると world.log というログファイルが生成されます。これをエディタ等で開き,なかみを確認してください。
  • 中身の異なるデータファイルを新たに作成し,上記の手順でシミュレーションを繰り返し,プログラムが「正しく」動作していることを確認してください。

Dijkstra-demo.tar.gz

  • ソースコード一式 Dijkstra-demo.tar.gz
  • デモに使用したプログラムです。
  • ソースコード一式を開くと,ひとつのディレクトリができ,そこにいくつかのファイルが存在しているはずです。
  • 5つのプログラム demo1.cc, demo2.cc, demo3.cc, demo4.cc, demo5.cc があります。どれも独立のプログラムで,ヘッダファイル RS_FHeap.hh および RS_Dijkstra.hh を利用します。
  • これらを g++ を利用してコンパイルする場合,たとえば次のようにすればよいでしょう。以下の例では demo1.cc について記述していますが,demo2.cc 以下についても同様にできるはずです:
  • g++ -O2 demo1.cc -o demo1

  • プログラム demo1.cc は,無向グラフにおいて,弧に非負の整数の重みを与え,Dijkstra 法により最短経路を求めます。グラフなどの必要なデータはすべてソースコード内に記述されています。
  • プログラム demo2.cc は,demo1.cc と同様ですが,弧に与える重みが整数ではなく,Sujic_Weight というクラスになっています。Sujic_Weight クラスの宣言や実装もこの demo2.cc に含まれています。グラフなどの必要なデータは demo1.cc と同様すべてソースコード内に記述されています。
  • プログラム demo3.cc では,demo2.cc で用いた Sujic_Weight をそのまま用い,さらに列車ダイヤをデータとして与えることができるよう,列車を表す X_Train クラス,駅を表す X_Station クラス,および駅における「時空ノード」を表現する X_SpaceTimeNode クラスなどを宣言・実装しています。これらのクラスを用いて列車ダイヤを記述した後,ある駅にある時刻に到着した乗客が別な駅にどのような列車を乗り継いでたどり着くのが最適かを Dijkstra 法によって求めます。駅や列車,そして乗客の到着時刻・到着駅などの必要なデータは,すべてソースコード内に記述されています(列車データの半分ほどがコメントアウトされていることに注意)。
  • プログラム demo4.cc では,demo3.cc をもとに列車周期の概念を導入し,同じ周期で多数の列車が走る路線のシミュレーションを容易にしました。
  • プログラム demo5.cc は,demo4.cc をもとに大幅なコードの追加を行い,乗客の列車等への割り付けまでを行うことができるプログラムとしました。
  • これらのプログラムをコンパイルし,どのような動作をするか確認してください。また,プログラムソースに書かれたデータを変更し,実行してみてください。

TalkingAnimals.tar.gz

  • ソースコード等一式 TalkingAnimals.tar.gz
    • 注 (2010. 12. 10): 上記ソースコードを更新しています。GCC 4.5 (MinGW / MSYS 最新版をダウンロードすると入れられるもの) を使うと,エラーのためコンパイルができない問題がありました。これを解消したものです。
  • デモに使用したプログラムです。
  • ソースコード等一式を開くと,ひとつのディレクトリができ,そこにいくつかのファイルが存在しているはずです。
  • そのディレクトリにあるソースファイルのうち,tinyxml.h, tinyxml.cpp, tinyxmlparser.cpp, tinyxmlerror.cpp の4ファイルは,Tiny XML ライブラリ (http://www.grinninglizard.com/tinyxml/) として配布されているものです。このうち tinyxml.h については,その冒頭部に RTSS-specific changes とコメント行で示した部分について,改変(追加)を行っています。Tiny XML ライブラリのライセンスは,Zlib ライセンスです。その詳細については,これらのファイルの冒頭部のコメント行をご覧ください。
  • このプログラムをコンパイルする場合には PCRE (Perl Compatible Regular Expression) ライブラリが前もってインストールされて,使える状態になっていることが必要です。ライブラリはここからダウンロードできます。最新版のソース(pcre-8.10.tar.gz とか pcre-8.10.tar.bz2 とか) をとってきて,展開すると,ひとつのディレクトリができ,そこに関係するファイル一式ができます。そのディレクトリに移動し,インストールのやり方を書いた文書に従ってコンパイル・インストールしてください。
  • testTalkingAnimal.exe(マイクロソフト・ウィンドウズの環境において。Linux などだと最後の .exe はつかないと思います)を生成するには,以下のファイルをすべてコンパイル・リンクすればよいでしょう。
    • RS_Object.cc
    • RS_XmlReader.cc
    • Test_TalkingAnimalContainer.cc
    • Test_TalkingAnimals.cc
    • Test_TalkingCat_Creator.cc
    • Test_TalkingDog_Creator.cc
    • Test_TalkingHuman_Creator.cc
    • rtss_path.cc
    • testTalkingAnimalsMain.cc
    • tinyxml.cpp
    • tinyxmlerror.cpp
    • tinyxmlparser.cpp
  • g++ を使う場合,当該ディレクトリにおいて以下のようにすればよいでしょう:
  • g++ -O2 RS_Object.cc RS_XmlReader.cc Test_TalkingAnimalContainer.cc Test_TalkingAnimals.cc Test_TalkingCat_Creator.cc Test_TalkingDog_Creator.cc Test_TalkingHuman_Creator.cc rtss_path.cc testTalkingAnimalsMain.cc tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp -lpcre -o testTalkingAnimal

  • できあがった testTalkingAnimal(.exe)を実行するとデモが行えます。コマンド行引数として talking-animal-without-tiger.xml を指定してください。次のように:
  • testTalkingAnimal talking-animal-without-tiger.xml

  • このディレクトリには,ほかにも XML ファイルがあります。しかし,上記のようにコンパイルすると,ほかの .xml ファイルは読めません。これは,Test_TalkingTiger オブジェクトに関するコードが含まれていないからです。
  • Test_TalkingTiger.h と Test_TalkingTiger_Creator.cc を「加えて」やれば,ほかの XML ファイルも読むことができるようになります。このようにコンパイルすればよいでしょう (ハイライト部分が追加すべきファイル名です):
  • g++ -O2 RS_Object.cc RS_XmlReader.cc Test_TalkingAnimalContainer.cc Test_TalkingAnimals.cc Test_TalkingCat_Creator.cc Test_TalkingDog_Creator.cc Test_TalkingHuman_Creator.cc Test_TalkingTiger_Creator.cc rtss_path.cc testTalkingAnimalsMain.cc tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp -lpcre -o testTalkingAnimal

  • このようにして生成した testTalkingAnimal(.exe)であれば,残るふたつの .xml も読むことができます。
  • 読み込ませる XML ファイルを変更したり,新たなクラスを追加したりしてみてください。
« 2024 年 3月 »
3月
12
3456789
10111213141516
17181920212223
24252627282930
31