2023,江端さんの技術メモ

MATSimに関する情報が、これほどまでに少ないとは知りませんでした ―― 特に、日本語の情報が絶無に近いです。

このドタバタ(失敗メモ)については、こちらに記載しています。

MATSimの調査(継続中)

本来なら、大晦日の日に完了しているはずのメモのリリースが今日(2023年1月3日)になってしまいました。

「MATSimのシミュレーションが動いているところまで確認する」のメモ


多くの交通システムの研究に携わる人が、MATSimを最初に触って動かすときの一助になれば、幸いです。

江端

 

 

2023,江端さんの技術メモ

http://www.kobore.net/diary_techno/?date=20190119

に、

  • Windowsの環境変数を引き継ぐのであれば、"msys2_shell.cmd"の中にある、"rem set MSYS2_PATH_TYPE=inherit"のremを外す

と書きましたが、上手く動きませんでした。

MSYS2 で PATH が引き継がれない

の、引き継ぎたいときは Windows の環境変数で MSYS2_PATH_TYPE に inherit を設定するとよい。

を頼りにして、設定してみました。

システム環境変数の設定では動きませんでしたが、ユーザ環境変数に設定したら動くようになったようです。

以上

2023,江端さんの忘備録

年末から今年にかけて、私の本が2冊も売れました。

Between the end of the year and this year, two of my books have sold.

どなたかは存じませんが、お買い上げ頂き、誠にありがとうございます。

I don't know who you are, but thank you very much for your purchase.

でも、販売冊数の合計は、2桁に至っていません。

But the total number of books sold has not reached double digits.

『自分のニーズが、世界のニーズではない』ということを、今、しみじみと実感しています。

I am now keenly aware that 'my needs are not the needs of the world'.

2023,江端さんの技術メモ

Windowsのバージョンを上げる度に、メニューインターフェースを変えてくるMicrosoft社に、今さら腹を立てても仕方がない、と諦めています。

慣れなくてはならないのです。『ついていけない』と思った瞬間、「ジジイ」が確定します ―― シュレーディンガーのジジイです。

それはさておき。

Windows10→11のインターフェースの変化は大き過ぎて、ストレスが多いので、残念ですが、変更ツールに手を出してしまいました。

【決定版】使いにくい Wndows11 を Windows10風に戻す【Explorer Patcher for Windows11

を拝見して、力付くで直しました。

私の場合、OS(Windows11)は、https://github.com/valinet/ExplorerPatcher のインストールを邪魔されましたが、そこは、力づくで落しました(説明面倒なので省略)

で、

の画面から、以下の設定をしました(面倒なので全部コピペ)

以上

2023,江端さんの忘備録

この本に記載されている方法を試して、上手く動かなくて、頭を抱えている最中に、年を越しました。

I went through the New Year's Eve, trying the methods described in this book, not getting it to work, and in the process of getting my head around it.

去年もこんな感じで、今年もこんな感じに過ぎていくのだろうと思います。

Last year was like this, and I am sure this year will pass like this as well.

とは言え ――

However,

こんな風に、何かの課題に頭を抱えながら、最期を迎えられたら、

"If I could meet my end like this, with some issue on my mind ――"

それは、それで、私らしいのかなとも思っています。

I guess that is just like me.

今年もよろしくお願いします。

I look forward to working with you this year.

江端

Ebata

2022/12,江端さんの技術メモ

https://www.nikkoken.or.jp/pdf/project/2021/A-854.pdf

これまで述べてきたように、MATSimは移動の均衡をモデル化するための統合シミュレーションツールキットとして設計されました。このため、MATSimは交通需要と供給の両方をモデル化できる必要があります。の部分をモデル化する必要があります。この目的のために、MATSimは図2.3に示すように、均衡に収束するための共進化反復ループを採用しています。図2.3に示すとおりである(p.19)。

このループは、各個人の1日の行動とトリップチェーンという形で、最初の旅行需要から始まります。ループが始まる。このアクティビティとトリップチェーンは、Mobsimの段階で道路ネットワークにロードされる。一日のシミュレーションが終わると を計算し,その結果をもとに,各エージェントのアクティビティ・チェーン(計画)のスコアを計算する.最後の このとき,各エージェントは,以前の計画から生成された計画の集合を所有し を持つことになり,そのスコアに基づいて次の反復で実行するものを選択しなければならない.
ネットワーク負荷の部分では、MATSimのデフォルトとしてトラフィックフローモデルQSimが採用されている。この QSimは計算効率の良い待ち行列ベースのアプローチを適用している。基本的に、車両が道路セグメントに進入する際 を計算することができる.次に、その車両は道路の待ち行列の最後尾に挿入される。第二に,車両は道路の待ち行列の最後尾に挿入され,最後に,道路の流出能力に応じて道路を離れます.ここで、流出速度は各道路に固有であり、容量属性で指定される。

スコアリングとリプランニングの部分では、各エージェントにとって「より良い」プランと「より悪い」プランを区別する基準を提供するために、一般化された効用様式でスコアが定式化される。再計画では、このスコアをもとに、過去の計画、すなわち特定のエージェントが行った計画をもとに、完全に新しい計画を「品種改良」する遺伝的アルゴリズム(または進化的アルゴリズムと呼ばれる)を適用する。一般に、突然変異と選択という二つの演算子が使われる。突然変異演算子は、以前に実行された計画中の特定のコンポーネントを変更し、この変更された(すなわち、突然変異)計画を次の反復に使用する。次の反復処理に採用する。
MATSimで使用できるセレクタは、使用する平衡状態によって複数種類あります。
る平衡状態によって異なる。ベストリプライセレクタは、前回の反復からベストプランを選択するものです。
MNLセレクタは、プラン選択のアプローチを離散的選択の方法で適用し、エージェントの行動における以下の確率を考慮する。エージェントの行動には確率がある。

MATSim OSS & フリー Google Scholar(GS) 5750
http://bin.t.u-tokyo.ac.jp/kaken/pdf/2014_wakabayashi1.pdf
インプットデータ
・1日のスケジュール
・道路ネットワーク
・モデルのパラメータ
2. 1日のスケジュール効用を計算
𝑈𝑎𝑐𝑡 : 活動の効用 𝑈𝑡𝑟𝑎𝑣𝑒𝑙 : 移動の効用 𝑖:1回の活動
1. シミュレーションの実行
3. プランの変更
・出発時刻
・交通手段
・経路
・目的地
・駐車場
1~3を効用(Score)が収束するまで繰り返す
https://progsoft.net/ja/software/matsim

MATSimは、Javaで実装されたアクティビティベースの拡張可能なマルチエージェントシミュレーションフレームワークです。
これはオープンソースであり、インターネットからダウンロードできます(MATSim、2016; GitHub、2015)。
フレームワークは大規模なシナリオ向けに設計されています。つまり、対象となる機能を効率的に処理するために、すべてのモデルの機能が取り除かれています。
並列化も非常に重要です(例:Dobler and Axhausen、2011; Charypar、2008)。 たとえば、ネットワーク負荷シミュレーションの場合、キューベースのモデルが実装され、非常に複雑で計算コストの高い自動車追従動作が省略されます(セクション1.3を参照)。
現時点では、MATSimは、アクティビティベースのモデルの分析の一般的な単位である1日をモデル化するように設計されています(たとえば、Bowmanによるレビュー、2009aを参照)。
それにもかかわらず、原則として、複数日モデルを実装することができます(Horni and Axhausen、2012年)。

SUMO OSS & フリー 交差点解析などに使われている様子  GS 35700
https://kudzuyu.github.io/SUMO-wiki-ja/SUMO_at_a_Glance/

  • シミュレーション
    • 連続空間かつ離散時間での車の動き
    • 複数の自動車の種類
    • 車線変更のある複数車線道路
    • 異なった右側通行ルールや信号
    • 高速なopenGL GUI
    • 数万単位の枝(道路)を含むネットワークの制御
    • 高速起動(1GHzマシンにおいて10万台までの車を1秒以内に更新)
    • 起動中の他のアプリケーションとの相互利用性
    • ネットワーク範囲での道路、車、検知器基準の出力\
    • 人基準のマルチモーダル移動のサポート
      -

交通シミュレーションの研究をやっていることから、MATSimの調査を行っています。

もう、昨日から本当にドタバタやっているのですが、MATSimの環境構築について、記載されているドキュメントが、非常に乏しく、日本語のものはゼロと言って良いと思います。

いろいろやって、現時点で上手くいかなかったこと

> git clone https://github.com/maptic/matsim-docker.git

> docker-compose build

> docker-compose upで、"docker-compose build" は成功したのですが、"docker-compose up" は以下ようにになってしまいました。

あきらめてhttps://www.matsim.org/downloads/からアプローチしてみた

>docker run -v /opt/matsim/data/input -v /opt/matsim/data/output maptic/matsim:latest

Vscode以外のIDEは入れたくないが、IntelliJ IDEA を入れろと言われたので、入れることにする(Dockerで手早く片づけたかったが)、アプローチがさっぱり分からんので仕方ない。

「The Multi-Agent Transport Simulation MATSim」を読むことにしました。


から、C:\Users\tomoi\matsim-14.0 に展開しておきました

つぎにここから「The Multi-Agent Transport Simulation MATSim」を落してきました。

で、

の、

のこれを出せるかどうかが、勝負だと見ました。

まず、javaをインストールしました。
私は、https://adoptopenjsk.net から、64bit版WindowsJDKのZIP版をダウンロードしました。
1. Choose a Version では、OpenJDK11 を、2. Choose a JVMではHotSpotを選択、Other platformsのボタンをクリックしました。
Windows, x64, .zip でダウンロードして、C:\Program Files\Java\jdk-11.0.17+8\bin にパスを通しておきました。

:\Users\tomoi\matsim-14.0>java -jar matsim-14.0.jar を起動すると、以下の画面が表示されます。


で、先程展開した、C:\Users\tomoi\matsim-14.0のサンプルの中にあるconfig.xmlを使うと、何か計算をしているようです。

2023-01-01T00:33:27,301 INFO IOUtils:215 Resolved C:\Users\tomoi\matsim-14.0\examples\berlin\config.xml to C:\Users\tomoi\matsim-14.0\examples\berlin\config.xml

ただ、今のところ、エラー終了してしまうようです。

上記の問題については、https://github.com/matsim-org/matsim-code-examples/issues/736 の方に記載されていました。
内容はこんな感じでした。

残念ながら、これはまだ修正されていないバグです。GUI クラスを実行する代わりに、RunMatsim クラスを直接実行することもできます。

java -cp matsim-example-project-0.0.1-SNAPSHOT.jar org.matsim.project.RunMatsim
デフォルトの設定ファイルとは別の設定ファイルを使用したい場合は、コマンドが変わります。

java -cp matsim-example-project-0.0.1-SNAPSHOT.jar org.matsim.project.RunMatsim /path/to/your/config.xml となります。

こんにちは、私は同じエラーに遭遇し、それはWindowsにリンクされているように見えた。このバグが修正されるかどうか、またいつ修正されるか知っていますか?

Windows の MATSimGUI で AccessDeniedException が発生する matsim-org/matsim-libs#2052

matsim-org/matsim-libs#2052 にissueを作成しました。ご指摘ありがとうございました。

JDKのバージョンを確認してください。この問題は、jdk 17 以降で発生するようです。JDK11でmatsim-14.0.jarを動かしてみてください。がんばってください。

も、私、jdk11を使っているんだけどなぁ?

続きがありました。

私もJDK11を使用していますが、同じ問題に遭遇しました。なぜなら、私が知る限り、LegHistogramChartクラスはpngを保存するために適切なローカルパスを送っていますが、jfreechartはC:³³に一時ファイルを作成しようとし、パーミッション問題に遭遇しています。簡単な回避策は、<param name="createGraphs" value="false" />を追加して、グラフをオフにすることです。をconfig.xmlのcontrollerモジュールに追加することです。そうすれば問題なく実行できます。もちろん、グラフは表示されませんが、その他の出力や解析はすべて可能です。

ということのようです。

で、C:\Users\tomoi\matsim-14.0\examples\berlin\config.xml の中をちょっくら弄ってみました。

<module name="controler">
<param name="outputDirectory" value="./output/berlin" />
<param name="firstIteration" value="0" />
<param name="lastIteration" value="0" />
<param name="createGraphs" value="false" />
</module>

の赤字の一行を追加したら、エラーで止まることはなくなりました。

さて、多分、ここ(C:\Users\tomoi\matsim-14.0\examples\berlin\output\berlin)にできているファイルを使って、シミュレーションの見える化をするのだろうと思います。


https://www.matsim.org/downloads/の

Visualization の翻訳

シミュレーションが実行されると、その出力ディレクトリに多くのファイルが作成されます。GUIには出力ディレクトリに到達するためのボタンがあることに注意してください。そのうちの1つは、いわゆるイベントファイルで、通常10回目のイテレーションごとに生成されます。0回目の繰り返しのイベントファイルは .../ITERS/it.0/...0.events.xml.gz に格納されています。これには可視化できる情報がたくさん含まれています。

MATSimの出力を視覚化する最も簡単な方法は、VIAを使うことです。エージェントの数に制限のある無料版がダウンロード可能です。VIAを起動すると、大きな黒い領域が表示されるはずです。ここがトラフィックを可視化する場所です。このエリアの左側に、上部に4つのアイコンがある小さなエリアがあります(「コントロール」)。最初のアイコン(Data Sources)をクリックします。このセクションにファイルをドラッグ&ドロップするか(例:network.xml、events.xml.gz)、下部の「+」をクリックして追加するファイルを選択できます。いずれかの方法で、まずnetwork.xmlを利用可能なデータのリストに追加し、次にevents.xml.gzを追加します。これでビジュアライザーがデータを認識し、どのようにビジュアル化するかを指示することができます。

次に、コントロールセクションの 2 番目のアイコン ("レイヤー") をクリックします。初期状態では、背景レイヤーのみが表示されています。をクリックして、表示させたいデータを選択します。読み込んだnetwork.xmlでネットワークを視覚化するよう既に提案されているはずなので、「Add」をクリックします。しばらくすると、ネットワークが可視化エリアに表示されるはずです。をもう一度クリックし、今度はレイヤーの種類として「ビークル」を選択します。event.xml.gzファイルはすでに選択されています。追加]をクリックします。イベントに依存するレイヤと同様に、レイヤタグの下部に「データを読み込む」ボタンが表示されます。これをクリックすると、イベントから車両の位置が抽出されます。


VIAというビューアについて調査中

https://simunto.com/via/download

 

2022/12,江端さんの忘備録

『江端をちゃんと洗脳できたら、かなり強い味方になりますよ』

"If you can brainwash me(Ebata) properly, I will be a very strong ally."

今年は、この言葉を実感した一年だったと思います。

This year, I could realize the phrase deeply.

-----

今年、私は「社会関係資本」というモノの研究に取り組むことになりました。

This year I will be working on a study of a thing called "social relational capital".

ソーシャルキャピタル(Social Capital)とも呼ばれているものです。

It is also known as Social Capital.

『社会関係資本とは、他の人に対して抱く「信頼」や、持ちつ持たれつなどの言葉で表現される「互酬性の規範」、そして人々の間の絆である「ネットワーク」のことを指す言葉です。市場では評価されにくい「集団としての協調性」を生み出します』(*)

Social relational capital is a term that refers to the "trust" we have in others, the "norm of reciprocity" expressed in terms such as "give-an d-take, and the "network" that is the bond between people. It produces a 'collective cooperation' that is difficult to appreciate in the marketplace.(*)

(*)出典はこちら https://www.ishes.org/keywords/2013/kwd_id000769.html

簡単に言えば、「社会関係資本」とは、"町内会"であり、"盆踊り"であり、"餅つき大会"です。

Simply put, "social capital" is "neighborhood associations," "Bon dances," and "rice cake pounding contests.

-----

今になって思えば、私も、この「社会関係資本」については、「町内会」の話で触れていました。

Now that I think about it, I had mentioned this "social relational capital" in my "neighborhood association" talk.

とはいえ、『「社会関係資本」とは、ぶっちゃけ、"町内会"であり、"盆踊り"であり、"餅つき大会"のことです』と、多くの大学生たちの前でプレゼンしている自分を、想像することはできませんでした。

However, I could not imagine myself giving a presentation in front of many university students, saying, "To put it bluntly, 'social relational capital' means 'neighborhood associations,' 'Bon dances,' and 'rice cake pounding contests'.

-----

そもそも、私は、「社会関係資本」というものの存在があるとしても、それについて積極的に関わることをしてきませんでした。

To begin with, I have not been actively involved in "social relational capital" at all, even if it exists.

特に、「町内会」(の老害)については、ボロクソに批判してきました。

In particular, I have criticized the "neighborhood associations" (by old people) radically.

ですから、嫁さんに、この話(今やっている研究のこと)をした時、

So when I told my wife about this (the research I'm working on), she said

『この分野の研究(社会関係資本)について、これほど不適切な人間(私)は、いないんじゃないかなぁ』

"Is there anyone more unsuited to this field of research (social relational capital) than you are?"

と言われたくらいです。

-----

それでも ―― 会社から命令されれば、「社会関係資本」であろうとも、これを「経済」として回せる仕組みについて、調査して、仕組みを検討して、研究をしなければなりません。

Still -- if the company orders me to do so, I must investigate, examine the mechanism, and do research on how we can turn this into an "economy", even if it is "social relational capital".

私、サラリーマンですから。

Because I am just a businessman.

自分が信じていないことを信じるようにするためには、「そのように追い込まれる状況に自分を追い込むこと」が、一番てっとり早いです。

The quickest way to make myself believe something I don't believe is to "put myself in a situation where I am driven to do so.

-----

『江端をちゃんと洗脳できたら、かなり強い味方になりますよ』

"If you can brainwash me properly, I will be a very strong ally."

―― と、今年、私が、最大級の批判・非難を展開してきた宗教団体とその構成員の方々に申し上げます。

I would like to tell the religious organizations and their members with my greatest level of criticism and condemnation this year.

2022/12,江端さんの忘備録

―― 死ぬまでに、一度は見に行きたい劇団

―― あいかわらず、時空間コンテンツを扱えば、この劇団は上手いなぁ・・・

で、今日、DVDが届いたのですが ―― 我が家にDVDプレーヤがないことに気がつきました。

江端家のDVDのリッピング(DVD->mp4変換)方法

今、ここです。

Now, here we are.

先程、嫁さんと2人で「きみがいた時間 ぼくのいく時間」を見終えました。

My wife and I just finished watching "The time you were there, the time I'm going"

―― 凄い、素晴しい、見事。あらゆる賞賛の言葉を尽しても足りない

"Amazing, wonderful, brilliant. All kinds of words of praise are not enough"

リビングのテレビに向かって、スタンディングオベーションしそうになりました。

I almost gave a standing ovation for the TV in the living room.

-----

出張先の日立駅前のビジネスホテルで、たまたま、深夜番組でこれを見始めたのが、午前1時くらい。

I happened to be at a business hotel in front of Hitachi Station on a business trip when I started watching this play on a late-night TV program at about 1:00 am.

終了したのが午前4時で、興奮で直ぐに寝られず、3時間だけベッドに入り、翌日はフラフラの状態で工場で打ち合わせをしました。

The play ended at 4:00 a.m. I was too excited to go to bed right away, so I went to bed for three hours and had a meeting at the factory the next day in a daze.

-----

とは言え ――

Although--

あの頃を思い出しながら、『これを見ることなく就寝するという選択肢はありえなかったであろう』と、当時の自分の判断に間違いがなかったことを、今、確信しています。

Remembering those days, I am now convinced that I was not mistaken in my decision at the time, saying, 'Going to bed without seeing this play would not have been an option.

2022/12,江端さんの技術メモ

現在の江端家には、DVDドライブがない(AVケーブル用はある)ので、PCからDVDをmp4に変換して、それをノートPCで移したものを、HDMIケーブルで上映するしかありません。

加えて、Windows7→Window10への移行で、既存のソフトも消えてしまったので、今、環境を再構築しています。

これからは、DVD Decrypterでisoファイルで読みとって、それを、HandBrakeでmp4変換する、という方式にしました(当初、Handbrakeだけでやれないかと思ったのですが、DVDのプロテクトが外せませんでした)。また、今後はDVDの複製を作るニーズはないだろうと考え、DVD Shrink のインストール行なっていません。

# なお、リビングのWindows10の入った32bitPCにインストールする為に、目的のダウンロードファイルを探すのに、少々てこずりました

 

カンタン!DVD DecrypterでDVDをMP4に変換する方法

のクリップをコピペさせて頂き、自分用の覚え書きとさせて頂いております。

これで、isoファイルができたら、HandBrakeでmp4ファイルにします。

 

以上

2022/12,江端さんの忘備録

―― 人からのアドバイスは、自分の年齢のとの差分の逆数を乗算して考えると良いですよ

"People's advice is to refer to the reciprocal of the difference between your age's multiplied by the reciprocal of the difference between your age's and your age's."

と、アドバイスします

I would advise you to do so.

例えば、35歳の人が34~36歳の人からアドバイスを聞く場合は、100%考慮した方がいいです。

For example, if you are 35, you should consider 100% if you are listening to advice from a 34-36 year old.

37歳の人からのアドバイスなら、1/|37-35| = 50%

If the advice comes from a 37 year old, then 1/|37-35| = 50%.

20歳の人からのアドバイスなら、1/|20-35| = 6.6%

If the advice comes from a 20 year old, then 1/|20-35| = 6.6%.

70歳の人からのアドバイスなら、1/|70-35| = 2.8%

If the advice comes from a 70 year old, then 1/|70-35| = 2.8%.

くらいで意識していると良いと思います。

It is good to be aware of this level.

基本的には、『人の意見は聞くな』です。

Basically, it's 'don't listen to others'.

-----

高齢者のアドバイスが、重要だった時代はあります。

There was a time when advice from the elderly was important.

それは、IT技術やiPS細胞技術がなくて、デジタル化を考慮しなくて良い時代でした。

That was a time when there was no IT or iPS cell technology and no need to consider digitization.

また、高齢者は、自分が一度試して失敗したことを、若い世代の人間が成功することを、大変不快に思います。

Also, older people are very uncomfortable with the idea of a younger generation succeeding at something they once tried and failed at.

つまり、高齢者からのアドバイスは、負の係数(人の足をひっぱる)を持っていることを忘れてはなりません。

In other words, we must remember that advice from the elderly has a negative coefficient (sabotaging the success of others).

なぜ、そう言い切れるか ―― 私自身、「負の係数」を持っているという強い自覚があるからです。

Why can I say that -- because I myself have a strong awareness that I have a "negative coefficient".

-----

若いITベンチャーの社長が、自動運転の実証実験などを行っているニュースなど見ていると、

When I see news stories about young IT venture CEOs conducting self-driving demonstration tests, etc. I come to think

―― 失敗しやがれ

"Do fail"

と思っている私を、常に感じます。

I constantly feel me thinking that way.

かつて、私が失敗してきたからです。

Because I have failed in the past.

人間の器というのは、思っている以上に「小さい」のです ―― 私だけかもれませんが。

The human vessel is "smaller" than we think --- maybe it's just me.