The Multi-Agent Transport Simulation MATSimの第2章の(江端の個人的)翻訳

1. 第2章

この章では、MATSimのセットアップと実行方法、および基本的なシナリオを構築するための要件について説明します。最新の情報は、http://matsim.org、特にhttp://matsim.org/docs から入手できるかもしれません。

ソースコードを異なる計算環境に導入し、APIを通じてMATSimを拡張する方法については、第II部45章で説明します。APIによるMATSimの拡張については、第II部の第45章で説明しています。

とりあえず、纏めるのではなく、迷走の状況を記録することです。

1.1. MATSimの実行

1.1.1. MATSimのセットアップ

MATSimを実行するには、そのバージョンに準拠したJava SE (Java Standard Edition)をインストールする必要があります。MATSimの適切なバージョンに準拠したJava SE(Java Standard Edition)をインストールする必要があります。現時点では、Java SE 7です。

リリースのダウンロード また、MATSim を実行するために必要なものがすべて含まれた ZIP ファイル (通常 matsim-yy.yy.yy.zip というバージョン番号で指定されます) である、MATSim の正式なリリースが必要です。これは、http://matsim.org/downloads の「release」リンクからダウンロードすることができます。MATSimのディレクトリツリーで解凍してください。セクション2.1.2.に進みます。

ウェブ上のMATSimディレクトリツリー 開発版をご覧になりたい場合、または、ZIPファイルをインストールせずに をダウンロードしてインストールすることなく、いろいろなものを見ることができます。GitHubでは、MATSimのディレクトリツリーのルート(つまり、いわゆるcontribsやplaygroundsを除く)は、https://github.com/matsimorg/matsim/tree/master/matsim にあります。

ナイトリービルドのダウンロード もし、より最新の、しかし安定性の低いナイトリービルドを使いたいのであれば ビルドを使いたい場合は、同じ URL (Uniform Resource Locator) で http://matsim.org/ をダウンロードします。をダウンロードしてください。

Maven 比較的新しい機能として、MATSimをApache Mavenプラグインとして使用することができます。詳しくは http://matsim.org/downloads をご覧ください。Apache Mavenを使ったことがある人にとっては、おそらくこれが最良の選択肢でしょう。この場合 この場合、セクション5.1.1.4のシンプルなJavaプログラミングのアプローチで始めることができます。

1.1.1.1. MATSimの実行

この本が書かれた当時、ダブルクリックで起動できるのは夜間にビルドされたMATSimのJARファイルのみでした。図2.1に示すような最小限のGUI(Graphical User Interface)が開き、MATSimの実行を設定・起動することができます。この機能はバージョン0.8からのリリースで登場する予定です。

. リリース0.7では、MATSimはGUIを提供していないため、コマンドラインツールの扱いとアクセスが可能である必要があります。コマンドラインツールにアクセスできる必要があります。LinuxやMac OS Xではターミナル・アプリケーション、Microso WindowsではPower Shellやコマンド・プロンプトがこれにあたります。Microso Windowsでは、Power Shellまたはコマンドプロンプトを使用します。コマンドプロンプトで、次のコマンドを1行で入力します。 コマンドプロンプトで、次のコマンドを1行で入力します。ただし、正しいパスに置き換えてください:

LinuxやMac OS Xでは、次のようなものです。

java - Xmx512m -cp /path/to/ matsim.jar org.matsim.run.Controler /path/to/config.xml

Figure 2.1: Minimal MATSim GUI

Windowsの場合、コマンドの例は次のようになります。

java - Xmx512m -cp C:\MATSim\matsim.jar org.matsim.run.Controler C:\MATSim\input\config.xml

(ちなみに、江端の成功パターンは以下の通り)

java -jar matsim-14.0.jar

このようなコマンドは、複数の部分から構成されています。

1.1.2. MATSimの構成

MATSimはcongfigで設定され、ユーザーとMATSimの間の接続を構築し、シミュレーションの動作に影響を与える設定リストを含んでいます。

すべてのコンギュレーション・パラメータは、パラメータとパラメータ値の単純な組で構成されています。パラメータは論理的なグループに分けられ、あるグループには反復回数のようなControlerに関する設定があり、別のグループにはモブシム(mobsim)の終了時間のようなモブシムに関する設定があります。

第5章で示したように、多数のMATSimモジュールをMATSimに追加し、それぞれのconguration fileセクションを指定することでコンフィギュアすることができます。

利用可能なパラメータのリストと有効なパラメータ値は、リリースごとに異なる場合があります。

安定した状態を保つように努めていますが、新機能を中心としたソフトウェアの変更により、設定が変更されることがあります。を変更することがあります。現在使用しているバージョンで利用可能なすべての設定の一覧は、次のコマンドを実行してください。次のコマンドを実行してください。

java -cp /path/to/matsim.jar org.matsim.run.CreateFullConfig fullConfig.xml

このコマンドは、利用可能なすべてのパラメータとそのデフォルト値、および説明のコメントを含む新しい設定ファイル fullConfig.xml を作成し、どのような設定が利用可能かを簡単に確認できるようにします。特定の設定を使用したり変更したりするには、対応するパラメータを含む行を、シミュレーションするシナリオに特化した設定ファイルにコピーし、その中でパラメータ値を変更することができます。http://matsim.org/javadoc →メインディストリビューションを参照 → CreateFullConfig を参照してください。 かなり最小限のコンフィグファイルは、以下の情報を含んでいます。

<module name= "network"> <param name= "inputNetworkFile" value= "<path-to-network-file >"/> </ module > <module name= "plans"> <param name= "inputPlansFile" value= "<path-to-plans-file"/> </module > <module name= "controler"> <param name="firstIteration" value="0"/> <param name="lastIteration" value="0"/> </module > <module name= "planCalcScore" > <parameterset type= "activityParams"> <param name= "activityType" value="h"/> <param name= "typicalDuration" value="12:00:00"/> </parameterset > <parameterset type= "activityParams"> <param name= "activityType" value="w"/> <param name= "typicalDuration" value="08:00:00"/> </parameterset > </module >

作業例については、MATSimのディレクトリツリー(2.1.1参照)のexamples/tutorial/config/example1-config.xmlを参照してください。

この例では、供給はネットワークによって、需要は計画ファイルによって提供されます。典型的な入力データについては、セクション2.2.2で説明します。最初の反復と最後の反復は同じであるという仕様である。 つまり、需要の再計画は行われません。実行されるのはmobsim(図1.1)であり、その後に各実行プランの性能採点が行われる。スコアリングが機能するためには、設定ファイルから、プランで使用されるすべてのアクティビティタイプと、各アクティビティタイプの標準的な期間を知る必要があります。

さらなるコンギュレーションの可能性については、第4章に記載されている。

1.2. 基本シナリオの構築と実行

このセクションでは、MATSimの実験に使用される典型的な入力データと、生成される標準出力に関する情報を提供します。最小限のシナリオ例を示し、MATSim で使用される単位、慣習、および座標系を簡単に説明します。そして、実際に必要なデータについてのヒントを提供します。

1.2.1. 単位、慣習、座標系

1.2.1.1. 単位

MATSimは実際の単位についてほとんど仮定しないようにしていますが、特定の推定には必要な場合があります。ある推定には必要です。一般的に、MATSim では、同じようなタイプの変数(例えば、すべての距離)は、どこで使われても同じ単位であることを想定しています。が同じ単位であることを想定しています。以下の簡単な概要では、最も重要な (予想される)単位を列挙します。

Distance 距離の単位は、例えばリンクの長さに使われます。これらは、座標系で使用されている単位と同じものを指定する必要があります。MATSimが直線距離を計算できるように、座標系が使用する単位と同じものを指定する必要があります。多くの場合 UTM (Universal Transverse Mercator) 投影座標系 (2.2.1.3節参照) では、距離の単位にメートルを使用しています。メートルであり、MATSim で最もよく使われる距離の単位です。

Time MATSim は、いくつかの場所で時:分:秒の表記をサポートしていますが、内部的には秒を使用しています。秒をデフォルトの時間単位とします。このため、例えばリンクの速度は秒あたりの距離で指定する必要があります。このことは、例えば、リンク速度は1秒あたりの距離、通常は1秒あたりのメートルで指定しなければならないことを意味します。このルールの顕著な例外は、スコアリング パラメータでは、MATSimは1時間あたりの値を想定しています。

Money 貨幣は単位を持たない。単位は貨幣の限界効用によって暗黙のうちに与えられる(後出の式(3.4)参照)。したがって、ドイツからスイスに移動する場合、パラメータβcは、「ユーロあたりの効用」から「スイスフランあたりの効用」に変更されなければならない。を「ユーロあたりの効用」から「スイスフランあたりの効用」に変更する必要がある。

1.2.1.2. 規約

MATSimはIDを強烈に使います。これらのIDは任意の文字列を使用できますが、以下の例外があります。IDには空白文字(タブ、改行など)やカンマ、セミコロンなどを含んではいけません。これらの文字は通常、IDリストで異なるIDを互いに区切るために使用されるからです。

適切な座標系でデータを準備する いくつかの入力ファイルでは、ネットワークノードなどの座標を指定する必要があります。WGS84座標(つまりGPS(Global Positioning System)座標)やその他の球座標(西東方向に-180から+180、南北方向に-90から+90の座標)は使用しないよう強くお勧めします。MATSimは、コードのいくつかのセクションで2点間の距離を計算する必要があります。球座標間の距離の計算は非常に複雑で、時間がかかる可能性があります。代わりに、MATSimは単純なピタゴラスの定理を使用しますが、これはデカルト座標系の座標を必要とします。したがって、MATSim と共にデカルト座標系、できれば距離単位が 1 メートルに対応する座標系を使用することを強くお勧めします。

多くの国や地域では、その地域用に最適化された独自の座標系が構築されています。 その地域のGIS(地理情報システム)の専門家に、その地域で最もよく使われている座標系を聞いて その地域で最も一般的に使われている座標系を、その地域のGIS(地理情報システム)の専門家に聞いて、それを使ってデータを作成するのがよいでしょう。 もし、その地域でどのような座標系が使われているのか情報がない場合は、UTM座標系を使うのが一番いいかもしれません。UTM座標系を使用するのがよいでしょう。この座標系は、世界を複数のバンドに分割し、各バンドを6度ずつに区切ります。度幅で、北と南に分け、UTMゾーンと呼んでいます。それぞれのゾーンに ゾーンごとに、最適な座標系が決められています。あなたの地域に合ったUTMゾーンを選んでください(Wikipedia あなたの地域のUTMゾーンを選び(Wikipediaにゾーンを示す良い地図があります)、その座標系を使いましょう。

MATSimに座標系を伝える いくつかの操作では、MATSimはあなたのデータが配置されている座標系を知る必要があります。例えば、解析によってはGoogle EarthやQGIS(Quantum GIS)で可視化するための出力を作成することがあります。データで使用する座標系は、設定ファイルで指定することができます。

<module name= "global"> <param name= "coordinateSystem" value="EPSG:32608"/> </module >

これにより、MATSimはあなたの座標で作業し、必要なときにいつでも変換することができます。

使用する座標系を指定する方法は複数あります。一番簡単なのは、いわゆる「EPSG(European Petroleum Survey Group)コード」を使うことです。よく使われる座標系はほとんど標準化され、番号が振られています。EPSGコードは座標系を識別し、MATSimで直接使用することができます。あなたの座標系に合ったEPSGコード(例えば、UTMゾーンの1つ)を見つけるには、ウェブサイトhttp://www.spatialreference.org が非常に便利です。このウェブサイトで、あなたの座標系を検索してください。例えば、"WGS 84 / UTM Zone 8N"(北半球のUTMゾーン8Nの場合)。北半球の UTM ゾーン 8)」と検索すると、一致する座標系のリストとその EPSG コード(この場合は EPSGコード(この場合はEPSG:32608)と共に一致する座標系のリストが表示されます。

また、MATSimは座標系の記述をWKT (Well-Known Text) フォーマットの座標系記述も解析できます。

1.2.2. 代表的な入力データ

したがって、population.xml と network.xml はかなり大きくなる可能性があります。容量を節約するために、MATSimは圧縮されたフォーマットでのデータの読み書きをサポートしています。MATSimはこのためにGZIP圧縮を使用します。そのため、多くのファイル名にはpopulation.xml.gzのように.gzというサフィックスが追加されています。MATSimはファイル名から、ファイルが圧縮されているか、または圧縮して書き込むべきかを認識します。

1.2.2.1. 本書第II部におけるMATSimの拡張の展望

第7章では、初期入力生成のためのMATSimの技術ツールに関するいくつかの情報を提供します。基本設定では、MATSimエージェントは指定されたリンク上で活動を行います。活動場所に関する更なる情報を指定する必要がある場合は、6.4節で説明した機能を用いて実施することができます。また、公共交通のシミュレーションを行うためには、16.4.1節および16章に示すように、基本シナリオを追加レスで拡張する必要があります。回数データは、交通計画における一般的な評価指標である。MATSimでは、6.3節に示すように、シミュレーションのためにカウントデータを提供することができる。

より詳細には、ネットワークと人口ファイルは以下のようなものです。

1.2.2.2. network.xml

ネットワークは、エージェント(または車両)が移動するためのインフラストラクチャです。ネットワークはノードとリンク(グラフ理論では、通常、頂点と辺と呼ばれる)から構成される。MATSimのXML(Extensible Markup Language)データフォーマットによる簡単なネットワーク記述は、およそ次のような情報を含むことができます。

<network name="example network"> <nodes> <node id="1"x="0.0"y="0.0"/> <node id="2"x="1000.0"y="0.0"/> <node id="3"x="1000.0"y="1000.0"/> </nodes> <links> <link id="1"from="1"to="2"length="3000.00"capacity="3600" freespeed="27.78"permlanes="2"modes="car"/> <link id="2"from="2"to="3"length="4000.00"capacity="1800" freespeed="27.78"permlanes="1"modes="car"/> <link id="3"from="3"to="2"length="4000.00"capacity="1800" freespeed="27.78"permlanes="1"modes="car"/> <link id="4"from="3"to="1"length="6000.00"capacity="3600" freespeed="27.78"permlanes="2"modes="car"/> </links> </network>

作業例としては、MATSimのディレクトリツリーにあるexamples/equilディレクトリを確認してください をご覧ください (セクション 2.1.1 参照)。

各要素はidentier idを持ちます。ノードはxとyの座標値で表されます(2.2.1.3節と7.1節も参照してください)。2.2.1.3節および7.1節を参照)。リンクにはより多くの機能があり、from属性とto属性はノードを参照し、ネットワークの形状を記述する。はネットワークのジオメトリを記述します。その他の属性は、trac に関連するリンクの側面を記述します。

すべてのリンクは一方通行である。ある道路が両方向に通行できる場合、2つのリンクが、toとfromの属性を交互に持つ を交互に指定する必要があります (上のリストの id 2 と 3 のリンクを参照)。

1.2.2.3. population.xml

ファイル形式: MATSimの旅行需要は、エージェントの一日計画によって記述される。エージェントの完全な集合は母集団とも呼ばれ、それゆえpopulation.xmlと呼ばれる。あるいは、plans.xmlもMATSimではよく使われます。MATSimでは一般的にplans.xmlが使用され、population leは基本的に日中計画のリストを含んでいます。

母集団は、次の例に示すように、階層構造でデータを含んでいる。 この例ではデータ構造を示しているが、後で説明するように、最小限の入力レスはより少ない情報で済む。

<population> <person id="1"> <plan selected="yes"score="93.2987721"> <act type="home"link="1"end_time="07:16:23"/> <leg mode="car"> <route type="links">1 2 3</route> </leg> <act type="work"link="3"end_time="17:38:34"/> <leg mode="car"> <route type="links">31</route> </leg> <act type="home"link="1"/> </plan> </person> <person id="2"> <plan selected="yes"score="144.39002"> ... </plan> </person> </population>

作業例としては、MATSimのディレクトリツリーにあるexamples/equilディレクトリを確認してください をご覧ください (セクション 2.1.1 参照)。

母集団には人のリストがあり、各人には計画のリストがあり、各計画には活動や脚のリストがあります。は活動と脚のリストを含んでいる。

一人当たりちょうど一つのプランが選択されたものとしてマークされる。各エージェントの選択された計画は、モビリティシミュレーションによって実行される。モビリティシミュレーションによって実行される。再計画の段階では、別のプランが選択されるかもしれない。プラン は、属性としてスコアを含むことができる。スコアは、スコアリングステージにおいて、モビリティシミュレーショ モビリティシミュレーションによって計算され、保存される。

各プランに含まれるアクティビティとレッグのリストは、各エージェントの計画された行動を記述する。アクティビティには アクティビティにはタイプが割り当てられ、通常、1日計画の最後のアクティビティを除いて、終了時刻が設定されています。

例外として、アクティビティには終了時刻の代わりに継続時間が設定されているものもあります。このようなアクティビティは このようなアクティビティは、ルーティング・アルゴリズムによって自動的に生成されることがありますが、本書では説明しません。この本では説明しません。アクティビティが行われる場所を記述するために、アクティビティには、xとyの属性値を与えることによって座標が割り当てられます。または、リンクが割り当てられ、どのリンクからアクティビティに到達できるかが記述されます。に到達することができます。シミュレーションではリンク属性が必要なため、Controlerはリンクが指定された座標に最も近いリンクを計算します。リンク属性がない場合、Controlerは与えられた座標に最も近いリンクを計算します。

脚は、エージェントがある場所から次の場所へ移動する方法を記述します。各脚には、輸送モードが割り当てられていなければなりません。オプションとして、レッグにはtrav_timeという属性があり、レッグの予想移動時間を記述することができる。レグをシミュレートするためには、レグにルートが含まれていなければならない。ルートの形式は、レグのモードによって異なる。自動車レッグの場合,ルートはエージェントが所定の順序で通過しなければならないリンクをリストアップし,トランジットレッグの場合は,停車位置と予想されるトランジットサービスに関する情報が格納される.MATSimは、初期経路を含まない初期計画に対して、自動的に初期経路を計算する。

エージェントは、前のアクティビティ(またはレグ)が終了した後、直接レグを開始します。モブシムでのエージェントの扱いは、モードに依存します。デフォルトでは、車とトランジットのレッグはモブシムで十分にサポートされています。

モブシムが知らないモードに遭遇した場合、デフォルトでテレポートになります。この場合、エージェントはシミュレーションされた現実から取り除かれ、レッグの予想移動時間が経過した後にターゲットロケーションに再投入されます。

最小限の母集団ファイル:母集団データ形式は、MATSimの最も中心的なデータ構造の1つです。MATSimの最も中心的なデータ構造の一つであり、最初は少し圧倒されるかもしれません。幸いなことに、使い始めるのに必要なのは、その一部だけです。を知るだけでよいのです。母集団のルは、おおよそ以下の情報だけが必要です。

<population> <person id="1"> <plan> <act type="home" x="5.0" y="8.0" end_time="08:00:00"/> <leg mode="car"/> <act type="work" x="1500.0" y="890.0" end_time="17:30:00"/> <leg mode="car"/> <act type="home" x="5.0" y="8.0"/> </plan> </person> <person id="2"> ... </person> </population>

作業例としては、MATSimのディレクトリツリーにあるexamples/equilディレクトリを確認してください をご覧ください (セクション 2.1.1 参照)。

母集団は人のリストを含み、各人は計画のリストを含み、各計画は活動と脚のリストを含む。

一人当たりちょうど一つのプランが選択されたものとしてマークされる。各エージェントの選択された計画は、移動シミュレーションによって実行される。再計画の段階では、異なるプランが選択されるかもしれない。プランには、属性としてスコアを含むことができる。スコアは、スコアリングの段階で、モビリティシミュレーションによって実行されるプランの空中で計算され、格納される。

各プランに含まれるアクティビティとレッグのリストは、各エージェントの計画された行動を記述する。アクティビティにはタイプが割り当てられ、通常、1日プランの最後のアクティビティを除いて、定義された終了時刻があります。

例外として、アクティビティには、終了時刻の代わりに期間が設定されているものもあります。このようなアクティビティは、ルーティング・アルゴリズムによって自動的に生成されることが多いので、本書では説明しない。アクティビティが行われる場所を記述するために、アクティビティにはxとyの属性値を与えて座標を割り当てるか、またはリンクを割り当てて、どのリンクからアクティビティに到達できるかを記述します。シミュレーションではリンク属性が必要なので、Controlerはリンク属性がない場合、与えられた座標に最も近いリンクを計算します。

脚は、エージェントがある場所から次の場所まで移動する方法を記述します。輸送モードが割り当てられていなければなりません。オプションで、レッグにはtrav_timeという属性があり、レッグの予想移動時間を記述することができます。を持つこともできる。レグをシミュレートするためには、レグにルートが含まれていなければならない。ルートの形式は の形式は、レグのモードによって異なる。車のレッグの場合、ルートはエージェントが通過しなければならないリンクのリスト MATSimは自動的に、そのレグをシミュレートします。MATSimは、初期経路を含まない初期計画に対して、自動的に初期経路を計算する。MATSimは、それらを含まない初期計画に対して初期経路を自動的に計算する。

作業例としては、MATSimのディレクトリツリーにあるexamples/equilディレクトリを確認してください をご覧ください (セクション 2.1.1 参照)。 母集団は人のリストを含み、各人は計画のリストを含み、各計画は活動と脚のリストを含む。 一人当たりちょうど一つのプランが選択されたものとしてマークされる。各エージェントの選択された計画は、移動シミュレーションによって実行される。再計画の段階では、異なるプランが選択されるかもしれない。プランには、属性としてスコアを含むことができる。スコアは、スコアリングの段階で、モビリティシミュレーションによって実行されるプランの空中で計算され、格納される。 各プランに含まれるアクティビティとレッグのリストは、各エージェントの計画された行動を記述する。アクティビティにはタイプが割り当てられ、通常、1日プランの最後のアクティビティを除いて、定義された終了時刻があります。 例外として、アクティビティには、終了時刻の代わりに期間が設定されているものもあります。このようなアクティビティは、ルーティング・アルゴリズムによって自動的に生成されることが多いので、本書では説明しない。アクティビティが行われる場所を記述するために、アクティビティにはxとyの属性値を与えて座標を割り当てるか、またはリンクを割り当てて、どのリンクからアクティビティに到達できるかを記述します。シミュレーションではリンク属性が必要なので、Controlerはリンク属性がない場合、与えられた座標に最も近いリンクを計算します。

脚は、エージェントがある場所から次の場所まで移動する方法を記述します。輸送モードが割り当てられていなければなりません。オプションで、レッグにはtrav_timeという属性があり、レッグの予想移動時間を記述することができます。を持つこともできる。レグをシミュレートするためには、レグにルートが含まれていなければならない。ルートの形式は の形式は、レグのモードによって異なる。車のレッグの場合、ルートはエージェントが通過しなければならないリンクのリスト MATSimは自動的に、そのレグをシミュレートします。MATSimは、初期経路を含まない初期計画に対して、自動的に初期経路を計算する。MATSimは、それらを含まない初期計画に対して初期経路を自動的に計算する。

作業例としては、MATSimのディレクトリツリーにあるexamples/equilディレクトリを確認してください をご覧ください (セクション 2.1.1 参照)。 母集団は人のリストを含み、各人は計画のリストを含み、各計画は活動と脚のリストを含む。 一人当たりちょうど一つのプランが選択されたものとしてマークされる。各エージェントの選択された計画は、移動シミュレーションによって実行される。再計画の段階では、異なるプランが選択されるかもしれない。プランには、属性としてスコアを含むことができる。スコアは、スコアリングの段階で、モビリティシミュレーションによって実行されるプランの空中で計算され、格納される。 各プランに含まれるアクティビティとレッグのリストは、各エージェントの計画された行動を記述する。アクティビティにはタイプが割り当てられ、通常、1日プランの最後のアクティビティを除いて、定義された終了時刻があります。 例外として、アクティビティには、終了時刻の代わりに期間が設定されているものもあります。このようなアクティビティは、ルーティング・アルゴリズムによって自動的に生成されることが多いので、本書では説明しない。アクティビティが行われる場所を記述するために、アクティビティにはxとyの属性値を与えて座標を割り当てるか、またはリンクを割り当てて、どのリンクからアクティビティに到達できるかを記述します。シミュレーションではリンク属性が必要なので、Controlerはリンク属性がない場合、与えられた座標に最も近いリンクを計算します。

脚は、エージェントがある場所から次の場所まで移動する方法を記述します。輸送モードが割り当てられていなければなりません。オプションで、レッグにはtrav_timeという属性があり、レッグの予想移動時間を記述することができます。を持つこともできる。レグをシミュレートするためには、レグにルートが含まれていなければならない。ルートの形式は の形式は、レグのモードによって異なる。車のレッグの場合、ルートはエージェントが通過しなければならないリンクのリスト MATSimは自動的に、そのレグをシミュレートします。MATSimは、初期経路を含まない初期計画に対して、自動的に初期経路を計算する。MATSimは、それらを含まない初期計画に対して初期経路を自動的に計算する。

最小限の母集団: ファイル 母集団データ形式はMATSimの最も中心的なデータ構造の1つであり、最初は少し圧倒されるかもしれません。幸いなことに、使い始めるには、小さなサブセットを知るだけでよいのです。母集団のルは、おおよそ以下の情報だけが必要です。

<population> <person id="1"> <plan> <act type="home "x="5.0" y="8.0" end_time="08:00:00 "/> <leg mode="car"/> <act type="work "x="1500.0" y="890.0" end_time="17:30:00 "/> <leg mode="car"/> <act type="home "x="5.0" y="8.0"/> </plan> </person> <person id="2"> ... </person> </population>

作業例としては、MATSimのディレクトリツリーにあるexamples/equilディレクトリを確認してください をご覧ください (2.1.1節参照)。 以下の項目は、簡略化のために使用することができます。

シミュレーションを開始すると、MATSimのControlerがこのようなレッグをロードし、自動的に各アクティビティに最も近いリンクを割り当てます。MATSimのControlerは、このようなleをロードし、自動的に各アクティビティに最も近いリンクを割り当て、各レッグに適した経路を計算します。このため、簡単にを素早く開始することができます。

1.2.3. 代表的な出力データ

MATSimは、結果を分析したり、現在のシミュレーション設定の進捗を監視するために使用することができる出力データを作成します。MATSimの完全な実行結果を要約したファイルもあれば、特定のイテレーションのみについて作成されたファイルもあります。最初のタイプのファイルは、出力フォルダの最上位に直接置かれます。これは、設定ファイルのcontrollerセクションで指定することができます。その他のファイルは、出力フォルダー内に継続的に作成される反復処理専用のフォルダー ITERS/it.{iteration number}に格納されます。いくつかのファイル(典型的には母集団のような大きなもの)については、出力頻度を設定ファイルで指定することができます。その場合、それぞれのiterationフォルダにのみ移動します。MATSimの完全な実行結果をまとめたファイルは「オンザフライ」で作成されます。つまり、各反復計算の後、現在計算されている反復計算値が保存され、実行の連続的な監視を可能にします。いくつかのファイル(スコア統計ファイルなど)はデフォルトで作成され、他のファイルはそれぞれの設定ファイルのセクションで起動する必要があります(カウントデータファイルなど)。

以下の出力ファイルは、完全なランを要約するために継続的に構築される。

ログファイル: MATSimの実行中に、解析に必要な情報、または実行がクラッシュした場合の情報を含むログが出力されます。析に必要な情報、あるいは実行中にクラッシュした場合の情報が含まれています。

警告とエラーのログファイル: MATSimは、シミュレーションやその構成における問題を特定し、警告とエラーメッセージをログファイルに書き込むことがあります。ログファイルには非常に多くの情報が含まれているため、これらの警告を見落とす可能性があります。このため、警告とエラーメッセージのみを含む別のログがラン出力ディレクトリに生成されます。 実行中や実行後にこのログをチェックし、問題がないかどうかを確認することが重要である。

スコアの統計情報 スコア統計は画像(scorestats.png)とテキストファイル(scorestats.txt)で見ることができます。(scorestats.txt)で見ることができます。これらは、全エージェントのプランの平均ベスト、ワースト、実行済み、そして全体の平均を示す。また、全エージェントのプランの平均値も表示される。スコアプロットの例を図1.2に示す。

レッグ移動距離の統計 レッグ移動距離の統計(les traveldistancestats.png および traveldistancestats.txt)はスコア統計と同じですが、代わりに移動距離をプロットしています。距離のプロットです。

ストップウォッチ ストップウォッチファイル(stopwatch.txt)には、リプランニングやモビリティシミュレーションを実行した際の計算時間(いわゆるウォールクロック時間)が反復毎に記録されています。このデータは計算性能の解析に役立ちます。例えば、モビリティシミュレーションと比較して、リプランニングにどれくらいの時間がかかるのか?

特定のイテレーションに対して、以下の出力ファイルが作成されます。

イベント シミュレーションにおけるすべてのアクションは、アクティビティの開始やネットワークリンクの変更など、MATSimのイベントとして記録されます(図2.2参照)。各イベントは1つまたは複数の属性を持っています。デフォルトでは、イベントが発生した時刻が含まれています。さらに、イベントをトリガーしたエージェントのIDや、イベントが発生したリンクIDなどの情報も含めることができます。イベントファイルは、ビジュアライザーのようなポストアナリシスのための重要なベースとなります。イベントについては、セクション45.2.5で詳しく説明します。

計画 一定期間ごとに、エージェントの計画を含む母集団の現在の状態が印刷される。印刷される。最終反復の計画も出力フォルダの最上位に生成される。

脚のヒストグラム 各反復において、脚部ヒストグラムがプロットされます。レッグヒストグラムは、時間単位ごとに到着、出発、または途中のエージェント数を描写する。ヒストグラムは、各トランスポートモードと、すべてのトランスポートモードの合計について作成されます。各ファイルは、反復番号で始まり、トランスポートモードで終わる(例えば、1.legHistogram_car.png または 1.legHistogram_all.png).png)。テキストファイルも作成され(例:1.legHistogram.txt)、全輸送モードのデータが含まれます。

旅行期間 各反復において、各アクティビティペアについて、時間ビンレベルで、トリップ数、トリップ時間 を作成し、各アクティビティペア(例:職場から自宅、自宅から買い物)の時間ビンレベルのトリップ数とその所要時間を記載する。トリップの回数と所要時間を時間ビン単位でまとめたもの。

リンク統計 各反復で、各ネットワークリンクの1時間ごとのカウント値と移動時間を含むリンク統計レ を印刷する。リンク統計は、セクション6.3で紹介したように、実世界のカウントデータとの比較に特に重要 ントデータと比較するために特に重要である。

1.2.4. シナリオの一例

MATSimのリリースでは、equilという名前のサンプルシナリオがフォルダー examples/equilというフォルダに、config.xml, network.xml, plans100.xml, and plans2000.xml.gz といファイルが含まれています。

xml.gzは、それぞれ、100人と2000人、そしてカーモードのみを使用した一日の計画を含んでいます。A 2人だけの小さな集団(plans2.xml)は、1人は公共交通機関を利用し、もう1人は自動車を利用する。 2人だけの小さな集団(plans2.xml)も用意されている。カウントデータの例もこのフォルダにある(counts100.xml)。

さらに、100回のトリップ(plans100trips.xml)、すなわち、ある場所から別の場所に行くだけの需要で、それぞれの端にダミーの活動タイプを使用したルも用意されている。これは、MATSimがアクティビティを考慮しない、完全にトリップベースのアプローチとしても実行できることを示すために提供されています。明らかに表現力は失われますが、ルートや出発時刻の適応を含む基本的なコンセプトは、まったく同じように機能します。

シナリオのネットワークを図2.3に示す。

以下の行では、コンフィグ "config.xml "から最も重要なセクションを取り上げ、シナリオを説明する。

設定ファイルの "strategy" セクションに記述します。以下のコンフィグ抜粋にあるように、このシナリオではリプランニングを使用します。10%のエージェントは現在のルートを再走行する(モジュールReRoute)。残りの90%は、現在の反復で再実行するために、最もスコアの高い計画を選択する(モジュールBestScore)。エージェントのメモリが一杯になると、計画は削除されます。これは maxAgentPlanMemorySize で定義されます。デフォルトでは、最も低いスコアを持つプランが削除されます。これは設定可能であり、現在研究中です(セクション 97.3 参照)。

<module name="strategy "> <param name="maxAgentPlanMemorySize" value= "5"/> <! -- 0 means unlimited --> <parameterset type="strategysettings"> <param name="strategyName" value="ReRoute"/> <param name="weight"value= "0.1"/> </parameterset > <parameterset type="strategysettings"> <param name="strategyName" value="BestScore"/> <param name="weight" value= "0.9"/> </parameterset > </module >

コンフィグファイルの "planCalcScore" セクション planCalcScoreセクションは、3章で説明するスコアリングに使用するパラメータを定義します。この例では、h(自宅)とw(職場)の2つのアクティビティタイプが指定されています。母集団ファイル(2.2.2.3項参照)に含まれるすべての活動タイプは、configファイルのplanCalcScoreセクションで定義する必要があります。

<module name= "planCalcScore"> <parameterset type= "activityParams"> <param name= "activityType" value= "h"/> <param name= "typicalDuration "value="12:00:00"/> </parameterset> <parameterset type= "activityParams"> <param name= "activityType" value= "w"/> <param name= "typicalDuration" value="08:00:00"/> </parameterset > </module>

設定ファイルの "controller "セクション シナリオは10回繰り返し実行され、出力ファイルは./output/equilに書き込まれ(セクション2.2.3)、QSimをobsimとして使用します(mobsimsについてはセクション1.3, 4.3 and 11で詳しく説明しています)。

<module name= "controler"> <param name= "outputDirectory" value="./output/equil"/> <param name= "lastIteration" value="10"/> <param name= "mobsim " value="qsim"/> </module >

可視化する シミュレーション結果は,Via(第33章)またはOTFVis(On The Fly Visualizer)(第34章)で可視化することができます.

1.2.5. 必要なデータ

1.2.5.1. 人口・活動スケジュール

需要予測は、MATSimの重要なコンポーネントです。つまり、理論的には、シミュレーションする平均的な営業日と次の営業日で変化しない需要要素のみ は、平均的な労働日のシミュレーションから次のシミュレーションまで、変化しない需要要素のみをMATSimに提供する必要があります。MATSimに提供する必要があります。例えば、人口とその居住地や勤務地などです。

しかし、実際には、MATSimは完全な旅行需要を内生的にモデル化する準備はまだできていません。

例えば、活動の順序や希望する時間などは、入力として提供されなければなりません。

その結果、MATSimのループでカバーされていないすべての旅行需要の選択肢は、外生的に推定されなければならない。

人口の生成については、2つの可能性がある。快適な方法は、完全な人口センサスを翻訳することであり、やや厳しい方法は、サンプル調査または構造調査に基づく合成人口(例えば、Guo and Bhat, 2007)を生成することである。 MATSimでは、スイス連邦統計局(BFS)(2000)およびM¨uller(2011a)などに基づいて、両方の方法が使用されています。

旅行需要は、通常、調査から得られます。スイスの場合、マイクロセンサス(Swiss Federal Statistical Oce (BFS))から得られます。を参照)。GPSやスマートフォンによる旅行記など、新しいデータソースが現在研究されている(Swiss Federal Statistical Oce, 2006)。GPSやスマートフォンの旅行日記など、新しいデータソースが現在調査されている(例えば、Zilske and Nagel, 2015)。

需要と人口創出における重要なトピックは、通勤交通が特にピーク時に依然として大きな問題であることから、職場の配置です。スイスでは、国勢調査の勤務地はすべて市町村レベルで調査されている。しかし、このような快適なデータ・ベースは稀である。

これらの要素は内生的にモデル化できないことが多いため、MATSimには、異なる部分人口を異なる方法で取り扱う機能があります(セクション4.5)。例えば、国境を越えるエージェントが調査地域内で目的地を選択することは許されない、あるいは貨物輸送のエージェントが配送活動を余暇活動に変更することは許されない、と指定することができます。

1.2.5.2. ネットワーク

シミュレーションでは,プランニングネットワークとナビゲーショ ンネットワークの 2 種類のネットワークが使用されます(図 2.4(a) と 図 2.4(b) のスイス Z ¨urich 地域の例を比較してください).前者は無駄がなく、しばしば初期の探索的シミュレーションに使用され、後者は政策実行に使用されることが多く、通常、自転車や歩行者のリンクなど、より詳細な情報が提供されます。データは、連邦政府機関などの公的なもの、OSM(OpenStreetMap)などの無料のもの、そしてナビゲーションネットワークプロバイダーなどの商業的なものから入手可能である。

1.2.6. シナリオの入力データ例

いくつかのサンプルシナリオは、MATSimのメインディストリビューションに含まれ、ディレクトリ 「examples "に含まれています。

より多くのパッケージ化されたシナリオは、http://www.matsim.org/datasets にあります。

1.3. MATSim サバイバルガイド

MATSim には多くのオプションと可能性があり、それらを見つけるのは大変な作業です。ここでは、私たちがMATSimを頻繁に使用していることから得られた、いくつかの推奨事項を紹介します。

  1. 常に小さな例から始めてテストすること。
  2. 大規模なシナリオのテストは、必ず最初に1%で行います(例えば、初期需要からランダムに抽出したサブサンプル)。MATSimのGUI(図2.1)では、Tools...Create Sample Populationコマンドでサンプル母集団を作成することができます。4.3節で説明したように、これにはパラメータ、特にmobsimのflowCapacityFactorとstorageCapacityFactorの係数を適合させる必要があります。第二部6.3節で示したように、サンプルシナリオでもカウントデータの比較のためにパラメータの適応が必要です。
  3. 設定がうまくいかなくなったら、すぐに動作するバージョンに戻り、そこから少しずつ進めていく。
  4. logfileWarningErrors.logを確認する。
  5. 設定ファイルのオプションに付けられたコメントをチェックする。 output_config.xml.gzやlogfile.logの冒頭付近にあります。
  6. 設定ファイルのオプションをできるだけ少なくしてみる。(i)意図的に設定されたオプションを除いて、あなたのシミュレーションは変更されたMATSimのデフォルトに沿って動き、したがって、コミュニティが現在最適な設定と考えるものに沿って動きます。(ii) 設定ファイルの構文が自分の設定と異なる限り、変更に影響されない。
  7. http://matsim.org/javadoc でドキュメントを検索してください。
  8. 最新のチュートリアルは http://matsim.org/docs で検索してください。