スライド 1

列生成による配船計画
アルゴリズムの数値計算結果
配船計画問題の定式化

目的関数
• 全ての船舶の総移動コストの最小化


移動コスト:移動距離/移動時間/燃料消費量/CO2排
出量など
制約条件
•
•
•
•
オーダーの制約:時間指定
船の制約:輸送量、船型
移動の制約:移動時間
港・荷役の制約:入出港時間、
荷役時間
オーダー
船
積港
移動
揚港
列生成法による計画作成
各船舶ごとに、運航可能な航路で
効率的なものを列挙しておく
全てのオーダーが処理されるように、各
船舶の運航航路を1つずつ選ぶ
列生成法による計画作成
各船毎に「最短路問題」を解き、
有効な候補スケジュールを求める
繰
り
返
す
これまでに得られている候補から
なる集合分割問題を解いて、良い
スケジュールを選ぶ
2で得られた双対情報から、もっと
よいスケジュールを求めるための
最短路問題を定義する
集合分割問題
を解いて、最終
的な計画を得る
これ以上良い
候補がなくなれ
ば終了
列生成法による計画作成
船1の候補
船2の候補
船3の候補
候補ルート
1
オーダー1
オーダー2
オーダー3
オーダー4
オーダー5
オーダー6
2
3
4
5
6
7
8
9
運航航路を1つずつ選ぶ
実際は、2週間50オーダーで1隻あたり数万本以上
10隻だとすると、[ 数万本]の10乗とお
りをチェック しなければならない
人手では不可能
集合被覆問題に定式化して解く
集合分割問題への定式化
最小化
制約条件
T
c
x
Ax=1
x は0または1の変数
c, x: n次元ベクトル, A: m × nの行列
計算手法
x1
x1
x2
x2
x3
x3
x4
x4
x5
x5
X
x6
x6
x7
x7
x8
x8
x9
1
2
3
4
5
6
7
8
9
オーダー1
1
1
オーダー2
1
オーダー3
オーダー4
1
1
1
1
1
1
1
1
オーダー5
オーダー6
1
1
1
1
1
1
1
1
目的関数: 船舶の総航行距離の最小化
各候補ルートの航行距離をコストと定義する
タスク1
タスク2
タスク3
タスク4
タスク5
c
c1
c2
c3
c4
c5
c6
c7
c8
c9
1
2
3
4
5
6
7
8
9
集合分割問題への定式化
c
X
X
最小化
1
1
1
1
1
1
b=
1
2
タスク1
1
1
タスク2
1
タスク3
タスク4
3
4
5
7
8
9
1
=
1
1
1
1
1
1
1
1
タスク5
タスク6
6
1
1
1
1
1
1
1
最も自明な計算方法
全ての可能なスケジュールを列挙して、その中でもっとも
効率のよいものを選べばよい→ 全列挙による解法
ところが、全列挙には控えめに見て数日かかる
条件を満たす配船計画の集合
最も効率的な計画
列挙型アルゴリズムの例: 制約論理プログラミング(CP)
制約論理プログラミング
Constraint Programming, CP
制約条件をみたすものを、全て列挙するための手法
目的関数を最小化するものを見つける方法ではない
用途: ●ごく小規模な問題で、 (配船計画ではせいぜい3日分)
●制約条件が線形不等式で表現できないほど複雑なとき
●条件を満たすものを全て列挙するために用いる
制約条件を満たす要素の集合
間違ってつかうと機能しない
↑ CPソフトの販売元も注意を
喚起している
制約論理プログラミング
目的関数を最小化するものを見つける方法ではない
どうしても目的関数を設定したければ、、、、
今まで見つかった物の中で、最も目的関数が小さいものを採用する。
全列挙するのは数日かかるんじゃないの?、、、、
早く見つかることを祈って待つ
制約条件を満たす要素の集合
目的関数を制約条
件として指定する方
法を提唱されている
が、そもそもそういう
用途に使うものでは
ない、、、、
全列挙とはどういうことか?
条件を満たす配船計画の集合はいくつあるのか?
全列挙とはどういうことか?
巡回セールスマン問題
配船計画よりも遙かに簡単で、有名な組合せ最適化問題
与えられるデータ:n個の点と、各点間の距離
制約条件:全ての点を1度ずつ通り、最初の点に戻る
目的:巡回路の距離をできるだけ短くしたい
全列挙とはどういうことか?
巡回セールスマン問題を全列挙で解く:
可能な経路を全て列挙し、その中で距離が一番小さなものを選ぶ
実際に計算機を用いて数え上げるとどれくらいかかる?
10TFlopsの計算を用いた場合(1秒間に10^13回の演算が可能)
(地球シミュレーターが35.86TFlops)
都市数
巡回路の数
計算時間
6
60
4.32x10^{-10}秒
8
2520
3.32x10^{-8}秒
10
1.81x10^5
3.63x10^{-6}秒
15
4.36x10^10
1.96秒
20
6.08x10^16
4.87x10^6秒
25
3.10x10^23
3.88x10^13秒
30
4.42x10^30
7.96x10^20秒
56日
122万年
252333億年
全列挙とはどういうことか?
都市数
巡回路の数
計算時間
6
60
4.32x10^{-10}秒
8
2520
3.32x10^{-8}秒
10
1.81x10^5
3.63x10^{-6}秒
15
4.36x10^10
1.96秒
20
6.08x10^16
4.87x10^6秒
25
3.10x10^23
3.88x10^13秒
30
4.42x10^30
7.96x10^20秒
56日
122万年
252333億年
全列挙計算を実用システムで用いるとどうなるか?
都市数15の問題が2秒で解けたユーザーは、
都市数20の問題を解くのに56日かかるとは思わない
実用システムでは、小規模な問題以外では全列挙ベースの計算
手法は使ってはいけない
列生成の概念図
「最短路問題」により、コスト面で明らかに解にならないものがわかる
こういうものは、見なくてよい
条件を満たす配船計画の集合
有効な集合
はごく一部
ここだけ見ておけばよい
列生成法に関する注目点
②定数時間の計算時間が期待できる
船の数が2倍、あるいは計画期間が2倍になって
も、せいぜい2倍+αの計算時間しかかからない
ことが期待できる
厳密には理論的には違うが、実際の計算では
そう見てよい
目的: 実用規模の問題を解く
計算手法の開発
十分短い計算時間
入力データに対する頑強性
十分短い計算時間
現在のオペレーター担当者へのヒアリングより、想定される使用方法
担当者
配船計画案
受注状況の調整
データの変更
繰り返す
受注貨物データ
船舶データ
入力
計算結果
配船計画システ
ムに入力
入力データに対する頑強性
貨物需要は月によって変化
①
どのような偏りのある貨物データが来ても、
問題無く結果を出すこと
ユーザーが解きたい問題のサイズは
そのたびに異なる
②
数倍程度問題が大きくなっても、
問題無く結果を出すこと
定数時間のアルゴリズム
実用システムでは、全列挙ベースの計算手法は使ってはいけない
ではどうするか?
問題規模がK倍になっても
計算時間はせいぜいK倍プラスアルファしか大きくならず、
十分よい解が得られることが実験などで確かめられている
アルゴリズムを用いる必要がある
定数時間のアルゴリズム
そんなものが作れるのか?
1から作るのは、非常に難しい
膨大な数値実験が必要
幸い、数十年に渡る膨大な既存研究があり、
さまざまな手法に対するアイデア、計算機実験による検証は
既に行われている
Standing on the shoulders of giants
Don’t reinvent the wheel
配船計画の既存研究
1960年代から多数の研究が存在している。
→ 有効な計算手法はほぼ出揃っている。
「どの計算手法が適しているか?」の議論は既に完了
現在は事例開発、発表がなされているフェーズ
運航スケジュール作成
研究者
発表年
目的
Cargo
計算手法
Bausch et al.
1998
Min.cost
Refined oil
SP
Bremer and Perakis
1992
Min.cost
Crude oil
SP
Brown et al.
1987
Min.cost
Crude oil
SP
Cho and Perakis
2001
Min.cost
Bulk
IP
Christiansen and Fagerholt
2002
Min.cost
Dry bulk
SP
Fagerholt
2001
Min.cost
Dry bulk
SP
Fagerholt and Christiansen
2000a,b
Min.cost
Fertilizers
SP
Perakis and Bremer
1992
Min.cost
Crude oil
SP
Ronen
1986
Min.cost
Bulk
IP+heuristics
Scott
1995
Min.cost
Refined oil
Langarnge
relaxation.
Sherali et al.
1999
Min.cost
Cruide oil
MIP and heuristic
Vukadinovic et al.
1994
Min.cost
Gravel
Neural network
Vukadinovic et al
1997
Min.cost
Gravel
Neural network
船隊規模設計、航路決定
研究者
発表年
目的
Cargo
計算手法
Bendall and Stent
2001
Max. profit
Containers
MIP
Cho and Perakis
1996
Max. profit
Containers
SP
Crary et.al.
2002
Max. profit
-
MIP + 担当者操作
Dantzig and Fulkerson
1954
Min. num of ves.
Crude oil
LP
Darzentas and Spyrou
1996
Evaluate solution
Passengers
Simulation
Fagerholt
1999
Min. cost
Containers
IP+DP
Fagerholt et. Al.
2000
Min. cost
General Cargo
IP+DP
Fagerholt et.al
2002
Evaluate solution
Fresh Water
Simulation
2001
Min.cost
Containers
Simulation
1988
Min. cost
Sludge
Heuristics
Mehrez et al.
1995
Min. cost
Dry bulk
MIP
Pesenti
1995
Max. profit
Containers
Heuristics
Richetta and Larson
1997
Evaluate solution
Solid Waste
Heirustics
Imai and Rivera
Larson
在庫管理+運航スケジュール
研究者
発表年
目的
Cargo
計算手法
Chajakis
1997,2000
Min. cost
Bulk oil
MIP and sim.
Christiansen
1999
Min. cost
Bulk ammonia
MIP + Dantig Wolfe 分解
Christiansen and
Nygreen
1998a,b,2001
Min. cost
Bulk ammonia
MIP + Dantig Wolfe 分解
Flatberg et al.
2000
Min. cost
Bulk ammonia
Heuristics
Fox and Herden
1999
Min. cost
Ammonia products
MIP
Kao et al.
1993
Min. cost
Coal
非線形計画
Liu and Sherali
2000
Min. cost
Coal
MIP and heuristics
Mehrez et al.
1995
Min. cost
Dry bulk minerals
MIP
Ronen
2002
Min. cost
Liquird oil
MIP and heuristics
Shih
1997
Min. cost
Coal
MIP
不定期船のスケジューリング
研究者
発表年
目的
Cargo
計算手法
Appelgren
1969,1971
Max. profit
Refrigerateded
MIP+DantzigWolfe分解
Bausch et al.
1998
Min. cost
Liquid bulk oil
SP
Christiansen
1999
Min. cost
Bulk anmonia
MIP+DantzigWolfe分解
Fagerholt
2003
Max. profit
Any
Heuristics
Kim and Lee
1997
Max. profit
Bulk
SP
Sherali et al.
1999
Min. cost
Crude oil
MIP and
heuristics
定期船スケジューリング
研究者
発表年
目的
Cargo
計算手法
Jaramillo and
Perakis
1991
Min. cost
General
LP +
heuristics
Perakis and
Jaramillo
1991
Min. cost
General
LP +
heuristics
Powell and
Perakis
1997
Min. cost
General
IP
用いられる計算手法
:
頻繁に用いられる手法(実績のある手法)
計算手法
計算手法
計算手法
LP (線形計画問題)
SP(集合分割問題)
Heuristic(近似解法)
IP(整数計画問題)
Simulation
MIP+Dantzig-Wolfe
MIP(混合整数計画問題)
IP+DP(IP+動的計画法)
NLP(非線形計画問題)
解きたい問題(現実の問題)
問題のクラス
モデル化
計算手法
NLP
MIP
IP
SP
解く
Dantzig-Wolfe分解
Heuristic
Simulation
DP
配船計画の既存研究
→ 有効な計算手法はほぼ出揃っている。
我々のやるべきこと
最も有効な手法を選択し、
国内の海運、港湾環境に合わせて修正すること
条件の変化、問題規模の増大に対して頑強な解法
→ 列生成法(Dantzig-Wolfe分解)による近似解法
今回採用した手法
Heuristic(近似解法)
SP(集合分割問題)
Dantzig-Wolfe分解
DP(動的計画法)
対象の問題
問題のクラス
NLP
MIP
IP
計算手法
Dantzig-Wolfe分解
SP
Simulation
Heuristic
DP
効率的な候補は少ない
1隻あたり数万本以上の候補の
ほとんどは非効率
効率的な候補を選ぶ
効率的な数百本の候補
「最短路問題」
極めて高速
定数時間
見込みのない候補は、探
索の必要すらない
制約条件を満たすスケジュール候補
数万本?数十万本?もっと?
効率的な候補を選ぶ
各船舶に対して、「最短路問題」と呼ばれる最適化問題を解けばよい
「最短路問題 」は定数時間で解ける!!!
貨物数(期間)が倍になっても、計算時間は2倍程度
数値実験
A社
対象製品
白油30品目
対象船
対象隻数
対象港
石油タンカー (5000DWT程度)
14隻
40港
数値実験
各船毎に「最短路問題」を解き、
有効な候補スケジュールを求める
これまでに得られている候補から、
良いスケジュールを選ぶ
集合分割問題
を解いて、最終
的な計画を得る
定数時間で解ける:
(反復回数)x(隻数)
小規模な線形計画問
題を解くだけので非
常に高速
整数計画問題を解く
←ほとんどの場合は数
分で済むが、、、非常に
時間がかかることはあ
り得る(今後の課題)
2週間分、14隻の計画作成
①最短路:73秒
②:暫定スケジュール選択:0.1秒
③:集合分割問題:0.5秒
①
各船毎に「最短路問題」を解き、
有効な候補スケジュールを求める
航行距離5.4パーセント減少
②
繰
り
返
す
これまでに得られている候補から、良いスケ
ジュールを選ぶ
③
集合分割問題を解いて、最
終的な計画を得る
反復は70回で終了
(1隻あたり70本の候補)
得られた双対情報から、もっとよいスケジュール
を求めるための最短路問題を定義する
これ以上良い候補が
なくなれば終了
3週間分、14隻の計画作成
①最短路:224秒
②:暫定スケジュール選択:0.2秒
③:集合分割問題:53秒
①
各船毎に「最短路問題」を解き、
有効な候補スケジュールを求める
航行距離6.5パーセント減少
②
繰
り
返
す
これまでに得られている候補から、良いスケ
ジュールを選ぶ
③
集合分割問題を解いて、最
終的な計画を得る
反復は127回で終了
(1隻あたり127本の候補)
得られた双対情報から、もっとよいスケジュール
を求めるための最短路問題を定義する
これ以上良い候補が
なくなれば終了
3週間分、14隻の計画作成
①最短路:80秒(<-224秒)
②:暫定スケジュール選択:0.2秒
③:集合分割問題:74秒(<-53秒)
①
各船毎に「最短路問題」を解き、
有効な候補スケジュールを求める
航行距離4.5パーセント減少
127回のときは6.5
②
繰
り
返
す
これまでに得られている候補から、良いスケ
ジュールを選ぶ
③
集合分割問題を解いて、最
終的な計画を得る
反復は50回で打ち切り
(1隻あたり50本の候補)
得られた双対情報から、もっとよいスケジュール
を求めるための最短路問題を定義する
これ以上良い候補が
なくなれば終了
4週間分、14隻の計画作成
①最短路:651秒
②:暫定スケジュール選択:0.5秒
③:集合分割問題:7.8秒
①
各船毎に「最短路問題」を解き、
有効な候補スケジュールを求める
航行距離6.2パーセント減少
②
繰
り
返
す
これまでに得られている候補から、良いスケ
ジュールを選ぶ
③
集合分割問題を解いて、最
終的な計画を得る
反復は300回で打ち切り
(1隻あたり300本の候補)
得られた双対情報から、もっとよいスケジュール
を求めるための最短路問題を定義する
これ以上良い候補が
なくなれば終了
4週間分、14隻の計画作成
①最短路:185秒 ( <- 651秒)
②:暫定スケジュール選択:0.2秒
③:集合分割問題:44秒 ( <- 7.8秒)
①
各船毎に「最短路問題」を解き、
有効な候補スケジュールを求める
航行距離6.2パーセント減少
②
繰
り
返
す
これまでに得られている候補から、良いスケ
ジュールを選ぶ
③
300回と同じ答え
集合分割問題を解いて、最
終的な計画を得る
反復は100回で打ち切り
(1隻あたり100本の候補)
得られた双対情報から、もっとよいスケジュール
を求めるための最短路問題を定義する
これ以上良い候補が
なくなれば終了
列生成による計画作成
本数/隻
LP
2週間 14隻 73秒
70本
0.1秒
3週間 14隻 224秒
127本
3週間 14隻 80秒*
期間
隻数
候補生成
トータル
改善
0.5秒
73秒
5.4%
0.2秒
53秒
275秒
6.5%
50本*
0.2秒
74秒
154秒
4.5%
4週間 14隻 651秒*
300本*
0.5秒
7.8秒
659秒
6.2%
4週間 14隻 185秒*
100本*
0.5秒
44秒
229秒
6.2%
1秒
50秒
1550秒
5%
2週間 25隻 1500秒* 100本*
選択
*: 候補スケジュールの生成を途中で打ち切った場合
ちなみにCPでは、、
これは列生成の結果
期間
隻数
候補生成
2週間 14隻 73秒
本数/隻
LP
70本
0.1秒
選択
0.5秒
トータル
改善
73秒
5.4%
2週間14隻分の配船計画: 列生成では1分超で最も航行距離の小さい計画が求まる、
ところが、CPでは実行可能な計画を1つ見つけるのすら難しい。
白い点をど
れか一つ見
つける
白い点ひとつ見つけるより、
たった一つの赤い点を見
つける方が遙かに難しい
たった一つ
の赤い点を
見つける
ここで扱っている
配船計画問題は、
CPの適用可能
範囲を遙かに超
えている
CPで計画を作ろうとすると、
これは列生成の結果
期間
隻数
候補生成
2週間 14隻 73秒
本数/隻
LP
70本
0.1秒
選択
0.5秒
トータル
改善
73秒
5.4%
CPでは、3日を超える計画を見つけることは難しい、そこで例えば
1.初日1日分の実行可能な計画をいくつかCPで列挙し、その中から一つを選ぶ
2.次の一定期間(2日程度)のデータについて実行可能な計画を
CPによって列挙し、その中から初日とうまくつながるものを選ぶ
3.次の一定期間のデータについて実行可能な計画をCPによって
列挙し、その中から2.の期間とうまくつながるものを選ぶ
以下、3.を繰り返す。
この方法により、2時間(!!)で
実行可能な計画(白い点)が1つ求まった
たった一つ
白いものを の赤い点を
どれか一つ 見つける
見つける