ロジスティクス工学 第10章 施設配置モデル 第11章 ロジスティクス・ネットワーク 設計モデル サプライ・チェインの設計と管理 第2章 ロジスティクス・ネットワークの構成 コケコーラの事例を読んでおくこと! 副読本:組合せ最適化[短編集] 第10章 施設配置問題 東京商船大学 久保 幹雄 平面上の配置問題 Fermat(フェルマー)の古典問題 • 各点上に顧客がいるとして,顧客の歩く総距離が最小になる 点に施設を建てる.->Weber問題->施設配置問題 • 各点上にコンピュータがあるとして,総距離が最小になるよう に繋ぐ.(ただしハブを使っても良い.)->Steiner木問題 Steiner(スタイナー)木問題 • 平面上に点が与えられたとき,総距離が最小に なるように繋ごう!ただし中継点を使っても良い. (中継点なしだと最小木問題になり簡単(どん欲 アルゴリズムで解ける!) 距離の2乗和を最小にする平面上の 施設配置問題 • n 人の顧客が平面上に分布しており,その座標 を (Xi,Yi), i=1,...,n とする.このとき,顧客からの 距離の2乗和を最小にするような施設は平面上 のどこに作れば良いか? • f(X,Y)=Σi (Xi-X) 2+(Yi-Y)2 最小にする(X,Y)を 求める問題 (Xi,Yi) (2,1),(9,1),(12,3) (5,8),(11,7) 距離の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(ウエーバー)問題 • n 人の顧客が平面上に分布しており,その座標 を (Xi,Yi), i=1,...,n とする.このとき,顧客からの 距離の和(2乗和でなはい!)を最小にするような 施設は平面上のどこに作れば良いか? • f(X,Y)=Σi {(Xi-X) 2+(Yi-Y)2 }1/2を最小にす る(X,Y)を求める問題 (Xi,Yi)’s are: (2,1),(9,1),(12,3) (5,8),(11,7) 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,E (カッコ内の数字は人数を表す)は, 開設された最も近い施設を利用するものとする.このとき,顧客の 総走行距離を最小にするように,k個の施設を選択せよ. (3) (1) 距離 4 A B 2 2 D (3) 1 C (2) 4 3 E (1) A B C D E A 0 4 3 2 6 B 4 0 2 3 4 C 3 2 0 1 3 D 2 3 1 0 4 E 6 4 3 4 0 k-メディアン問題(定義) • • • • 無向グラフ G=(V,E) 距離関数 d: E→R+(非負の実数) 需要関数(点の重み) w: V →R+ 重みつきの 施設の数 k (正数) 合計をとる が与えられたとき, 総移動距離を 最小にするk個 の施設を選択 min w j min d (i, j ) S k jV iS S内の最も近い 施設に行く となるような点集合Sを求める問題. ただし,d(i,j) は2点i,jの最短距離を表す. 施設を点の上に配置したと仮定しても 最適性が失われないことの証明(1) k=1の場合で証明 枝p,qの間のxに配置するのが最適と仮定 P: p経由の方が近い点集合 Q: q経由の方が近い点集合 x p q d(x,p) d(x,q)=d(p,q)-d(x,p) P Q Pの方が顧客が多いと仮定(w.l.g.:without loss of generality) w w jP j jQ j 施設を点の上に配置したと仮定しても 最適性が失われないことの証明(2) d(x,q)=d(p,q)-d(x,p) w d ( x, j) w d ( x, p) d ( p, j) w d ( x, q) d (q, j) jV j j jP jQ w j d ( x, p) d ( p, j ) w j d ( p, q) d ( x, p) d (q, j ) jP jP jQ d ( x, p) w j w j w j d ( p, j ) w j d ( p, q) d (q, j ) jQ jQ jP jP w w j j jQ 0以上 d(p,j)≦d(p,q)+d(q,j) 点pからjへ行くには, Q経由より直接の方が近い! j w d ( x, j) w d ( p, j) w d ( p, j) w d ( p, j) jV j jP j jQ j jV j 途中の点xの施設より点pの方が良い! k-メディアン問題のExcelによる表現(median.xls) A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 B C D E F G Open 0 4 3 2 6 99999 4 99999 2 99999 2 3 6 4 0 2 3 4 99999 0 99999 3 99999 0 1 0 3 2 0 0 3 99999 2 99999 0 99999 0 2 0 =IF(G2=1,A2,99999) 2 3 1 1 4 6 4 3 4 0 0 1 0 1 0 =MIN(A8:A12) 99999 3 99999 1 99999 1 3 3 99999 =SUM(A15:E15) 4 99999 4 99999 4 Min Dsitance 1 Demand 4 13 Total =A13*A14 もし G2のセルに1が入っていたら,A2の値,それ以外なら大きな数 貪欲解法 • 貪欲解法(greedy algorithm) k=1の場合の最適な施設(1-メディアン)を 求め,それを固定した上で,次の施設を順 に(施設数がkになるまで)選択していく. 1つの施設を建てる場合-> 点Dが最適! 2つの施設を配置する場合:貪欲解法のとき 点D と点[ ] 最適解 点[ ]と点[ ] 貪欲解法(逆順) (組合せ最適化短編集 第10章の第1話参照) • 貪欲解法とは逆に,すべての施設が配置されて いる場合からはじめて,1つの施設を除いたとき の費用の増加が最も少ないもを削除.これを施 設数がkになるまで繰り返す.(medan2.xls) 顧客1 施設A 施設B 施設C 施設D 顧客2 110 640 670 450 顧客3 585 65 590 115 顧客4 165 200 125 840 595 580 115 100 練習問題 (k-メディアン問題) (3) A 距離 4 (1) B 2 2 (3) D 1 3 4 (2) C (1) 3 2 F (0) (4) G H (1) E 各点上にいる顧客 A-H (カッコ内の数字は人数を 表す)は,開設された最も 近い施設を利用するもの とする. このとき,顧客の 総走行距離を最小にする ように,1個の施設を選択 せよ. また,2個選択する場合は どうか? Excelによる試行錯誤と貪 欲解法,貪欲解法(逆順) で解け. k-センター問題 各点上にいる顧客 A,B,C,D,E は,開設された最も近い施設から サービスを受けるものとする.このとき,施設から最も遠い顧客 への距離を最小にするように,k個の施設を選択せよ. (消防署などの緊急を要する施設の配置で利用) 距離 4 A B 2 1 2 D C 1 E A B C D E A 0 4 3 1 2 B 4 0 2 4 5 C 3 2 0 2 3 D 1 4 2 0 1 E 2 5 3 1 0 k-センター問題(定義) • 無向グラフ G=(V,E) • 距離関数 d: E→R+(非負の実数) 最も遠い(不 • 施設の数 k (正数) 利な)顧客を が与えられたとき, 選択 最大距離を 最小にするk個 の施設を選択 S内の最も近い 施設から行く min max min d (i, j ) S k jV iS となるような点集合Sを求める問題. ただし,d(i,j) は2点i,jの最短距離を表す. 1-センター問題の最適解 必ずしも点の上とは限らない! 消防署の最適配置! 点の上だとすると... 行ごとの最大値を計算. それが最小になる点[ ] が最適! A B C D E A 0 4 3 1 2 B 4 0 2 4 5 C 3 2 0 2 3 D 1 4 2 0 1 E 2 5 3 1 0 max 4 5 3 4 5 1-センター問題(枝上への最適配 置) 枝(A,B)上(Aからの距離がxの地点)に配置する場合 d(x,C) d(x,E) d(x,B) min max d (i, j ) S k jV 5 (4) A (5) B 4 x 2 1 2 D (4) C (3) 1 4 3 d(x,A) 2 1 A E (5) d(x,D) B 1-センター問題(枝上への配置の下界の導出) p Mq=max{d(p,j)} q x Mp=max{d(p,j)} Mp-x x+Mq-d(p,q) Mp Mq d ( p, q ) 2 最も小さい場合 Mp-x=x+Mq-d(p,q) p x=0 q x=d(p,q) 1-センター問題(最適解) Mp Mq d ( p, q ) 2 >3(C上に配置)なら,枝pq上は調べなくて良い! AB上 ->(4+5-4)/2=2.5<3 (4) A 4 x (5) B 2 1 2 D (4) 1 AD上 ->(4+4-1)/2=3.5>3 BC上 -> CD上 -> DE上 -> C (3) よってCD上のみ調べれば良い! 練習問題:枝 CD上の最適配置をグラフ を用いて求めよ. E (5) 容量制約なし施設配置問題 A B C D E 7 8 9 7 6 A 0 4 3 2 6 D 2 3 1 0 4 E 6 4 3 4 0 B 4 0 2 3 4 C 3 2 0 1 3 各点の需要量は1 = fj 施設開設の 固定費用 =cij 輸送費用 容量制約なし施設配置問題(定式化) I: 需要地点(顧客)の集合 J: 施設の配置可能地点の集合 xij =顧客iの需要が施設jによって満たされる割合 yi = 1 施設が点j上に配置されるとき 0 それ以外のとき 十分に大きな数 (=顧客の数) (使わない方がよい!) x iI ij 最小化 f j y j cij xij jJ iI jJ 条件 xij 1 i I (式の本数は多いが 下界が)強い定式化 jJ I yij (下界が)弱い定式化 xij y j i I , j J xij 0 i I , j J y j {0,1} j J 練習問題 • k-センター問題,容量制約なし施設配置問 題を試行錯誤で解くためのExcelモデルを 作成せよ. • Excelを用いた試行錯誤(What If分析)を 用いて k-メディアン, k-センター問題,容量 制約なし施設配置問題を解け. (k-メディ アン, k-センター問題の場合には,kを色々 変えてみよ.) Lagrange乗数 (任意の実数) Lagrange緩和 最小化 f j y j cij xij 1 xij ui jJ iI jJ iI jJ 条件 xij 1 i I jJ xij y j i I , j J xij 0 i I , j J y j {0,1} j J 条件 xij y j 1 xij 0 0 jJ 最初の式の緩和->最適値は等しいか小さい ->下界! i I , j J xij 0 i I , j J y j {0,1} j J Lagrange緩和(子問題への分解) 最小化 f j y j cij ui xij ui jJ iI jJ 条件 xij y j i I , j J xij 0 i I , j J y j {0,1} j J ->各j(施設)ごとに分解できる! 最小化 f j y j cij ui xij 条件 xij y j iI i I xij 0 i I y j {0,1} iI 各顧客がちょうど1つの 施設に行く条件を緩和 そのかわりに顧客iが ui の「ご褒美」を施設に 与える! を各jについて解いて ui を加える->下界 iI Lagrange緩和(Excelモデル)flp-lag1.xls [cij] 0 4 3 2 6 4 0 2 3 4 3 2 0 1 3 2 3 1 0 4 -3 0 0 -1 0 -4 7 0 0 99999 99999 99999 2 99999 2 0 -3 -1 0 0 -4 8 0 0 99999 99999 99999 3 99999 3 0 -1 -3 -2 -1 -7 9 0 0 99999 99999 99999 1 99999 1 -1 0 -2 -3 0 -6 7 0 0 99999 99999 99999 0 99999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 4 3 4 0 [cij-ui]- [ui] Lagrange乗数 施設名 3A 3B 3C 3D 4E 16 Σui Open 0 0 0 1 0 固定費用 7 8 9 7 6 0 0 0 0 -4 -4 Σ (cij-ui)6 固定費用 0 0 16 下界 0 yj 17 上界 99999 99999 99999 4 99999 4 10 開設している施設への最小輸送費用の和 0 0 0 7 0 7 固定費用の ここを変えると下界が変化 (劣勾配はここに出てくる) [xii] 0 0 0 0 0 1 1 1 1 1 劣勾配[si] ここを変えると 上界が変化 Lagrange緩和(Excelモデル)flp-lag1.xls [cij] 0 4 3 2 6 4 0 2 3 4 3 2 0 1 3 2 3 1 0 4 -3 0 0 -1 0 -4 7 0 0 99999 99999 99999 2 99999 2 0 -3 -1 0 0 -4 8 0 0 99999 99999 99999 3 99999 3 0 -1 -3 -2 -1 -7 9 0 0 99999 99999 99999 1 99999 1 -1 0 -2 -3 0 -6 7 0 0 99999 99999 99999 0 99999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 4 3 4 0 [cij-ui]- [ui] Lagrange乗数 施設名 3A 3B 3C 3D 4E 16 Σui Open 0 0 0 1 0 固定費用 7 8 9 7 6 0 0 0 0 -4 -4 Σ (cij-ui)6 固定費用 0 0 16 下界 0 yj 17 上界 99999 99999 99999 4 99999 4 10 開設している施設への最小輸送費用の和 0 0 0 7 0 7 [A8]=MIN(A2-$F2,0) [A15]=MIN(A13+A14,0) [A16]=IF(A15<0,1,0) [A17]=IF($H2=1,A2,99999) [xii] 0 0 0 0 0 1 1 1 1 1 劣勾配[si] [A25]=IF(A8<=0,A$16,0) 双対上昇法 (主・双対ヒューリスティクス) • Lagrange乗数を下界が単調に増加するように設 定する簡便法 – 各顧客(需要地点)が支払う「ご褒美」を0に設 定して,すべての顧客が施設に行けるように なるまで以下を繰り返す. • 各顧客に対して,順繰りに,次に近い施設への輸 送費用まで「ご褒美」を増やす. • (ご褒美-輸送費用)が0以上なら,余剰のご褒美 を施設に与える. • 施設がもらったご褒美の合計が,施設の固定費用 と一致したら,施設を開設する.このとき,その施 設に行くことにした顧客はご褒美を値上げするのを やめる. 双対問題の導出(Lagrange緩和を経由) (1) 最小化 f j y j cij xij 1 xij ui ( xij y j )vij jJ iI jJ iI jJ iI jJ 0 Lagrange乗数 ui (任意の実数) 条件 xij 1 i I jJ xij y j i I , j J xij 0 i I , j J y j 0 j J 0以下 Lagrange乗数 vij (非負の実数) 1 xij 0 jJ xij y j 0 整数条件を (1以下の条件も)外す (注意:テキストでは1以下を 残している!) 双対問題の導出(Lagrange緩和を経由) (2) 最小化 ui f j vij y j (cij ui vij ) xij iI jJ iI iI jJ 条件 xij 0 i I , j J y j 0 j J 項別に整理 目的関数にのせた式を緩和 0以下の項を加えて,さらに式を緩和したので下界! 下界が-∞にならないためには...これらの項が0以上! より良い(=大きい)下界を得るためには...ここを最大化. 最大化 ui iI 条件 ui vij cij i I , j J v iI ij f j j J vij 0 i I , j J 双対問題 双対上昇法(主・双対ヒューリスティクス) 最大化 ui iI 条件 ui vij cij i I , j J v iI ij f j j J vij 0 i I , j J uiを大きくしていき, cijを超えた分をvij ui cij vij ui cij なら,需要地点iは 施設jの近所とよぶ! これが等号で成立したら施設j を開設し,その施設の近所の 需要地点iのuiを大きくするの をやめる. 1. 2. uiを各需要地点ごとに次に近い施設までの移動費用まで増やす. 近所の施設が開設していない需要地点に対して,一様に増やす. 例題(ヒューリスティクスがうまくいかない例) 顧客1 倉庫1 工場1 50,000 3 0 需要量 4 5 顧客2 5 4 需要量 100,000 2 1 工場2 2 倉庫2 ≦60,000 4 顧客3 需要量 50,000 最も近い倉庫から補充した場合 倉庫1 工場1 顧客1 足りない分は 工場1から運ぶ 50,000 2×50,000 顧客2 5×140,000 100,000 工場2 1×100,000 2×60,000 倉庫2 ≦60,000 工場・倉庫間 700,000 120,000 小計 820,000 4×50,000 倉庫・顧客間 100,000 100,000 200,000 小計 400,000 顧客3 50,000 合計 122億円 最も安い経路(工場-倉庫-顧客)を選択した場合 顧客1 倉庫1 3×50,000 50,000 工場1 0×100,000 Min{0+3,4+3, 5+2,2+2} 工場2 5×40,000 5×50,000 顧客2 100,000 2×60,000 倉庫2 1×100,000 50,000 ≦60,000 工場・倉庫間 200,000 120,000 小計 320,000 顧客3 倉庫・顧客間 150,000 250,000 100,000 小計 500,000 合計 82億円 最も安い経路(工場-倉庫-顧客)を選択した場合 ー倉庫2から顧客3への輸送費用が半額のときー 顧客1 倉庫1 3×50,000 50,000 工場1 0×50,000 5×90,000 4万->2万 顧客2 100,000 工場2 2×60,000 ≦60,000 工場・倉庫間 450,000 120,000 小計 570,000 1×100,000 顧客3 倉庫2 2×50,000 倉庫・顧客間 150,000 100,000 100,000 小計 350,000 50,000 増えている! 合計 92億円 最も安い経路(工場-倉庫-顧客)を選択した場合 ーさらに倉庫2から顧客1への輸送費用を5000円にしたと きー 顧客1 倉庫1 2万->0.5万 50,000 工場1 0.5×50,000 顧客2 5×140,000 100,000 工場2 2×60,000 ≦60,000 工場・倉庫間 700,000 120,000 小計 820,000 1×100,000 顧客3 倉庫2 2×50,000 倉庫・顧客間 25,000 100,000 100,000 小計 225,000 50,000 さらに増えている! 合計 104.5億円 Excelソルバーによる求解 Table2-5.xls 変化させるセル 輸送費 w1 w2 輸送量 w1 w2 供給|需要量 費用計算用 4 2 3 2 4 1 0 60000 60000 60000 c1 50000 0 50000 50000 c2 90000 10000 100000 100000 0 120000 150000 0 360000 10000 0 5 p1 140000 0 140000 200000 0 0 c3 c2 c1 p2 p1 p2 5 2 c3 0 50000 50000 50000 0 510000 100000 230000 目的関数 740000 入量-出量 0 0 Excelソルバーの設定(1) 目的関数のセルを指定 $H$7=0 倉庫の入量=出量 工場の供給量上限 需要は必ず満たす Excelソルバーの設定(2) 線形モデル, 非負数を仮定を チェックする! 非線形モデルで使用 注意:初期値によっては収束しない可能性あり! 感度レポートの解釈 双対変数の最適値のこと 制約条件 セル $B$8 $C$8 $D$8 $E$8 $F$8 $H$6 $H$7 名前 p1 p2 c1 c2 c3 w1 入量-出量 w2 入量-出量 計算 潜在 制約条件 許容範囲内 許容範囲内 値 価格 右辺 増加 減少 140000 0 200000 1E+30 60000 60000 -1 60000 90000 10000 50000 3 50000 60000 50000 100000 4 100000 60000 90000 50000 5 50000 10000 50000 0 0 0 60000 140000 0 3 0 10000 90000 工場p2の生産量上限60000を1単位増やすと総費用が1減る 制約を90000まで増やすか,10000まで減らすと解が変わる 例題の最適解 倉庫1 顧客1 3×50,000 50,000 工場1 0×140,000 4×40,000 顧客2 5×50,000 100,000 工場2 2×60,000 倉庫2 1×60,000 50,000 ≦60,000 工場・倉庫間 120,000 小計 120,000 顧客3 倉庫・顧客間 150,000 160,000 250,000 60,000 小計 620,000 合計 74億円 AMPLとは? • • A Modeling Programming Languageの略 で,数理計画のモデリングをエレガントに 行うための言語 問題を解くための手法(ソルバー)は別売 • • 線形計画:単体法など (混合)整数計画:分枝限定法など 非線形計画: 内点法など WEB経由で無料で使える! Excelのソルバーよりは本格的(プロ向き) AMPLによるモデル化(1) 輸送費 w1 w2 p1 p2 0 5 工場 p1,p2 c1 4 2 倉庫 w1,w2 c2 3 2 c3 4 1 顧客 c1,c2,c3 変数 xij:工場 piから倉庫wjへの輸送量 変数 Xij: 倉庫wiから顧客cjへの輸送量 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; 5 2 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/neos/ • 以下の情報を電子メイル [email protected] に出 す. BEGIN.COM TYPE MINCO SOLVER MINLP-AMPL BEGIN.MOD ここにモデルを書く. END.MOD BEGIN.DAT ここにデータを(必要なら)書く. END.DAT 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 linear 6 constraints, all linear; 18 nonzeros 1 linear objective; 9 nonzeros. MINLP-B&B (20010722): MINLP-B&B (20010722): Optimal solution found 1 subproblem, objective = 740000 Evals: obj = 14, constr = 15, grad = 15, Hes = 14 : _varname _var := 1 x11 140000 2 x12 0 3 x21 0 4 x22 60000 5 X11 50000 6 X12 65000 7 X13 25000 8 X21 0 9 X22 35000 10 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 より良いモデリング(データとモデルの分離) 4つの異なる問題を解きたい!今のままだと... モデル1 モデル2 モデル3 モデル4 モデルとデータを分離しておくと... モデルファイル データ1 データ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) 目的関数 最小化 iPlant , jWarehouse costij xij Cost ij iWarehouse , jCustomer 式には適当な名前を付ける! 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]; sum はΣを表し,合計は集合 {} で記述 添え字は[]で記述 X ij AMPLモデル Table2-5-new.mod (3) 需要を満たすための制約 顧客jへ入ってくる輸送量の合計=顧客jの需要量 条件 X iWarehouse ij Demandj j Customer 制約条件を記述するためのAMPLコマンド subject to CustomerDemand{j in Customer}: sum {i in Warehouse} X[i,j] =Demand[j]; 各顧客に対する制約であることを示す. 式には適当な名前を付けておく(求解後に双対変数の 情報を得るときに用いる.) AMPLモデル Table2-5-new.mod (4) 倉庫でのフロー整合条件 倉庫iに入っている量=倉庫iから出ていく量 条件 jPlant x ji X jCustomer ij i Warehouse subject to WarehouseFlow{i in Warehouse}: sum{j in Plant} x[j,i] = sum{j in Customer} X[i,j]; AMPLモデル Table2-5-new.mod (3) 供給量の上限制約 工場iのから出ていく量≦工場iの供給量 (上限なしの場合には Supplyi に大きな数を入れておく.) 条件 X ij jWarehouse Supplyi i Plant subject to PlantSupply{i in Plant}: sum{j in Warehouse} x[i,j] <=Supply[i]; AMPデータ Table2-5.dat とAMPLコマンド BEGIN DATA set 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; 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 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サーバーを用 いて求解せよ. 遺伝的アルゴリズム • メタヒューリスティックスのひとつ • 進化論にアナロジーをもつ 遺伝子(=解:Open施設) 表現 費用 10101010 1357 10 10001110 1567 20 10111000 1345 30 10100011 1378 40 ルーレット選択 10 5 3.333333 2.5 費用 10 20 30 40 100/費用に比例した面積の円グラフ 1 2 3 4 交叉(Crossover) 遺伝子(=解:Open施設) 表現 費用 10101010 1357 10 10001110 1567 20 10100110 1367 1557 交叉 (Crossover) 致死遺伝子! 自然淘汰(Natural Selection) 遺伝子(=解:Open施設) 表現 費用 10101010 1357 10 10001110 1567 20 10111000 1345 30 10100011 1378 40 10100110 1367 15 淘汰!
© Copyright 2024 ExpyDoc