交通量配分
ここではまず(1)～(4)の 4 節に分けて，確定的利用者均衡配分の基礎理論について説明します. 次に(5)では計算手順の大まかな流れを説明し, (6)で実際に利用するプログラムの説明を行い, (7)では実際の計算例を示します.

1

確定的利用者均衡配分の基礎概念

効率的な道路政策を進めるために道路投資の効果をいかに評価するかということが重要になってきている．そのためには道路整備前と後で交通量や、その旅行時間を推計することが必要となってくる．また従前は交通量の再現や予測にその焦点が当てられていたが、近年はマルチモーダル，TDM、ITS 施策といったソフト施策の評価が重要となってきている. そこで確定的利用者均衡配分による交通量推計が行われるようになった．確定的利用者均衡配分とは以下に示す Wardrop の第一原則を仮定したモデルである．

―Wardrop の第一原則(等時間原則)―
それぞれのドライバーは自分にとって最も旅行時間の短い経路を選択する．その結果として、起終点間に存在する経路のうち，利用される経路の旅行時間は皆等しく，利用されない経路の旅行時間よりも小さいか，せいぜい等しいという状態となる．

2

確定的利用者均衡配分モデル

ここでは確定的利用者均衡配分のモデルについて扱う．まずモデルを構築するにあたっての前提条件を二つ仮定する．

1. 起終点の旅行時間は，その通過経路を構成するリンクの旅行時間の和で表わされる．
2. 各リンクのリンク旅行時間はそのリンクの容量と交通量のみによって決まり，他のリンク(対向車線や交差する道路等) の交通状況には影響を受けない．
確定的確定的利用者均衡配分問題は、すべての OD 間のフロー数が与えられたときに Wardrop の第一原則を満たすリンクフローを求める問題である. まず定式化の際に用いる変数の定義を表 3.1 に示す.

表 3.1 変数の定義

a

リンクr

出発地s

目的地k

バス(経路)𝑥𝑎

リンク a におけるフロー数𝑡𝑎

リンク a における旅行時間

𝑓𝑘𝑟𝑠

OD ペア rs を結ぶパス k におけるフロー数

𝑐𝑘𝑟𝑠

OD ペア rs を結ぶパス k における旅行時間

𝑞𝑟𝑠

OD ペア rs 間の総フロー数𝑟𝑠
𝛿𝑎,𝑘リンク a が OD ペア rs を結ぶパス k 上にあるとき 1，それ以外のときは 0

先の二つの前提条件を仮定したとき Wardrop の第一原則が成り立っている状態を数式で表現すると式(2.1)のようになる．
(𝑐𝑘𝑟𝑠 − 𝑢𝑟𝑠 ) ≥ 0
𝑐𝑘𝑟𝑠 − 𝑢𝑟𝑠 = 0(2.1)

ここで𝑢𝑟𝑠 は OD ペア rs 間の最小旅行時間である．次に利用者均衡条件を満たす，つまり式(2.1)を満たすような等価な数学的問題に置き換える．これはすべての OD 間のフロー数𝑞𝑟𝑠 が与えられたときに，利用者均衡条件を満たす全てのリンクフロー𝑥𝑎 を求める問題である．このとき，式(2.2)のように定式化できる．
𝑥𝑚𝑖𝑛 𝑧(𝑥) = Σ𝑎 ∫0 𝑎 𝑡𝑎 (𝜔)𝑑𝜔(2.2)

ここで x はすべてのリンクを表わすベクトルで，x= (...,𝑥𝑎 ….)である．制約条件は，式(2.3)，式(2.4)のようになる．
Σ𝑘 𝑓𝑘𝑟𝑠 = 𝑞𝑟𝑠(2.3)

𝑓𝑘𝑟𝑠 ≥ 0(2.4)

また当然満たされるべき関係として式(2.5)，式(2.6)がある．
𝑟𝑠𝑥𝑎 = ∑𝑟 ∑𝑠 ∑𝑘 𝑓𝑘𝑟𝑠 𝛿𝑎,𝑘(2.5)

𝑟𝑠𝑐𝑘𝑟𝑠 = Σ𝑎 𝑡𝑎 𝛿𝑎,𝑘(2.6)

3

リンクパフォーマンス関数
前節(2)で，𝑡𝑎 (リンク a における旅行時間)を使用して配分問題の定式化を行った．ここでは，リンクにおける旅行時間を求めるために使用されるリンクパフォーマンス関数について説明する．
リンクパフォーマンス関数とは，ネットワークを構成する個々のリンクのサービス水準(一般的に旅行時間)をリンク交通量とリンク属性の関数として表したものである．確定的利用者均衡配分計算に用いられるリンクパフォーマンス関数として，代表的なものは BPR 関数と Davison 関数が知られている．ここでは BPR 関数について説明する．

BPR 関数は，1964 年に米国で作成され，実用的なリンクパフォーマンス関数として研究や実務の場面において古くから利用されている．概形は図(3.1)に示す．

旅行時間 t(x)BPR 関数𝑡0 (1 + 𝛼)𝑡0
交通容量

交通量(c)(x)

図 3.1 リンクパフォーマンス関数概形

BPR 関数は式(3.2)に示したような関数で，旅行時間をリンク交通量と以下に示すようなリンク属性で表している．
𝑥𝛽

BPR 関数：𝑡𝑎 (𝑥𝑎 ) = 𝑡𝑎0 {1 + 𝛼 (𝐶𝑎 ) }𝑎𝑡𝑎 ：リンク a の旅行時間
𝑡𝑎0：リンク a の自由旅行時間
𝑥𝑎 ：リンク a の時間交通量(台/時)
𝐶𝑎 ：リンク a の時間交通容量(台/時)α, β：パラメータa(3.2)

なお，配分計算のアルゴリズムとして Frank−Wolfe 法(次節説明)などを用いる場合には，交通量のすべての領域で定義されたリンクパフォーマンス関数(BPR 関数など)の適用が前提とされている．
4

確定的利用者均衡配分問題解法アルゴリズム(2)では，配分問題の定式化を行った．ここではその問題を解くアルゴリズムについて説明を行う．確定的利用者均衡配分の解法の一つ線形計画法である Frank−Wolfe 法を説明する．Frank−Wolfe 法は計算手順が比較的簡単でプログラムを作成しやすいという長所がある一方で、均衡解に近づくに従い収束が緩慢になる．具体的
𝑛なアルゴリズムを以下に示す．また𝑢𝑟𝑠
は n 回目の試行を行ったときの OD 間最小旅行時間を表わす．

ステップ 0:初期実行可能解の設定
すべてのリンクの交通量𝑥𝑎0=0 としリンク旅行時間𝑡𝑎0を計算する．この旅行時間に基づきall−or−nothing 配分(交通量 0 のときのリンク旅行時間を用いた最適経路配分)により初期実行可能解(リンク交通量の初期値) 𝑥𝑎1 を設定する．このとき繰り返し計算の試行回数 n=1 とする．

ステップ 1：リンク旅行時間の更新
𝑛
リンク交通量𝑥𝑎𝑛 に対するリンク旅行時間𝑡𝑎𝑛 を計算する．このとき OD ペアごとの最小旅行時間𝑢𝑟𝑠を計算する．
ステップ 2：降下方向ベクトルの探索
リンク旅行時間𝑡𝑎𝑛 の状態ですべての OD 間の交通量を最短経路に配分し、そのときの交通量を𝑦𝑎𝑛とする．𝑑𝑎𝑛 = 𝑦𝑎𝑛 − 𝑥𝑎𝑛 によって降下方向ベクトル𝑑𝑎𝑛 を計算する．
ステップ 3：降下ステップサイズの探索式(4.1)のような𝑥𝑎𝑛+1に対して式(2.2)で表される目的関数の値が最も小さくなるような𝛼 𝑛 を検索する．すなわち式(4.2)を解くことで𝛼 𝑛 を探索すればよい．得られた𝛼 𝑛 によって𝑥𝑎𝑛+1を計算する．新たなリンク
𝑛+1
交通量から旅行時間𝑡𝑎𝑛+1を計算し，OD ペアごとの最小旅行時間𝑢𝑟𝑠を計算する．

𝑥𝛼𝑛+1 = 𝑥𝛼𝑛 + 𝛼 𝑛 𝑑𝑎𝑛 = 𝑥𝛼𝑛 + 𝛼 𝑛 (𝑦𝑎𝑛 − 𝑥𝑎𝑛 )𝑥 𝑛 +𝛼𝑛 (𝑦𝑎𝑛 −𝑥𝑎𝑛 )𝑚𝑖𝑛0≤𝛼≤1 Σ𝑎 ∫0 𝛼𝑡𝑎 (𝜔)𝑑𝜔(4.1)(4.2)

ステップ 4：収束判定式(4.3)の収束条件(この収束判定基準は唯一のものではない)が満たされていれば，n=n+1 としステップ 1 へ戻る．収束条件が満たされていれば，計算を終了しリンク交通量𝑥𝛼𝑛+1を解として出力する．
ただし，式(4.3)の中の𝜅はあらかじめ決定された定数とする．

∑𝑟𝑠
5𝑛+1 −𝑢𝑛 ||𝑢𝑟𝑠
𝑟𝑠𝑛+1𝑢𝑟𝑠≤ 𝜅

計算ダイアグラム

交通量配分計算は以下のような手順で計算を行います．

インプット①リンク情報：リンクの始点と終点(上り下りは区別)・交通容量・リンク長・自由旅行時間・

BPR 関数のパラメータ𝛼, 𝛽・制限速度②自動車の OD 表：各ゾーンから各ゾーンに向かう自動車の台数

ゾーンごとにセントロイドを設定して，セントロイドを起点とした交通量配分を考える．

リンクパフォーマンス関数の設定し，リンクごとの旅行時間と時間交通量の関係を求める(今回のプログラムでは BPR 関数を使用)

配分計算
Wardrop の第一原則(等時間原則)を満たすように数理最適化問題を解く

アウトプット
交通量・リンク通過速度・リンク混雑度

(4.3)

6

プログラムの説明

実際にプログラムについて，(a)プログラム利用方法, (b)入力ファイルの形式について説明します.
(a)プログラム利用方法
今回は，C 言語を用いて配分計算を行います.
配分プログラムに用いたファイルは右図のようにソースファイル 5 つ, ヘッダ
ーファイル 4 つとなっています.
基本的にはソースファイル main.c 中のファイルの読み込みの部分を変更することでサンプルデータ以外でも計算を行うことが可能です.
下に main.c ファイルの一部を示します.

ダブルクォーテーションで囲まれた部分がファイル名でそれぞれリンクファイル, ノードファイル, OD データファイ
ル 1, OD データファイル 2, 出力データに対応しています. またこの場合は配分プログラムのプロジェクトの直下にデータを置いているためディレクトリーの指定などがありませんが, 例えばデスクトップ上にリンクファイルがある
場合であれば”YOKOHAMAlink.csv”を” C:/Users/(ここはユーザー名)/Desktop/YOKOHAMAlink.csv”に置き換えれば同様にプログラムを回すことが可能です. 出力データについても同様にその場所を指定することができます.
(b)入力ファイルの形式
入力するファイルの形式について説明します. 入力ファイルを以下のような形式に変更することでサンプルデータ以外についても同様にプログラムを用いて計算することができます.
①リンクファイルについて(YOKOHAMAlink.csv)
LinkID：リンクの ID 番号
O：リンクの起点ノード番号

D: リンクの終点ノード番号
lanes: リンクの車線数
maxspeed: リンクの制限速度②ノードファイルについて(YOKOHAMAnode.csv)
NodeID: ノードの ID 番号
lat: ノードの緯度
lon: ノードの経度③OD ファイルについて 1(YOKOHAMAOD.csv)
olat: 出発ノードの緯度
olon: 出発ノードの経度
dlat: 到着ノードの緯度
dlon: 到着ノードの経度
number: OD 間交通量

④OD ファイルについて 2(YOKOHAMAOd_node.csv)
onode: 起点ノード ID
dnode: 終点のード ID
number: OD 間交通量7

計算例

横浜のネットワークデータを用いて，配分計算をしました．入力情報と出力結果について説明します．
(a)入力情報について
ネットワークに関しては，OSM から取得したデータを使用しています．データの一部を以下に示します.

ノード数: 149545
リンク数: 379000
OD ペア数: 324

ゾーンは中ゾーンで, 計算には横浜市に含まれる以下の図の 101, 102, 111, 112, 113, 114, 121, 122, 123,124, 125, 126,131, 132, 133, 134,141, 142 の 18 ゾーンで行いました.

セントロイドに関しては，ゾーンの中心部を求め，そこに最も近い交差点に配置しています．
各ゾーン中のセントロイドの情報は centroid.csv ファイルを参照してください.

次に，リンク情報と自動車の OD 表の情報に関しては，以下のように設定しました．
①リンク情報道路容量(台/日)]：可能交通容量 1500 台/時/車線・日換算係数 16.0 として導出
リンク長(km)：OSM(Open Street Map)から取得
自由旅行時間 (分)：リンク長を制限速度で割ることで導出
𝛼, 𝛽[BPR 関数のパラメータ]：𝛼 = 0.48, 𝛽 = 2.82
制限速度(km/時)]：全道路 20km/時と設定②自動車の OD 表

(b) 出力結果
出力結果は以下のようになります．
ID: リンクの ID 番号
O： リンクの起点ノードの ID 番号
D: リンクの終点ノードの ID 番号
交通量: 配分後のリンク交通量

また, C 言語のコンソール画面は以下のように表示されます.