Upload
bethesda-sharp
View
46
Download
2
Embed Size (px)
DESCRIPTION
ロジスティクス工学 第 10 章 施設配置モデル 第 11 章 ロジスティクス・ネットワーク 設計モデル サプライ・チェインの設計と管理 第2章 ロジスティクス・ネットワークの構成 コケコーラの事例を読んでおくこと! 副読本:組合せ最適化 [ 短編集 ] 第 10 章 施設配置問題. 東京商船大学 久保 幹雄. 平面上の配置問題 Fermat (フェルマー) の古典問題. 各点上に顧客がいるとして,顧客の歩く総距離が最小になる点に施設を建てる. ->Weber 問題 -> 施設配置問題 - PowerPoint PPT Presentation
Citation preview
ロジスティクス工学第 10 章 施設配置モデル
第 11 章 ロジスティクス・ネットワーク設計モデル
サプライ・チェインの設計と管理第2章 ロジスティクス・ネットワークの構成
コケコーラの事例を読んでおくこと!
副読本:組合せ最適化 [ 短編集 ] 第 10 章 施設配置問題
東京商船大学久保 幹雄
平面上の配置問題Fermat (フェルマー)の古典問
題• 各点上に顧客がいるとして,顧客の歩く総距離が最小に
なる点に施設を建てる. ->Weber 問題 -> 施設配置問題• 各点上にコンピュータがあるとして,総距離が最小にな
るように繋ぐ.(ただしハブを使っても良い.) ->Steiner 木問題
Steiner (スタイナー)木問題• 平面上に点が与えられたとき,総距離が最小
になるように繋ごう!ただし中継点を使っても良い.(中継点なしだと最小木問題になり簡単(どん欲アルゴリズムで解ける!)
距離の 2 乗和を最小にする平面上の施設配置問題
距離の 2 乗和を最小にする平面上の施設配置問題
• n 人の顧客が平面上に分布しており,その座標を (Xi,Yi), i=1,...,n とする.このとき,顧客からの距離の2乗和を最小にするような施設は平面上のどこに作れば良いか?
• f(X,Y)=Σi (Xi-X) 2+(Yi-Y)2 最小にする (X,Y)
を求める問題
(2,1),(9,1),(12,3)(2,1),(9,1),(12,3)(5,8),(11,7)(5,8),(11,7)
(( Xi,Yi)Xi,Yi)
距離の 2 乗和を最小にする平面上の施設配置問題の解法
距離の 2 乗和を最小にする平面上の施設配置問題の解法
• f(X,Y)=Σi (Xi-X) 2+(Yi-Y)2 を最小にす
る! -> 微分する!• ∂f(X,Y)/∂X =• ∂2f(X,Y)/∂X2 =
So f(X,Y) is . X* = Y* =
Weber (ウエーバー)問題Weber (ウエーバー)問題• n 人の顧客が平面上に分布しており,その座
標を (Xi,Yi), i=1,...,n とする.このとき,顧客からの距離の和( 2 乗和でなはい!)を最小にするような施設は平面上のどこに作れば良いか?
• f(X,Y)=Σi {(Xi-X) 2+(Yi-Y)2 }1/2 を最小にす
る (X,Y) を求める問題
(2,1),(9,1),(12,3)(2,1),(9,1),(12,3)(5,8),(11,7)(5,8),(11,7)
(( Xi,Yi)’s are:Xi,Yi)’s are:
Weber 問題の解法Weber 問題の解法
• f(X,Y)=Σi {(Xi-X) 2+(Yi-Y)2 }1/2 を微分
してみる.• ∂f(X,Y)/∂X =• ∂2f(X,Y)/∂X2=
So f(X,Y) is . X* = Y* =
練習問題練習問題• Find the optimal location of the facility of
Continuous Location and Weber examples.
k- メディアン問題
A B C D EA 0 4 3 2 6B 4 0 2 3 4C 3 2 0 1 3D 2 3 1 0 4E 6 4 3 4 0
A B
CD E
2
1
2
3
4
4
(3)
(3) (2) (1)
(1)距離
各点上にいる顧客 A,B,C,D,E (カッコ内の数字は人数を表す)は,開設された最も近い施設を利用するものとする.このとき,顧客の総走行距離を最小にするように, k 個の施設を選択せよ.
k- メディアン問題(定義)• 無向グラフ G=(V,E)• 距離関数 d: E→R+ (非負の実数)• 需要関数(点の重み) w: V →R+
• 施設の数 k (正数) が与えられたとき,
となるような点集合 S を求める問題. ただし, d(i,j) は 2 点 i,j の最短距離を表す.
Vj
Sij
kSjidw ),(minmin
S 内の最も近い施設に行く
総移動距離を最小にする k 個の施設を選択
重みつきの合計をとる
施設を点の上に配置したと仮定しても最適性が失われないことの証明 (1)
p qx
d(x,p) d(x,q)=d(p,q)-d(x,p)
k=1 の場合で証明枝 p,q の間の x に配置するのが最適と仮定
P: p 経由の方が近い点集合Q: q 経由の方が近い点集合
Pj Qj
jj ww
P の方が顧客が多いと仮定 (w.l.g.:without loss of generality)
PQ
施設を点の上に配置したと仮定しても最適性が失われないことの証明 (2)
Qjj
Pjj
Pj Qjjj
Qjj
Pjj
Qjj
Pjj
Vjj
jqdqpdwjpdwwwpxd
jqdpxdqpdwjpdpxdw
jqdqxdwjpdpxdwjxdw
),(),(),(),(
),(),(),(),(),(
),(),(),(),(),(
d(x,q)=d(p,q)-d(x,p)
Pj Qj
jj ww d(p,j) d(p,q)+d(q,j)≦点 p から j へ行くには,Q 経由より直接の方が近い!
0以上
Vj
jQj
jPj
jVj
j jpdwjpdwjpdwjxdw ),(),(),(),(
途中の点 x の施設より点 p の方が良い!
k- メディアン問題の Excel による表現( median.xls)
Open0 4 3 2 6 04 0 2 3 4 13 2 0 1 3 02 3 0 1 4 16 4 3 4 0 0
99999 99999 99999 99999 999994 0 2 3 4
99999 99999 99999 99999 999992 3 0 1 4
99999 99999 99999 99999 999992 0 0 1 4 Min Dsitance3 1 2 3 1 Demand6 0 0 3 4 13 Total
A B C D E F G123456789101112131415
=IF(G2=1,A2,99999)
=MIN(A8:A12)
=A13*A14
=SUM(A15:E15)
もし G2 のセルに1が入っていたら, A2 の値,それ以外なら大きな数
貪欲解法
• 貪欲解法( greedy algorithm ) k=1 の場合の最適な施設( 1- メディア
ン)を求め,それを固定した上で,次の施設を順に(施設数が k になるまで)選択していく.
1つの施設を建てる場合 -> 点 D が最適!
2つの施設を配置する場合:貪欲解法のとき 点 D と点 [ ] 最適解 点 [ ] と点 [ ]
貪欲解法(逆順)(組合せ最適化短編集 第 10 章の第1話参照)
• 貪欲解法とは逆に,すべての施設が配置されている場合からはじめて, 1 つの施設を除いたときの費用の増加が最も少ないもを削除.これを施設数が k になるまで繰り返す.(medan2.xls)
1顧客 2顧客 3顧客 4顧客A施設 110 585 165 595B施設 640 65 200 580C施設 670 590 125 115D施設 450 115 840 100
練習問題 (k- メディアン問題 )
A B
CD E
2
1
2
3
4
4(3)
(3) (2) (1)
(1)距離各点上にいる顧客 A-H (カッコ内の数字は人数を表す)は,開設された最も近い施設を利用するものとする.このとき,顧客の総走行距離を最小にするように, 1 個の施設を選択せよ.また, 2 個選択する場合はどうか ?Excel による試行錯誤と貪欲解法,貪欲解法(逆順)で解け.
F
GH
3 2
(1)
(4)(0)
k- センター問題
A B C D EA 0 4 3 1 2B 4 0 2 4 5C 3 2 0 2 3D 1 4 2 0 1E 2 5 3 1 0
A B
CD
E
1
2
2
1
4
距離
各点上にいる顧客 A,B,C,D,E は,開設された最も近い施設からサービスを受けるものとする.このとき,施設から最も遠い顧客への距離を最小にするように, k 個の施設を選択せよ.(消防署などの緊急を要する施設の配置で利用)
k- センター問題(定義)• 無向グラフ G=(V,E)• 距離関数 d: E→R+ (非負の実数)• 施設の数 k (正数) が与えられたとき,
となるような点集合 S を求める問題. ただし, d(i,j) は 2 点 i,j の最短距離を表す.
),(minmaxmin jidSiVjkS
S 内の最も近い施設から行く
最大距離を最小にする k 個の施設を選択
最も遠い(不利な)顧客を選択
1- センター問題の最適解必ずしも点の上とは限らない!
A B C D E maxA 0 4 3 1 2 4B 4 0 2 4 5 5C 3 2 0 2 3 3D 1 4 2 0 1 4E 2 5 3 1 0 5
点の上だとすると...行ごとの最大値を計算.それが最小になる点 [ ] が最適!
消防署の最適配置!
1- センター問題 ( 枝上への最適配置)
A B
CD
E
1
2
2
1
4
枝 (A,B) 上( A からの距離が x の地点)に配置する場合
A B
4
5(4)
(5)
(3)(4)
(5)
x
d(x,B)
d(x,A)
d(x,D)
d(x,C)
1
2
3
d(x,E)),(maxmin jid
VjkS
1- センター問題 ( 枝上への配置の下界の導出)
p x=0
q x=d(p,q)
p q
Mp=max{d(p,j)}
Mq=max{d(p,j)}
Mp-x
x+Mq-d(p,q)
最も小さい場合Mp-x=x+Mq-d(p,q)
x
2
),(MqMp qpd
1- センター問題 ( 最適解)
A B
CD
E
1
2
2
1
4(4)
(5)
(3)(4)
(5)
x
2
),(MqMp qpd
AB 上 ->(4+5-4)/2=2.5 <3
>3 ( C 上に配置)なら,枝 pq 上は調べなくて良い!
AD 上 ->(4+4-1)/2=3.5 >3
BC 上 ->
CD 上 ->
DE 上 ->
よって CD 上のみ調べれば良い!練習問題:枝 CD 上の最適配置をグラフを用いて求めよ.
容量制約なし施設配置問題
A B C D EA 0 4 3 2 6B 4 0 2 3 4C 3 2 0 1 3D 2 3 1 0 4E 6 4 3 4 0
7 8 9 7 6
=cij
= fj
輸送費用
各点の需要量は1
施設開設の固定費用
容量制約なし施設配置問題(定式化)I: 需要地点 ( 顧客)の集合J: 施設の配置可能地点の集合 xij = 顧客 i の需要が施設 j によって満たされる割合
yi = 1 施設が点 j 上に配置されるとき 0 それ以外のとき
ijJj Ii Jj
ijjj xcyf
最小化
Jjy
JjIix
JjIiyx
Iix
j
ij
jij
Jjij
条件
}1,0{
,0
,
1
Ii
ijij yIx
(下界が)弱い定式化
(式の本数は多いが下界が)強い定式化
十分に大きな数(=顧客の数)(使わない方がよい!)
練習問題• k- センター問題,容量制約なし施設配
置問題を試行錯誤で解くための Excel モデルを作成せよ.
• Excel を用いた試行錯誤( What If分析)を用いて k- メディアン , k- センター問題,容量制約なし施設配置問題を解け. ( k- メディアン , k- センター問題の場合には, k を色々変えてみよ.)
Lagrange緩和
Iii
Jjijij
Jj Ii Jjijjj uxxcyf 1 最小化
Jjy
JjIix
JjIiyx
Iix
j
ij
jij
Jjij
条件
}1,0{
,0
,
1
Jj
ijx 01
Lagrange 乗数(任意の実数)
0
Jjy
JjIix
JjIiyx
j
ij
jij
条件
}1,0{
,0
,最初の式の緩和 -> 最適値は等しいか小さい -> 下界 !
Lagrange緩和(子問題への分解)
Ii
iijJj Ii Jj
iijjj uxucyf 最小化
Jjy
JjIix
JjIiyx
j
ij
jij
条件
}1,0{
,0
,
-> 各 j (施設)ごとに分解できる! ij
Iiiijjj xucyf
最小化
条件
}1,0{
0
j
ij
jij
y
Iix
Iiyx
Ii
iu
を各 j について解いて を加える ->下界
各顧客がちょうど1つの施設に行く条件を緩和
そのかわりに顧客 iがui の「ご褒美」を施設に与える!
Lagrange緩和( Excel モデル) flp-lag1.xls
[cij] [ui] Lagrange乗数 施設名 Open 固定費用0 4 3 2 6 3 A 0 7 04 0 2 3 4 3 B 0 8 03 2 0 1 3 3 C 0 9 02 3 1 0 4 3 D 1 7 76 4 3 4 0 4 E 0 6 0
[cij- ui]- 16 Σ ui 7 固定費用の和- 3 0 0 - 1 00 - 3 - 1 0 00 - 1 - 3 - 2 0
- 1 0 - 2 - 3 00 0 - 1 0 - 4
- 4 - 4 - 7 - 6 - 4 Σ (cij- ui)-7 8 9 7 6 固定費用0 0 0 0 0 0 16 下界0 0 0 0 0 yj 17 上界
99999 99999 99999 99999 9999999999 99999 99999 99999 9999999999 99999 99999 99999 99999
2 3 1 0 499999 99999 99999 99999 99999
2 3 1 0 4 10開設している施設への最小輸送費用の和
[xii]0 0 0 0 0 10 0 0 0 0 10 0 0 0 0 10 0 0 0 0 10 0 0 0 0 1
[si]劣勾配
ここを変えると下界が変化(劣勾配はここに出てくる)
ここを変えると上界が変化
Lagrange緩和( Excel モデル) flp-lag1.xls[cij] [ui] Lagrange乗数 施設名 Open 固定費用
0 4 3 2 6 3 A 0 7 04 0 2 3 4 3 B 0 8 03 2 0 1 3 3 C 0 9 02 3 1 0 4 3 D 1 7 76 4 3 4 0 4 E 0 6 0
[cij- ui]- 16 Σ ui 7- 3 0 0 - 1 00 - 3 - 1 0 00 - 1 - 3 - 2 0
- 1 0 - 2 - 3 00 0 - 1 0 - 4
- 4 - 4 - 7 - 6 - 4 Σ (cij- ui)-7 8 9 7 6 固定費用0 0 0 0 0 0 16 下界0 0 0 0 0 yj 17 上界
99999 99999 99999 99999 9999999999 99999 99999 99999 9999999999 99999 99999 99999 99999
2 3 1 0 499999 99999 99999 99999 99999
2 3 1 0 4 10開設している施設への最小輸送費用の和
[xii]0 0 0 0 0 10 0 0 0 0 10 0 0 0 0 10 0 0 0 0 10 0 0 0 0 1
[si]劣勾配
[A8]=MIN(A2-$F2,0)
[A17]=IF($H2=1,A2,99999)
[A15]=MIN(A13+A14,0)
[A16]=IF(A15<0,1,0)
[A25]=IF(A8<=0,A$16,0)
双対上昇法(主・双対ヒューリスティク
ス)• Lagrange 乗数を下界が単調に増加するように
設定する簡便法– 各顧客(需要地点)が支払う「ご褒美」を
0に設定して,すべての顧客が施設に行けるようになるまで以下を繰り返す.
• 各顧客に対して,順繰りに,次に近い施設への輸送費用まで「ご褒美」を増やす.
• (ご褒美-輸送費用)が0以上なら,余剰のご褒美を施設に与える.
• 施設がもらったご褒美の合計が,施設の固定費用と一致したら,施設を開設する.このとき,その施設に行くことにした顧客はご褒美を値上げするのをやめる.
双対問題の導出( Lagrange緩和を経由) (1)
Ii Jjijjij
Iii
Jjijij
Jj Ii Jjijjj vyxuxxcyf )(1 最小化
Jjy
JjIix
JjIiyx
Iix
j
ij
jij
Jjij
条件
0
,0
,
1
Jj
ijx 01
Lagrange 乗数 ui
(任意の実数)0
0 jij yx
0 以下Lagrange 乗数 vij
(非負の実数)
整数条件を( 1 以下の条件も)外す(注意:テキストでは1以下を残している!)
双対問題の導出( Lagrange緩和を経由) (2)
Ii Jj
ijijiijjIi Jj Ii
ijji xvucyvfu )( 最小化
Jjy
JjIix
j
ij
条件
0
,0
目的関数にのせた式を緩和
項別に整理
0 以下の項を加えて,さらに式を緩和したので下界 !下界が-∞にならないためには...これらの項が 0 以上!より良い(=大きい)下界を得るためには...ここを最大化.
Ii
iu 最大化
JjIiv
Jjfv
JjIicvu
ij
jIi
ij
ijiji
,0
,
条件 双対問題
双対上昇法(主・双対ヒューリスティクス)
Ii
iu 最大化
JjIiv
Jjfv
JjIicvu
ij
jIi
ij
ijiji
,0
,
条件 ijiji vcu
ui を大きくしていき,cij を超えた分を vij
これが等号で成立したら施設 j を開設し,その施設の近所の需要地点 i の ui を大きくするのをやめる.
iji cu なら,需要地点 i は施設 j の近所とよぶ!
1. ui を各需要地点ごとに次に近い施設までの移動費用まで増やす.2. 近所の施設が開設していない需要地点に対して,一様に増やす.
例題(ヒューリスティクスがうまくいかない例)
0 3
5
4
24
2
1
4
5
50,000
100,000
50,000≦ 60,000
工 場 1
工 場 2
倉 庫 1
倉 庫 2
顧 客 1
顧 客 2
顧 客 3
需 要 量
需 要 量
需 要 量
最も近い倉庫から補充した場合
5× 140,000
2× 60,000
4× 50,000
2× 50,000
1× 100,000
50,000
100,000
50,000≦ 60,000
工 場 1
工 場 2
倉 庫 1
倉 庫 2
顧 客 1
顧 客 2
顧 客 3
122合 計 億 円
工 場 ・ 倉 庫 間 700,000 120,000
820,000小 計
倉 庫 ・ 顧 客 間 100,000 100,000 200,000
400,000小 計
足りない分は工場1から運ぶ
最も安い経路(工場 -倉庫 - 顧客)を選択した場合
0× 100,000
3× 50,000
5× 40,000
2× 60,000 1× 100,000
5× 50,000
50,000
100,000
50,000≦ 60,000
工 場 1
工 場 2
倉 庫 1
倉 庫 2
顧 客 1
顧 客 2
顧 客 3
82合 計 億 円
工 場 ・ 倉 庫 間 200,000 120,000
320,000小 計
倉 庫 ・ 顧 客 間 150,000 250,000 100,000
500,000小 計
Min{0+3,4+3, 5+2,2+2}
最も安い経路(工場 -倉庫 - 顧客)を選択した場合
ー倉庫2から顧客3への輸送費用が半額のときー
0× 50,000
3× 50,000
5× 90,000
2× 60,000
2× 50,000
1× 100,000
50,000
100,000
50,000≦ 60,000
工 場 1
工 場 2
倉 庫 1
倉 庫 2
顧 客 1
顧 客 2
顧 客 3
92合 計 億 円
工 場 ・ 倉 庫 間 450,000 120,000
570,000小 計
倉 庫 ・ 顧 客 間 150,000 100,000 100,000
350,000小 計
増えている!
4万 ->2万
最も安い経路(工場 -倉庫 - 顧客)を選択した場合
ーさらに倉庫2から顧客1への輸送費用を 5000円にしたときー
さらに増えている!
0.5× 50,000
5× 140,000
2× 60,000
2× 50,000
1× 100,000
50,000
100,000
50,000≦ 60,000
工 場 1
工 場 2
倉 庫 1
倉 庫 2
顧 客 1
顧 客 2
顧 客 3
104.5合 計 億 円
工 場 ・ 倉 庫 間 700,000 120,000
820,000小 計
倉 庫 ・ 顧 客 間 25,000 100,000 100,000
225,000小 計
2万 ->0.5万
Excelソルバーによる求解 Table2-5.xls
輸送費 p1 p2 c1 c2 c3w1 0 4 3 4 5w2 5 2 2 1 2
輸送量 p1 p2 c1 c2 c3 -入量 出量w1 140000 0 50000 90000 0 0w2 0 60000 0 10000 50000 0
140000 60000 50000 100000 50000|供給 需要量 200000 60000 50000 100000 50000
費用計算用 0 0 150000 360000 0 5100000 120000 0 10000 100000 230000
目的関数 740000
変化させるセル
Excelソルバーの設定(1)
工場の供給量上限
目的関数のセルを指定
需要は必ず満たす
$H$7=0
倉庫の入量 = 出量
Excelソルバーの設定(2)
非線形モデルで使用
線形モデル,非負数を仮定をチェックする!
注意:初期値によっては収束しない可能性あり!
感度レポートの解釈
制約条件計算 潜在 制約条件 許容範囲内 許容範囲内
セル 名前 値 価格 右辺 増加 減少$B$8 p1 140000 0 200000 1E+30 60000$C$8 p2 60000 - 1 60000 90000 10000$D$8 c1 50000 3 50000 60000 50000$E$8 c2 100000 4 100000 60000 90000$F$8 c3 50000 5 50000 10000 50000$H$6 w1 -入量 出量 0 0 0 60000 140000$H$7 w2 -入量 出量 0 3 0 10000 90000
双対変数の最適値のこと
工場 p2 の生産量上限 60000 を1単位増やすと総費用が 1 減る制約を 90000 まで増やすか, 10000 まで減らすと解が変わる
例題の最適解
0× 140,000
3× 50,000
2× 60,000 1× 60,000
5× 50,000
4× 40,000
50,000
100,000
50,000≦ 60,000
工 場 1
工 場 2
倉 庫 1
倉 庫 2
顧 客 1
顧 客 2
顧 客 3
74合 計 億 円
工 場 ・ 倉 庫 間 120,000
120,000小 計
倉 庫 ・ 顧 客 間 150,000 160,000 250,000 60,000
620,000小 計
AMPL とは?• A Modeling Programming Language の略で,
数理計画のモデリングをエレガントに行うための言語
• 問題を解くための手法(ソルバー)は別売線形計画:単体法など(混合)整数計画:分枝限定法など非線形計画: 内点法など
• WEB 経由で無料で使える!• Excel のソルバーよりは本格的(プロ向き)
AMPL によるモデル化 (1)
var x11 >=0; var x12 >=0; var x21>=0; var x22>=0; var X11>=0;
var X12>=0; var X13 >=0; var X21>=0; var X22>=0; var X23>=0;
minimize cost: 0*x11 +5*x12 +4*x21 +2*x22 +
3*X11 +4*X12 +5*X13 +2*X21 +1*X22 +2*X23;
輸送費 p1 p2 c1 c2 c3w1 0 4 3 4 5w2 5 2 2 1 2
工場 p1,p2 倉庫 w1,w2 顧客 c1,c2,c3 変数 xij :工場 pi から倉庫 wj への輸送量変数 Xij: 倉庫 wi から顧客 cj への輸送量
AMPL によるモデル化 ( 2 )工場2は最大で 60000 しか生産できない
subject to PlantCapacity: x21+x22 <=60000;
倉庫1に入る量と出る量が一致する
subject to Warehouse1: x11+x21=X11+X12+X13;
倉庫2に入る量と出る量が一致する
subject to Warehouse2: x12+x22=X21+X22+X23;
AMPL によるモデル化 ( 3 )顧客1の需要 50000 は必ず満たす
subject to Customer1: X11+X21=50000;
顧客2の需要 100000 は必ず満たす
subject to Customer2: X12+X22=100000;
顧客3の需要 50000 は必ず満たす
subject to Customer3: X13+X23=50000;
AMPL のメイル経由での利用NEOS サーバー: http://www-neos.mcs.anl.gov/neo
s/
• 以下の情報を電子メイル [email protected] に出す.TYPE MINCOSOLVER MINLP-AMPL
BEGIN.MOD ここにモデルを書く.END.MOD
BEGIN.DAT ここにデータを(必要なら)書く.END.DAT
BEGIN.COM AMPL コマンド:以下の 2 行は解を得るためのおまじない.solve;display _varname, _var;END.COM
BEGIN.COMMENT ここにコメントを(必要なら)書く.END.COMMENT
END-SERVER-INPUT
AMPL モデル Table2-5.mod
BEGIN.MOD # の右はコメント文(書かなくても大丈夫!):# 変数の宣言var x11 >=0; var x12 >=0; var x21>=0; var x22>=0;var X11>=0; var X12>=0; var X13 >=0; var X21>=0; var X22>=0; var X23>=0;# 目的関数minimize cost: 0*x11 +5*x12 +4*x21 +2*x22 +3*X11 +4*X12 +5*X13 +2*X21 +1*X22 +2*X23;# 制約条件subject to PlantCapacity: x21+x22 <=60000;subject to Warehouse1: x11+x21=X11+X12+X13;subject to Warehouse2: x12+x22=X21+X22+X23;subject to Customer1: X11+X21=50000;subject to Customer2: X12+X22=100000;subject to Customer3: X13+X23=500000;END.MOD
結果(メイルのリプライ)10 variables, all linear6 constraints, all linear; 18 nonzeros1 linear objective; 9 nonzeros.MINLP-B&B (20010722): MINLP-B&B (20010722): Optimal solution found1 subproblem, objective = 740000Evals: obj = 14, constr = 15, grad = 15, Hes = 14: _varname _var :=1 x11 1400002 x12 03 x21 04 x22 600005 X11 500006 X12 650007 X13 250008 X21 09 X22 3500010 X23 25000;
AMPL結果の解釈(1)
OBJECTIVES: 最適な目的関数の値
cost = 740000
VARIABLES: 最適な変数(輸送量)の値
x11 = 140000 x12 = 0 x21 = 0 x22 = 60000
X11 = 50000 X12 = 40000
X13 = 50000 X21 = 0 X22 = 60000 X23 = 0
より良いモデリング(データとモデルの分離)
モデルファイル
データ1 データ2 データ3 データ4
モデル1
4つの異なる問題を解きたい!今のままだと...
モデル2 モデル3 モデル4
モデルとデータを分離しておくと...モデルは共通なので書き直す必要なし!
AMPL モデル Table2-5-new.mod (1)集合,パラメータ,変数の宣言
#集合は set で宣言# 工場の集合(中身はデータファイルで記述)set Plant; set Warehouse; # 倉庫の集合set Customer; # 顧客の集合# パラメータは param で宣言:需要量 {顧客の集合} -> 集合は {}param Demand{Customer}; param Supply{Plant}; # 供給量 { 工場の集合 }param cost{Plant,Warehouse}; #工場・倉庫間の輸送費用param Cost{Warehouse,Customer}; # 倉庫・工場間の輸送費用#変数は var で宣言工場・倉庫間の輸送量(0以上の指示)var x{Plant,Warehouse} >=0; var X{Warehouse,Customer} >=0; # 倉庫・工場間の輸送量
AMPL モデル Table2-5-new.mod (2)目的関数
minimize total_cost: sum {i in Plant, j in Warehouse} cost[i,j]*x[i,j]+ sum {i in Warehouse, j in Customer} Cost[i,j]*X[i,j];
ijWarehousejPlanti CustomerjWarehousei
ijij Xx
, ,
ijCostcost最小化
式には適当な名前を付ける!
sum は Σ を表し,合計は集合 {} で記述
添え字は [] で記述
AMPL モデル Table2-5-new.mod (3)需要を満たすための制約
subject to CustomerDemand{j in Customer}: sum {i in Warehouse} X[i,j] =Demand[j];
Warehousei
jij CustomerjX 条件 Demand
顧客jへ入ってくる輸送量の合計 = 顧客jの需要量
式には適当な名前を付けておく(求解後に双対変数の情報を得るときに用いる.)
制約条件を記述するための AMPL コマンド
各顧客に対する制約であることを示す.
AMPL モデル Table2-5-new.mod (4)倉庫でのフロー整合条件
subject to WarehouseFlow{i in Warehouse}: sum{j in Plant} x[j,i] = sum{j in Customer} X[i,j];
Plantj Customerj
ijji WarehouseiXx 条件
倉庫 i に入っている量=倉庫 i から出ていく量
AMPL モデル Table2-5-new.mod (3)供給量の上限制約
subject to PlantSupply{i in Plant}: sum{j in Warehouse} x[i,j] <=Supply[i];
Warehousej
iij PlantiX 条件 Supply
工場 i のから出ていく量≦工場 i の供給量( 上限なしの場合には Supplyi に大きな数を入れておく.)
AMP データ Table2-5.dat と AMPL コマンド
param Demand := c1 50000 c2 100000 c3 50000;param Supply := p1 999999 p2 60000;END.DAT
BEGIN.COM solve; # (求解)# 変数の出力( display コマンド) display x, X;# 制約(需要と供給)の情報の出力 display CustomerDemand,PlantSupply;END.COM
BEGIN DATAset Plant := p1 p2;set Warehouse :=w1 w2;set Customer :=c1 c2 c3;param cost:= p1 w1 0 p1 w2 4 p2 w1 5 p2 w2 2;param Cost:= w1 c1 3 w1 c2 4 w1 c3 5 w2 c1 2 w2 c2 1 w2 c3 2;
AMPL結果の解釈(2)
CONSTRAINTS (Dual Values): 最適な双対変数
CustomerDemand
c1 = 3 顧客1の需要が1単位増えると3ドル増える
c2 = 4 顧客2の需要が1単位増えると4ドル増える
c3 = 5 顧客3の需要が1単位増えると5ドル増える
PlantSupply
P1 0
P2 -1 工場2の生産量上限が1単位増えると輸送費用が1ドル減る
練習問題• k- メディアン問題,容量制約なし施設配
置問題を AMPL を用いてモデリングせよ.• (点の上に施設を配置する場合に限定し
た) k- センター問題を AMPL を用いてモデル化せよ.(最大値を最小化するためには,オデル化の工夫が必要!)
• 上で作成したモデルを NEOS サーバーを用いて求解せよ.
遺伝的アルゴリズム• メタヒューリスティックスのひとつ• 進化論にアナロジーをもつ
10101010 100011101011100010100011
遺伝子(=解: Open 施設) 費用
20
10
30
40
1357
1567
1345
1378
表現
ルーレット選択費用
20
10
30
40
1234
105
3.3333332.5
100/費用に比例した面積の円グラフ
交叉( Crossover )
10101010 10001110
遺伝子(=解: Open 施設) 費用
20
10
交叉(Crossover )
1357
1567
表現
1367
1557
致死遺伝子!
10100110
自然淘汰 (Natural Selection )
136710100110
10101010 100011101011100010100011
遺伝子(=解: Open 施設) 費用
20
10
30
40
1357
1567
1345
1378
表現
15
淘汰!