交通量配分の数値計算について - ceri.go.jp ·...
TRANSCRIPT
32 寒地土木研究所月報 №804 2020年4月
1.はじめに
本稿では、交通量配分の数値計算のための「フランク・ウルフのアルゴリズム」を解説し、Python言語で書かれたプログラム(スクリプト)を例示する。
本報よりも前の月報1)で、道路網に交通量を配分する理論の解説があった。本稿は、交通量配分を実際に計算するための手順や技法について解説した実用編と位置付けられる。道路交通系の建設コンサルタント技術者の中で、交通量配分の理論を知っていて将来交通量推計のソフトウェアを使ったことがある者は少なくないが、具体的な数値計算の手順や技法まで知る者は意外と少ない。気象が道路網の容量等に及ぼす影響の程度によって交通流がどのように変わるのかをコンピュータで計算したいといった場合、市販ソフトウェアのプログラム変更を余儀なくされるときがある。本稿では、そのようなときに必要とされる「プログラム言語によらない数値計算の手順や技法」を解説する。
本稿では、交通量配分の中でも最も基本的な「需要確定型の静的な利用者均衡配分」を扱う。交通工学を学んだ技術者にはよく知られたことだが、道路網に配分される交通量が均衡した状態には、「利用者均衡
(UE)配分」と「システム最適(SO)配分」という異なるルールに従う2つの均衡状態がある。UE配分ルールに従う場合には、最短旅行時間の経路を選ぶ道路利用者の視点に立った均衡状態が求まる。SO配分ルールに従う場合には、道路網の総旅行時間の最小化を望む道路管理者の視点に立った均衡状態が求まる。両ルールともに、制約条件下で目的関数の値を最小化するような解を求める最適化問題として記述できる。目的関数の中に混雑状況を考慮するか否かという点に違いはあるものの、問題の解き方は両方ともほぼ同じである。
本稿では、需要確定型UE配分の数値計算手順として最も有名なフランク・ウルフのアルゴリズム2), 3)を解説する。数値計算の解説には数学表現が欠かせないが、学術書2), 3)の厳密さよりも平易さを重視した解説とする。
2.交通量配分問題の定式化とワードロップの原則
UE配分の結果、すべての道路利用者がもはや最短旅行時間の経路を選ばなくなるという均衡状態が導き出される。そのような均衡状態は、最適化問題の最適条件であるカルーシュ・クーン・タッカー条件(KKT条件)として定式化でき、「交通量が配分された経路の旅行時間が、すべて等しく、かつ、配分されなかった経路の旅行時間よりも短いかせいぜい等しい」状態になる。本章は前報1)の復習になってしまうが、後ほどアルゴリズムの解説に要るので、まずこの均衡状態を解説する。
道路網を、図-1に示すように、拠点(ノード)と区間(リンク)からなるネットワークで表現する。ノードの中には、旅行の始点(O)と終点(D)の役割を担うノードの組(ODペア)が含まれる。道路利用者は、ある始点ノードを出発し、幾つかのリンクを通って、ある終点ノードに到着する。この道程を経路(ルート)と呼ぶ。1つしかルートを持たないODペアもあれば、複数のルートを持つODペアもある。また、図
-1のように、あるリンク上でルートが重複していることもある。
図-1を一般化する。�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
個のODペアと
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
個のリンクをもつネットワークを考える。�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
個のODペアのうち
解 説
交通量配分の数値計算について
寒地交通チーム
図-1 交通量配分問題の定式化の要件
寒地土木研究所月報 №804 2020年4月 33
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
番目のODペア
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の交通量(ODフロー)を
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
とおく。ODペア
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
には
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
本のルートが属しており、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
本のルートのうち
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
番目のルート
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の交通量(トラフィック・フロー)を
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
、旅行時間(トラベル・タイム)を
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
とおく。また、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
個のリンクのうち
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
番目のリンク
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の交通量(リンク・ボリューム)を 、旅行時間(リンク・コスト)を とおく。 は、 の関数 として、
の値から決められる。ルート
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
に属するリンク
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
は、別のルートのリンクを兼ねることがある。ここで、リンク
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
がルート
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
に含まれる場合(ルート
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
がリンク
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
を含む場合)には1、それ以外には0となるダミー変数
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
を用意する。このとき、UE配分の均衡状態は次の最適化問題の解と等価であることが、ベックマンによって示された4)。
Minimize����,⋯ , ��� � ∑ � �����d����
����
subjectto ∑ �������� � �� � 0
�� � ∑ ∑ �����,�����������
��� � ∑ ��������,������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
� � ∑ � �����d����
���� � ∑ ���∑ �������� � �������
���� � �� ��� � 0��� � �� ��� � 0
(1)
Minimize����,⋯ , ��� � ∑ � �����d����
����
subjectto ∑ �������� � �� � 0
�� � ∑ ∑ �����,�����������
��� � ∑ ��������,������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
� � ∑ � �����d����
���� � ∑ ���∑ �������� � �������
���� � �� ��� � 0��� � �� ��� � 0
(2)
Minimize����,⋯ , ��� � ∑ � �����d����
����
subjectto ∑ �������� � �� � 0
�� � ∑ ∑ �����,�����������
��� � ∑ ��������,������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
� � ∑ � �����d����
���� � ∑ ���∑ �������� � �������
���� � �� ��� � 0��� � �� ��� � 0
(3)
Minimize����,⋯ , ��� � ∑ � �����d����
����
subjectto ∑ �������� � �� � 0
�� � ∑ ∑ �����,�����������
��� � ∑ ��������,������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
� � ∑ � �����d����
���� � ∑ ���∑ �������� � �������
���� � �� ��� � 0��� � �� ��� � 0
(4)
Minimize����,⋯ , ��� � ∑ � �����d����
����
subjectto ∑ �������� � �� � 0
�� � ∑ ∑ �����,�����������
��� � ∑ ��������,������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
� � ∑ � �����d����
���� � ∑ ���∑ �������� � �������
���� � �� ��� � 0��� � �� ��� � 0
(5)
式(1)は、この問題の目的がリンク・コストの総量の最小化であることを表している。式(2)は、いずれのODペアも、トラフィック・フローの総量とODフローが等しくなければならないことを表している。これは、ルートの交通量が途中のノードで抜け落ちたりしないための制約である。つまり、図-1に示すように、いずれのノードもノードに流入する総交通量(インフロー)と流出する総交通量(アウトフロー)が同値でなければならない。式(3)は、いずれのリンクのリンク・ボリュームもいずれかのルートのトラフィック・フローに属さなければならないことを表している。これは、ルートの交通量とは無関係の交通量がリンク上で発生しないための制約である。式(2)と式(3)をまとめて「フロー保存則」と呼び、最適化の処理の途中でネットワーク上に交通量が突然現れたり消えたりすることが無いように、最適化の処理に制約を課している。
ラグランジュの未定乗数法に則って式(1)~(5)の問題を解く。ラグランジュ関数
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
は次式で表される。ただし、式中の
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
はラグランジュ乗数を表す。
Minimize����,⋯ , ��� � ∑ � �����d����
����
subjectto ∑ �������� � �� � 0
�� � ∑ ∑ �����,�����������
��� � ∑ ��������,������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
� � ∑ � �����d����
���� � ∑ ���∑ �������� � �������
���� � �� ��� � 0��� � �� ��� � 0
(6)
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
を 、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
で微分してKKT条件を求めると、次式
のような最適解が得られる。なお、KKT条件の導き方については前報1)の解説を参照されたい。
Minimize����,⋯ , ��� � ∑ � �����d����
����
subjectto ∑ �������� � �� � 0
�� � ∑ ∑ �����,�����������
��� � ∑ ��������,������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
� � ∑ � �����d����
���� � ∑ ���∑ �������� � �������
���� � �� ��� � 0��� � �� ��� � 0 (7)
式(7)が意味するのは、いずれのODペアも、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
となったルート(つまり、交通量が配分されたルート)の旅行時間
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
は、OD間で等時間
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
となり、かつ、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
となったルートの旅行時間よりも短いかせいぜい等しくなる、という均衡状態である。式(7)は「ワードロップの等時間配分原則」と呼ばれている。
以上をまとめると、UE配分は式(1)~(5)の最適化問題として記述でき、それを解くとワードロップの原則が得られることが分かった。ただ、これだけでは、どのようにして式(1)~(5)の数値計算をおこなえばよいかが分からない。次章以降でそれを解説する。
3.フランク・ウルフのアルゴリズム
式(1)~(5)の最適化問題は、目的関数の性質上、必ずただ一組の最適解
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
をもつことが証明されている。したがって、この唯一の解に向かって効率的に計算していけばよい。例えば、山麓の目的地に向かい山腹の任意の位置から早く下山するには、その位置の等高線に対して垂直に降下するのが効率的である。山腹は一様ではなく等高線も必ずしも平行ではないので、一気に降下すれば最適な到達点から外れる恐れがある。そこで、ある等高線から次の等高線まで降下するのに最適な方向と幅、つまり最適な「降下方向ベクトル」と「降下ステップサイズ」を見定めながら徐々に山腹を降下していくのが、最も効率的である。フランク・ウルフのアルゴリズムとは、このように最急で降下させるという考え方に沿った数値計算手順のことである。
1時点ごとに(逐次的に)計算するので、時点
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
を変数の添え字に記す。時点
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
のリンク・ボリュームを行ベクトル
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
で表し、要素を一括で計算する。フランク・ウルフのアルゴリズムでは、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
を入力して降下方向ベクトル
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
と降下ステップサイズ
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を探索し、次の時点の
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
を
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
として出力するという手順を、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
になるまで繰り返す。
3.1 降下方向ベクトルの探索
まず、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の探索について解説する。式(1)の に
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
34 寒地土木研究所月報 №804 2020年4月
ついて
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
のまわりでテイラー展開をすると、次式を得る。������ � �� � ������� � �������� � ��
� �������,⋯ , ������ � ∑ �� ��������,⋯,������������
����
�������� � ��������� ������� ,⋯ , �������� ������� �
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
Minimize�̅���,⋯ ,��� � ∑ ���������������
subjectto ∑ �������� � �� � 0�� � ∑ ∑ �����,�����������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
�0,����� � �1� �������と再定義した補助問題を次のよ
うに定式化する。
Minimize�̿��� � ������ � ��� � ∑ � �����d������������������
�����
�������� � �̿′��� � ������� � ��� � ��
(8)
ただし、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
は
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の転置ベクトル、記号∇はナブラ、記号∂は偏微分を表す。式(8)の1行目から2行目への展開では、ベクトル要素への展開がなされている。1行目の右辺第2項の
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
は、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の「勾配ベクトル」と呼ばれており、次のように定義する。
������ � �� � ������� � �������� � ��
� �������,⋯ , ������ � ∑ �� ��������,⋯,������������
����
�������� � ��������� ������� ,⋯ , �������� ������� �
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
Minimize�̅���,⋯ ,��� � ∑ ���������������
subjectto ∑ �������� � �� � 0�� � ∑ ∑ �����,�����������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
�0,����� � �1� �������と再定義した補助問題を次のよ
うに定式化する。
Minimize�̿��� � ������ � ��� � ∑ � �����d������������������
�����
�������� � �̿′��� � ������� � ��� � ��
(9)
式(8)の1行目の右辺第2項
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
が負になるならば、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
となる。ここで、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
を導入して式(8)を変形すると、次式を得る。
���� � ������� � �������� � �� � ������
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
���� � ������� � �������� � �� � ������
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
���� � ������� � �������� � �� � ������
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
���� � ������� � �������� � �� � ������
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ��������������� (10)
式(10)の3行目の右辺第2項では、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の変換がなされている。
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
は
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� � の関数なの
で、4行目の第1項と第2項は、�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を含まない定数である。そこで、��
��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を含む第3項のみに着目し、式(1)~(5)の主問題に対する補助問題を次のように定式化する。
������ � �� � ������� � �������� � ��
� �������,⋯ , ������ � ∑ �� ��������,⋯,������������
����
�������� � ��������� ������� ,⋯ , �������� ������� �
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
Minimize�̅���,⋯ ,��� � ∑ ���������������
subjectto ∑ �������� � �� � 0�� � ∑ ∑ �����,�����������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
�0,����� � �1� �������と再定義した補助問題を次のよ
うに定式化する。
Minimize�̿��� � ������ � ��� � ∑ � �����d������������������
�����
�������� � �̿′��� � ������� � ��� � ��
������ � �� � ������� � �������� � ��
� �������,⋯ , ������ � ∑ �� ��������,⋯,������������
����
�������� � ��������� ������� ,⋯ , �������� ������� �
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
Minimize�̅���,⋯ ,��� � ∑ ���������������
subjectto ∑ �������� � �� � 0�� � ∑ ∑ �����,�����������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
�0,����� � �1� �������と再定義した補助問題を次のよ
うに定式化する。
Minimize�̿��� � ������ � ��� � ∑ � �����d������������������
�����
�������� � �̿′��� � ������� � ��� � ��
������ � �� � ������� � �������� � ��
� �������,⋯ , ������ � ∑ �� ��������,⋯,������������
����
�������� � ��������� ������� ,⋯ , �������� ������� �
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
Minimize�̅���,⋯ ,��� � ∑ ���������������
subjectto ∑ �������� � �� � 0�� � ∑ ∑ �����,�����������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
�0,����� � �1� �������と再定義した補助問題を次のよ
うに定式化する。
Minimize�̿��� � ������ � ��� � ∑ � �����d������������������
�����
�������� � �̿′��� � ������� � ��� � ��
������ � �� � ������� � �������� � ��
� �������,⋯ , ������ � ∑ �� ��������,⋯,������������
����
�������� � ��������� ������� ,⋯ , �������� ������� �
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
Minimize�̅���,⋯ ,��� � ∑ ���������������
subjectto ∑ �������� � �� � 0�� � ∑ ∑ �����,�����������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
�0,����� � �1� �������と再定義した補助問題を次のよ
うに定式化する。
Minimize�̿��� � ������ � ��� � ∑ � �����d������������������
�����
�������� � �̿′��� � ������� � ��� � ��
(11)
(12)
(13)
(14)
時点
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
において、式(11)の
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
は1時点前に得られているので、式(11)~(14)の最適解
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を計算することができる。このようにして、降下方向ベクトル
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
の探索がおこなわれる。
3.2 降下ステップサイズの探索
次に、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
の探索について解説する。
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を満たす
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
の範囲内で探索する。その右辺に
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を代入し、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
のように変形する。時点
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
において、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
と は1時点前に得られているので、 と の中
点となる
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
は必ず存在する。そこで、式(1)の積分範囲
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
と再定義した補助問題を次のように定式化する。
������ � �� � ������� � �������� � ��
� �������,⋯ , ������ � ∑ �� ��������,⋯,������������
����
�������� � ��������� ������� ,⋯ , �������� ������� �
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
Minimize�̅���,⋯ ,��� � ∑ ���������������
subjectto ∑ �������� � �� � 0�� � ∑ ∑ �����,�����������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
�0,����� � �1� �������と再定義した補助問題を次のよ
うに定式化する。
Minimize�̿��� � ������ � ��� � ∑ � �����d������������������
�����
�������� � �̿′��� � ������� � ��� � ��
(15)
������ � �� � ������� � �������� � ��
� �������,⋯ , ������ � ∑ �� ��������,⋯,������������
����
�������� � ��������� ������� ,⋯ , �������� ������� �
� ������� � ∑ ��� � ������ ��������
����������
� ������� � ∑ ��� � �������������������
� ������� � ∑ ������������������ � ∑ ���������������
Minimize�̅���,⋯ ,��� � ∑ ���������������
subjectto ∑ �������� � �� � 0�� � ∑ ∑ �����,�����������
��� � 0 �� � 0�� � 1,⋯ ,�; � � 1,⋯ , �; � � 1,⋯ ,���
�0,����� � �1� �������と再定義した補助問題を次のよ
うに定式化する。
Minimize�̿��� � ������ � ��� � ∑ � �����d������������������
�����
�������� � �̿′��� � ������� � ��� � �� (16)
式(16)を利用して式(15)を満たす
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
の直線探索をおこなうと、最適な
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を求めることができる。このようにして、降下ステップサイズ
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
の探索がおこなわれる。
4.数値計算のフローとテクニック
前章で、フランク・ウルフのアルゴリズムとは、式(11)~(14)の補助問題から探索した
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
と、式(15)の補助問題から探索した
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を用いて、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を逐次計算する手順であることが分かった。本章では、フランク・ウルフのアルゴリズムに沿ってコンピュータで
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
と
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を計算するための技法について解説する。具体的には、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
を探索する技法である「最短ルート探索」「オール・オア・ノッシング(AON)配分」、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を探索する技法である「直線探索」を解説する。
図-2に、フランク・ウルフのアルゴリズムに沿った数値計算フローを示す。最大の特徴は、同一時点において最短ルート探索とAON配分の計算ステップを2回繰り返すことである。なぜ2回繰り返すのかというと、詳しくは本章で解説するが、1回目の計算ステップでゼロベースの最短ルートにすべての交通量を配分した場合の
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を計算し、2回目の計算ステップで1回目の配分結果
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
に基づく最短ルートにすべての交通量を配分した場合の を計算して、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
から
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
への転換というかたちでベクトル
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
を決めるからである。
4.1 初期設定
図-2の初期設定では、時点
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
における全リンクのリンク・ボリュームを
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
と置き、最短ルート探索とAON配分をおこなう。
最短ルートを規定するリンク・コスト関数は、旅行時間と交通量の関係から直接的に旅行時間を求めるタイプと、旅行速度と交通量の関係から間接的に旅行時間を求めるタイプに大別できる。
前者のうち代表的なものは、次に示す米国連邦高速
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
寒地土木研究所月報 №804 2020年4月 35
道路局BPR関数5)である。
��������� � ��� �1� ������� ��� ������� � 1,⋯ , �� (17)
式中の
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
は交通量が1台のときの旅行時間、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
は交通容量、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
は所与の係数である。BPR関数は交通容量を超える交通量を認めている点に、注意が必要である。
後者のうち代表的なものは、国土交通省QV式等のリンクパフォーマンス関数6)である。
4.2 最短ルート探索とAON配分(1回目)
収束計算のため、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
という時点の更新を考える。時点
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の1回目の最短ルート探索とAON配分の計算ステップでは、1時点前の
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
が入力データになる。例えば、最初の時点は
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
であり、この時点では
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
が1回目の計算ステップの入力データになる。リンク・コストを
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
で計算した後で、「ダイクストラ法」で、トラベル・タイム
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
が最短となるルートを探索する。ダイクストラ法は、ラベリング法に属する最短ルート探索技法である。ダイクストラ法では、まず、「着目したノードの直前のノードの番号」と「始点ノードから着目したノードまでのトラベル・タイム」という2値ラベルを全ノードに貼り付けて、暫定ラベル集合を作成する。次に、「始点ノードから着目したノードまでのトラベル・タイム」に「着目したノードからそれに隣接するノードまでのリンク・コスト」を加えた値が最小となる隣接ノードを探索する。そのような隣接ノードが見つかれば、その隣接ノードのラベルを暫定ラベル集合から永久ラベル集合へと移す。始点ノードから終点ノードに向かってこのような探索を進めていき、すべてのラベルが永久ラベル集合に属すれば、探索は終了する。最後に、終点ノードから始点ノードへと後ろ向きに永久ラベル集合に属するラベルのノードを辿っていけば、それが最短ルートになる。
最短ルートが見つかると、どれくらいそこに交通量を配分するかを考える必要がある。そこで、最も単純なAON配分をおこなう。AON配分では、ODペア
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の最短ルート
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
にODフロー
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
をすべて配分し、トラフィック・フローを
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
とおく。それと同時に、最短ルートを除くルート
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
には何も配分せず、
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
とおく。したがって、最短ルート
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
に属するすべてのリンクには等しく
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
が配分されて、最短ルートを除くルート
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
に属するすべてのリンクには等しく が配分される。注意すべき点は、入力データ と違って出力データ は毎時点で か0のい
ずれかの値しか採らないということである。これ以後、1回目の計算ステップの出力データであ
る
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
を「当初配分量」と呼ぶ。
4.3 最短ルート探索とAON配分(2回目)
2回目の最短ルート探索とAON配分の計算ステップでは、1回目に得た当初配分量
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
が入力データになる。2回目の計算ステップでも1回目と同様にダイクスト
ラ法で最短ルートを探索する。ただ、1回目の最短ルートが2回目も最短になっているとは限らない。AON配分では、1回目と同様にして、ODペア
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
の最短ルートに属するすべてのリンクにODフロー
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� �� を等しく
配分し、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
とおく。同時に、最短ルートを除くルートに属するすべてのリンクには何も配分せず、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
とおく。当初配分量
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
が毎時点に
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� �� か0の
いずれかの値しか採らなかったのと同様に、出力データ
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
も毎時点で
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� �� か
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
のいずれかの値しか採らない。
これ以降、2回目の計算ステップの出力データであ
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
図-2 交通量配分の数値計算フロー
36 寒地土木研究所月報 №804 2020年4月
る を「転換量」と呼ぶ。
4.4 降下方向ベクトルの決定
当初配分量
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
と転換量
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
をベクトル表示した上で、時点
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
における最適な降下方向ベクトル
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
を
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
から決定する。
4.5 降下ステップサイズの決定
時点
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
で最適な降下ステップサイズ
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
は、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
を満たす中点に属するので、直線探索で求める。直線探索には「黄金分割法」や「バックトラッキング法」といった技法がある。
バックトラッキング法では、次の式(18)(19)のアルミホ・ウルフ条件を
�� ��������� ����
� � ���� � ���� �
������ � ���� � ��
0 � � � 1
� � ���� � ���� ������ � ����� � �1� ������
���� ����
�0, ������� �0,����� � �1� �������
�∗ ������ � ���� � ��
� ≔ 0
����� ≔ 0
���
�� �,�
� ≔ � � 1
������� � ≔ 1
����� �����������
���
��
��� � ��
�
��� � 0
�
����� � ��
����� � 0
������� ����� ��
が満たすならば、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
として探索を終了する。満たさないならば、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
を代入し、条件を満たすまで計算を繰り返す。なお、式中の
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
は、式(15)と式(16)から計算できる。
�̿��� � �̿�0� � ����̿′�0��̿′��� � ���̿′�0�
(18)�̿��� � �̿�0� � ����̿′�0��̿′��� � ���̿′�0� (19)
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
は
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
、式中の
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
は
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
を満たす。
4.6 リンク・ボリュームの決定
時点
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
における最適な
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
と
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
が探索できたので、その時点のリンク・ボリューム
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
を
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
から決定する。ただし、時点
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
においてこの
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
が均衡状態を満たしているとは限らない。そこで、近似的に、数値計算上の均衡状態を
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
に収束した状態と定義する。そして、次節の判定条件を満たすまで、時点を更新して計算する。
4.7 収束判定
様々な判定条件が考えられる。例えば、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
の計算時に、 が十分
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
図-3 スーフォールズ道路網の均衡状態の所要時間
表-1 リンク・コスト関数(BPR関数)
表-2 ODフロー(行:起点、列:終点)
寒地土木研究所月報 №804 2020年4月 37
小さくなれば、収束したと判定して計算を停止する。
5.Pythonスクリプトと数値計算の例
本章では、図-3に示す米国サウスダコタ州スーフォールズ道路網7)と表-1、表-2のデータを例に、アルゴリズムに基づいた数値計算を例示する。なお、これらのデータには現実の状況は反映されていない。
図-4に、フランク・ウルフのアルゴリズムのPythonスクリプトを例示する。
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
0.9、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
0.0001、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
0.5、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
0.1、
����� ����� � ��
����� � 0
����� 0
����� �∗
�∗ � ���� � ���� �∗
������ � ����� � �1� ������ �
�∗ � �
� � ��
�̿��� �̿�0� �̿′��� �̿′�0� �
0 � � � 1
��, ��
0 � �� � �� � 1
�∗ �∗
������ ������ � ���� � �∗�∗ ���� � ������ � �
������ � ���� � �∗�∗ max��� �������� � ������ ������
� �
�� �
�� �
� �
� �
2とおき、表-1、表-2のデー
タを使って計算した結果、
�
�
�
��
��
�
���
���
� ��,��
�
��
��� � 0
��� � 0
�∗ � ���∗,⋯ , ��∗� �
���� � ������,⋯ , ������
���� �
������ ������ � ���� � ��
������ � ���� ������� ���� ��
�������� �������
�������� � ��
������ � �� � ������� � � ���� � �
�������� ������� � ��������� ���� �
=76で収束した。図-3
の図中に示す計算結果の所要時間をみると、例えば、起点ノード1から終点ノード7へは、ノード番号1, 3, 4, 11, 10, 17, 16, 18, 7と1, 3, 4, 11, 10, 9, 8, 7の最短ルートがあり、両方とも5.5分となっている。このように、ワードロップの等時間配分原則が遵守されていることを確認できる。
6.おわりに
本稿では、需要確定型の静的な利用者均衡配分の数値計算の手順と技法について解説した。交通量配分の世界にもブレイクスルーは起きており、道路網の空間平均交通量(スループット)と空間平均交通密度(車両存在台数)のマクロな関係を表す交通基本図(MFD)に基づいた動的なマクロ交通量配分の理論が誕生している。それを基礎とし、車1台ごとの追従挙動を再現したミクロ交通流シミュレーションも実用化されている。本稿で解説した内容は、このような動的な理論を理解する上でも知っておくべき知識といえる。
(文責:四辻 裕文)
参考文献
1) 交通研究室:交通量均衡配分の基礎について、北海道開発土木研究所月報、607号、pp.29-32、2003.
2) Frank, M., Wolfe, P.: An algorithm for quadratic programming, Naval Research Logistics Quarterly, Vol.3, pp.95-110, 1956.
3) 土木学会:交通ネットワークの均衡分析-最新の理論と解法、丸善、1998.
4) Beckmann, M. J., McGuire, C. B., Winsten, C. B.: Studies in the Economics of Transportation, Yale University Press: New Haven, 1956.
5) US Bureau of Public Roads: Traffic Assignment Manual, Urban Planning Division, US Department of Commerce, Washington DC, 1964.
6) 国土交通省:将来交通需要推計手法(道路)、2010.
7) LeBlanc, L. J., Morlok, E. K., Pierskalla, W. P.: An accurate and efficient approach to equilibrium traffic assignment on congested networks, Transportation Research Record, Vol.491, pp.12-33, 1974.
𝐱𝐱��� � �∗𝐝𝐝∗の計算時に、max��� �������� � ������ ������ が十
分小さくなれば、収束したと判定して計算を停止する。
5.Python スクリプトと数値計算の例
本章では、図-3に示す米国サウスダコタ州スーフォ
ールズ道路網 7)と表-1、表-2 のデータを例に、アル
ゴリズムに基づいた数値計算を例示する。なお、これら
のデータには現実の状況は反映されていない。 図-4に、フランク・ウルフのアルゴリズムの Python
スクリプトを例示する。� �0.9、𝑐𝑐� �0.0001、𝑐𝑐� �0.5、� �0.1、� �2 とおき、表-1、表-2のデータを使って
計算した結果、� �76 で収束した。図-3の図中に示す
計算結果の所要時間をみると、例えば、起点ノード 1 か
ら終点ノード 7 へは、ノード番号 1, 3, 4, 11, 10, 17, 16, 18, 7 と 1, 3, 4, 11, 10, 9, 8, 7 の最短ルートがあり、両方
とも 5.5 分となっている。このように、ワードロップの
等時間配分原則が遵守されていることを確認できる。 6.おわりに
本稿では、需要確定型の静的な利用者均衡配分の数
値計算の手順と技法について解説した。交通量配分の
世界にもブレイクスルーは起きており、道路網の空間
平均交通量(スループット)と空間平均交通密度(車両
存在台数)のマクロな関係を表す交通基本図(MFD)に
基づいた動的なマクロ交通量配分の理論が誕生してい
る。それを基礎とし、車 1 台ごとの追従挙動を再現した
ミクロ交通流シミュレーションも実用化されている。
本稿で解説した内容は、このような動的な理論を理解
する上でも知っておくべき知識といえる。 (文責:四辻 裕文)
参考文献
1) 交通研究室:交通量均衡配分の基礎について、北海
道開発土木研究所月報、607 号、pp.29-32、2003. 2) Frank, M., Wolfe, P.: An algorithm for quadratic
programming, Naval Research Logistics Quarterly, Vol.3, pp.95-110, 1956.
3) 土木学会:交通ネットワークの均衡分析-最新の理
論と解法、丸善、1998. 4) Beckmann, M. J., McGuire, C. B., Winsten, C. B.:
Studies in the Economics of Transportation, Yale University Press: New Haven, 1956.
5) US Bureau of Public Roads: Traffic Assignment Manual, Urban Planning Division, US Department of Commerce, Washington DC, 1964.
6) 国土交通省:将来交通需要推計手法(道路)、2010. 7) LeBlanc, L. J., Morlok, E. K., Pierskalla, W. P.: An
accurate and efficient approach to equilibrium traffic assignment on congested networks, Transportation Research Record, Vol.491, pp.12-33, 1974.
図-4 「フランク・ウルフのアルゴリズム」スクリプト例
import pandas as pdimport numpy as npimport networkx as nximport matplotlib.pyplot as pltfrom scipy import integrateOD = pd.read_csv(“***.csv”,header=None) ; OD = np.array( OD.values )t0 = pd.read_csv(“***.csv”,header=None) ; t0 = np.array( t0.values )a0 = pd.read_csv(“***.csv”,header=None) ; a0 = np.array( a0.values )b0 = pd.read_csv(“***.csv”,header=None) ; b0 = np.array( b0.values )c0 = pd.read_csv(“***.csv”,header=None) ; c0 = np.array( c0.values )def BPR( vol ): # リンク・コスト関数tim = np.zeros([OD.shape[0],OD.shape[0]])for i in range(OD.shape[0]):for j in range(OD.shape[0]):if c0[i,j] != 0.0:tim[i,j] = t0[i,j]*(1.0+a0[i,j]*(vol[i,j]/c0[i,j])**b0[i,j])
else:tim[i,j] = np.inf
return timdef routeSearchAON( tim, vol ): # 最短ルート検索とAON配分G = nx.DiGraph(tim)for i in range(OD.shape[0]):for j in range(OD.shape[0]):if OD[i,j] != 0.0:shortest_path = nx.dijkstra_path(G,i,j,"weight")for k in range(len(shortest_path)‐1):vol[shortest_path[k],shortest_path[k+1]] += OD[i,j]
return voldef z_BPR( vol, grd, stp ): # アルミホ・ウルフ条件の計算用z = 0.0 ; dz = 0.0for i in range(OD.shape[0]):for j in range(OD.shape[0]):if c0[i,j] != 0.0:z += integrate.romberg(lambdaw: t0[i,j]*(1.0+a0[i,j]*(w/c0[i,j])**b0[i,j]),
0.0, vol[i,j]+stp*grd[i,j])dz += (t0[i,j]*(1.0+a0[i,j]*((vol[i,j]+stp*grd[i,j])/c0[i,j])**b0[i,j]))*grd[i,j]
return z, dzcount = 1x_pre = np.zeros([OD.shape[0],OD.shape[0]])tim = BPR( x_pre )x_pre = routeSearchAON( tim, x_pre ) # 当初配分量の計算while True:tim = BPR( x_pre )y = np.zeros([OD.shape[0],OD.shape[0]])y = routeSearchAON( tim, y ) # 転換量の計算grd = y – x_pre # 降下方向ベクトルの計算stp = 1.0 ; u0 = 0.9 ; c1 = 0.0001 ; c2 = 0.5while True: # 降下ステップサイズの計算stp = u0*stp[z_s, dz_s] = z_BPR( x_pre, grd, stp )[z_0, dz_0] = z_BPR( x_pre, grd, 0.0 )armijoCond = z_0 + c1*stp*dz_0 ‐ z_swolfeCond = c2*np.absolute(dz_0) ‐ np.absolute(dz_s)if armijoCond > 0 and wolfeCond < 0:break
x_pst = x_pre + stp*grd # リンク・ボリュームの計算convergeCond = []for i in range(OD.shape[0]):for j in range(OD.shape[0]):if x_pre[i,j] != 0.0:conv = np.absolute((x_pst[i,j] – x_pre[i,j])/x_pre[i,j])convergeCond.append(conv)
if max(convergeCond) < 0.001:break
else:x _pre= x_pstcount += 1
pd.DataFrame(x_pst).to_csv(“***.csv")pd.DataFrame(tim).to_csv(“***.csv")
図-4 「フランク・ウルフのアルゴリズム」スクリプト例