『実践数理計画法』

門前パソコン学習所
令和2年弥生
2020-03-28
更新 2023-11-15
ページ末尾

実践数理計画法 -LINDOを用いて-
L.Schrage=著
新村秀一・高森寛=訳
1992年9月20日 初版第1刷
朝倉書店

ここの問題は上の書籍を参照した。
以下の資料では、計算実行のために LINDO は使用していない。
Pythonを使用した

td> d>
章番号番号最適化問題 備考
6.被覆、人員配置、分割問題
06.1 消防署の配置計画 被覆(カバー)問題
06.2 人員配置問題
06.3 分割とパターン選択問題
06.4 乗員のスケジュール問題
7.ネットワークまたは輸送問題
07.1 (07.1)ネットワーク型の特徴
07.3 (07.3)PERT(最長経路問題)
07.6 (07.6)パスによる定式化
07.7 (07.7)方向性のないネットワーク
15.統計的推定への応用(回帰分析)
15.2 最小絶対偏差(回帰分析) 書籍の記号を確認

6.被覆、人員配置、分割問題
(06.1)消防署の配置計画
ある都市で、要求地から5分以内に到着する場所に、消防署を作る計画がある。
また候補地での年間の維持費用が分かっている。
この問題では、消防署の候補地は最小費用で、 しかし要求される場所から5分以内の場所になければならない。
費用を最小化するにはどのような配置が良いか。
消防署の候補地
ABCDE





1YY
2YY
3YY
4YYY
5YYYY
6YYY
7YY
費用310250260330280
上の表では、Y は次のような意味である。
  • Y : 候補地に消防署を作った場合5分以内という要求が満たされる。
  • 空欄 : 候補地に消防署を作らない。
問題
全ての要求ポイントから5分以内の場所に、少なくとも1か所消防署が必要であり、
かつ維持費が最小の配置を選択する。
問題定義式
決定変数
ABC DE
X1X2X3 X4X5
制約条件式
0X1+0X2+1X3+1X4+0X5≧1
1X1+1X2+0X3+0X4+0X5≧1
1X1+0X2+0X3+0X4+1X5≧1
1X1+0X2+0X3+1X4+1X5≧1
1X1+1X2+1X3+1X4+0X5≧1
0X1+1X2+1X3+1X4+0X5≧1
0X1+0X2+0X3+1X4+1X5≧1
X1, X2, X3, X4, X5 ≧ 0
目的関数(min)
Z=310X1+250X2+260X3+330X4+280X5
最適解
X1 = 1.0, X4 = 1.0
Z = 640.0
Python による結果
(06.2)人員配置問題
ある有料道路は、24時間の間に以下の人員を必要とする料金所を持っている
時間必要人員
0時~午前6時2
午前6時~10時8
午前10時~正午4
正午~午後4時3
午後4時~6時6
午後6時~10時5
午後10時~24時3
料金所の人間は、4時間働き、1時間休み、また4時間働く。
何時から働いてもよい。
目的関数は雇う人数の最小化である。
勤 務 時 間
012
変数 0 12 34 56 78 90 12 34 56 78 90 12 3
X1 ----- = = =
X2 ---- = = = =
X3 ---- = = = -
X4 --- = = = --
X5 -- = = = ---
X6 - = = = ----
X7 = = = = ----
X8 = = = - ----
X9 = = -- ----
X10 = --- ----
X11 ---- ----
X12 ---- ----
X13 ---- ----
X14 ---- ----
X15 ---- ----
X16 ---- ----
X17 - ---- ---
X18 -- ---- --
X19 --- ---- -
X20 ---- ----
X21 ---- ----
X22 - ---- ---
X23 -- --- = --
X24 --- -- = = -
人員 2 2 2 2 2 2 8 8 8 8 4 4 3 3 3 3 6 6 5 5 55 33
決定変数
X1=夜中から働く人の数
X2=午前1時から働く人の数
・・・・・・・・・・・・・・・・・・・・
X24=午後11時から働く人の数
制約条件式
X1+X24+X23+X22+X20+X19+X18+X172夜中~午前1時
X2+X1+X24+X23+X21+X20+X19+X182午前1時~2時
X3+X2+X1+X24+X22+X21+X20+X192午前2時~3時
X4+X3+X2+X1+X23+X22+X21+X202午前3時~4時
X5+X4+X3+X2+X24+X23+X22+X212午前4時~5時
X6+X5+X4+X3+X1+X24+X23+X222午前5時~6時
X7+X6+X5+X4+X2+X1+X24+X238午前6時~7時
X24+X23+X22+X21+ X19+X18+X17+X16 3午後11時から夜中
制約条件式
X1+X24+X23+X22+X20+X19+X18+X17 ≧ 2
X2+X1+X24+X23+X21+X20+X19+X18 ≧ 2
X3+X2+X1+X24+X22+X21+X20 ≧ 2
X4+X3+X2+X1+X23+X22+X21+X20 ≧ 2
X5+X4+X3+X2+X24+X23+X22+X21 ≧ 2
X6+X5+X4+X3+X1+X24+X23+X22 ≧ 2
・・・・・・・・・・・・・・・・・・・・
X7+X6+X5+X4+X2+X1+X24+X23 ≧ 8
X8+X7+X6+X5+X3+X2+X1+X24 ≧ 8
X9+X8+X7+X6+X4+X3+X2+X1 ≧ 8
X10+X9+X8+X7+X5+X4+X3+X2 ≧ 8
・・・・・・・・・・・・・・・・・・・・
X11+X10+X9+X8+X6+X5+X4+X3 ≧ 4
X12+X11+X10+X9+X7+X6+X5+X4 ≧ 4
・・・・・・・・・・・・・・・・・・・・
X13+X12+X11+X10+X8+X7+X6+X5 ≧ 3
X14+X13+X12+X11+X9+X8+X7+X6 ≧ 3
X15+X14+X13+X12+X10+X9+X8+X7 ≧ 3
X16+X15+X14+X13+X11+X10+X9+X8 ≧ 3
・・・・・・・・・・・・・・・・・・・・
X17+X16+X15+X14+X12+X11+X10+X9 ≧ 6
X18+X17+X16+X15+X13+X12+X11+X10 ≧ 6
・・・・・・・・・・・・・・・・・・・・
X19+X18+X17+X16+X14+X13+X12+X11 ≧ 5
X20+X19+X18+X17+X15+X14+X13+X12 ≧ 5
X21+X20+X19+X18+X16+X15+X14+X13 ≧ 5
X22+X21+X20+X19+X17+X16+X15+X14 ≧ 5
・・・・・・・・・・・・・・・・・・・・
X23+X22+X21+X20+X18+X17+X16+X15 ≧ 3
X24+X23+X22+X21+X19+X18+X17+X16≧3
目的関数(min)
X1+X2+X3・・・+X24
最適解
X2=5, X4=0.75, X5=0.75, X6=0.75, X7=0.75, X8=0.75,
X11=1, X14=1, X15=2, X16=1, X17=1, X18=1
Z=15.75
書籍解
X2=5, X3=0.75, X4=0.75, X5=0.75, X6=0.75, X7=0.75,
X11=1, X14=1, X15=2, X16=1, X17=1, X18=1
Z=15.75
解に対する検討
答えに小数が出ているが、15.75 というのは少なくとも 16 人を雇わなくてはならないことを意味する。
整数解を必要とするからである。このため X3=X4=X6=X7=1,X5=0 のように丸めればよい。
シフト、または勤務時間内に休憩がほとんどないときには、解は整数計画法を用いなくとも、値が整数になることが多い。
解の比較
X1X2X3X4 X5X6X7X8 X9X10X11X12 X13X14X15X16 X17X18X19X20 X21X22X23X24
50.75 0.750.750.750.75 1 121 11
5 0.75 0.75 0.75 0.75 0.75 1 1 2 1 1 1
50.750.750.75 0.750.75 112 111
4 1111 1 0.50.751.751.75 1.750.25
X3の場合、6から7の間は休憩していることに注意
解の比較の上段は、当ページ作成の(倍精度版)プログラムによる。
解の比較の中段は、書籍解による。
解の比較の下段は、当ページ作成の(単精度版)プログラムによる。
また最下部は、Python による結果である。
Python による結果
(06.3)分割とパターン選択問題
C 社は非常に幅広い家庭用器具すなわち冷蔵庫やストーブなどを生産している。
原材料費用の重要な部分は鉄板の購入である。
現在、鉄板はコイルの形で購入されていて、 3種類の幅72,48,36のものがある。
製造工程では8種類の幅が要求される。
それは60,56,42,38,34,24,15そして10である。
使用に際して、同じ品質と厚さが要求される。
問題は、無駄を取り除くことである。
例えば72幅のコイルを38幅のコイルと15幅のコイル2つに切り離すやり方 B0 がある。
ここで、4幅の無駄が出てしまう。
3つの異なった幅の原材料の1長さ単位の価格は、36幅が15,48幅が19,72幅が28である。
単純な計算により、単位価格は36幅が 15/36 = 0.41667、48幅が 0.395833、72幅が 0.3888889 である。
コイルは適切な方法で切り離される。3つの幅の原材料を切り離す効率的なやり方を表に示す。
例えばパターン C4 は72幅のコイルを、24幅1つと10幅4つ、無駄として8が残るように切り離すことである。
原材料に対する分割パターン
要求幅のカット数 要求幅のカット数
パタ
ーン
60564238 34241510 無駄な
パタ
ーン
60564238 34241510 無駄な
72の原材料 48の原材料
A1 10 00 00 01 2 D0 00 10 000 06
A2 01 00 00 10 1 D1 00 01 00 01 0
A3 01 00 00 01 6 D2 00 00 10 01 4
A4 00 10 01 00 6 D3 00 00 02 00 0
A5 0010 0020 0 D4 0000 0110 9
A6 0010 0011 5 D5 0000 0102 4
A7 0010 0003 0 D6 0000 0030 3
A8 0001 1000 0 D7 0000 0021 8
A9 0001 0101 0 D8 0000 0013 3
B0 0001 0020 4 D9 0000 0004 8
B1 0001 0011 9 36の原材料
B2 0001 0003 4 E0 0000 1000 2
B3 0000 2000 4 E1 000 001 01 2
B4 0000 1101 4 E2 000 000 20 6
B5 0000 1020 8 E3 0000 0012 1
B6 0000 1012 3 E4 0000 0003 6
B7 0000 1003 8
B8 0000 0300 0
B9 0000 0210 9
C0 0000 0202 4
C1 0000 0130 3
C2 0000 0121 8
C3 0000 0113 3
C4 0000 0104 8
C5 0000 00 41 2
C6 00 00 00 32 7
C7 00 00 00 24 2
C8 00 00 00 15 7
C9 00 00 00 07 2
60564238 34241510
この計画期間において要求されるさまざまな幅の長さは次のとおりである。
変数
分割パターン
72(T1) 48(T2) 36(T3)
要求材料 A1--A9 B0--B9 C0--C9 D0--D9 E0--E4
長さ 72 48 36
X160500
X256400
X342300
X438450
X534350
X624100
X715800
X8101000
この期間において使用できる原材料は、72幅のコイルで1600、 48幅と36幅で10000である。
様々な幅や要求を満たし、かつ最小費用になるように分割される、
それぞれのパターンの長さを決定するためのモデルを定式化することが求められる。
原材料に対する制約
T1 ≦ 1600
T2 ≦ 10000
T3 ≦ 10000
変数定義(原材料数)
T1= A1+A2+A3+A4+A5+A6+A7+A8+A9+
B0+B1+B2+B3+B4+B5+B6+B7+B8+B9+
C0+C1+C2+C3+C4+C5+C6+C7+C8+C9
T2= D0+D1+D2+D3+D4+D5+D6+D7+D8+D9
T3= E0+E1+E2+E3+E4
変数定義(無駄の幅)
W1= 2A1+A2+6A3+6A4+5A6+
4B0+9B1+4B2+4B3+4B4+8B5+3B6+8B7+9B9+
4C0+3C1+8C2+3C3+8C4+2C5+7C6+2C7+7C8+2C9
W2= 6D0+4D2+9D4+4D5+3D6+8D7+3D8+8D9
W3= 2E0+2E1+6E2+E3+6E4
変数定義
X1~X8は、それぞれの幅の、過剰カット長さ。
要求1
幅60のものを長さ500必要とする。
この要求を満たすパターンは A1 しかない。
A1=500+X1
要求2
幅56のものを長さ400必要とする。
A2+A3=400+X2
要求3
幅42のものを長さ300必要とする。
次のパターンが利用できる。
A4+A5+A6+A7+D0=300+X3
要求4
幅38のものを長さ450必要とする。
A8+A9+B0+B1+B2+D1=450+X4
要求5
幅34のものを長さ350必要とする。
A8+2B3+B4+B5+B6+B7+D2+E0=350+X5
要求6
幅24のものを長さ100必要とする。
A4+A9+B4+3B8+2B9+2C0+C1+C2+C3+C4+2D3+D4+D5+E1=100+X6
要求7
幅15のものを長さ800必要とする。
A2+2A5+A6+2B0+B1+2B5+B6+B9+
3C1+2C2+C3+4C5+3C6+2C7+C8+
D4+3D6+2D7+D8+2E2+E3=800+X7
要求8
幅10のものを長さ1000必要とする。
A1+A3+A6+3A7+A9+B1+3B2+B4+2B6+3B7+
2C0+C2+3C3+4C4+C5+2C6+4C7+5C8+7C9+
D1+D2+2D5+D7+3D8+4D9+E1+2E3+3E4=1000+X8
変数対応表
X1X2X3X4X5 X6X7X8
X1X2 X3X4 X5X6 X7X8
A1A2A3A4A5 A6A7A8A9
X9X10X11X12X13 X14X15X16X17
B0B1B2B3B4 B5B6B7B8B9
X18X19X20X21X22 X23X24X25X26X27
C0C1C2C3C4 C5C6C7C8C9
X28 X29X30X31X32X33 X34X35X36X37
D0D1D2D3D4 D5D6D7D8D9
X38 X39X40X41X42X43 X44X45X46X47
E0E1E2E3E4
X48 X49X50X51X52
T1T2T3W1W2W3
X53 X54X55X56X57X58
目的関数(min) Z=28T1+19T2+15T3
制約式
T1 ≦ 1600
T2 ≦ 10000
T3 ≦ 10000
T1-A1-A2-A3-A4-A5-A6-A7-A8-A9- B0-B1-B2-B3-B4-B5-B6-B7-B8-B9-
C0-C1-C2-C3-C4-C5-C6-C7-C8-C9 = 0
T3-E0-E1-E2-E3-E4 = 0
総費用を最小にした解
最小値は 46632.1 です
無駄を最小にした解
最小値は 544.445 です
総費用を最小にした解無駄を最小にした解
0 でない変数パターン 0 でない変数パターン
x[ 3]X316.6667
x[ 4]X450
x[ 9]A1500 x[ 9]A1500
x[10]A2400 x[10]A2400
x[13]A5171.429 x[13]A5200
x[15]A7128.571 x[15]A7116.667
x[16]A8350 x[16]A8350
x[17]A93.57143
x[26]B832.1429 x[26]B833.3333
x[33]C514.2857
x[39]D196.4286 x[39]D1150
x[53]T11600 x[53]T11600
x[54]T296.4286 x[54]T2150
x[55]T30 x[55]T30
x[56]W11428.57 x[56]W11400
x[57]W20 x[57]W20
x[58]W30 x[58]W30
Python による結果
無駄を最小にした解
最適値= 544.44474
総費用を最小にした解
最小値は 46632.1 です
総費用を最小にした解 無駄を最小にした解
書籍解 書籍解
A1500.0 500 500 500
A2400.0 400 400 400
A5200.0 171.42865 200 200
A7100.0 128.57135 100 135.5
A8350.0 350 350 362.5
A93.5714286 3.57139 0
B832.142857 32.1429 50 0
C5 14.286 0
C914.285714
D196.428571 96.4286 200 87.5
D3 0 50
T11600.0 1600 1600 1600
T296.428571 96.429 200 137.5
T3 0 0
W11428.5714 0
X3 0 37.5
X4 100 0
X5 0 12.5
X6 50 0
Python による結果
(06.4)乗員のスケジュール問題
A 航空会社は、以下のフライトを運航している。
フライト
番号
出発地目的地時間
101シカゴロサンゼルス午後
410ニューヨークシカゴ午後
220ニューヨークマイアミ
17マイアミシカゴ
7ロサンゼルスシカゴ午後
13シカゴニューヨーク
11マイアミニューヨーク
19シカゴマイアミ
23ロサンゼルスマイアミ
3マイアミロサンゼルス午後
フライトを運用するスタッフは、 低コストで乗員を割り当てたい と思っている。
基本的な問題は、 1人の乗員が1度のフライトを終えたのちに彼が乗り込む次のフライトを決定すること である。
この問題を理解するのに必要な基本概念は、ツアーの概念である。
ツアーの特徴を単純化すれば次のようである。
  1. ツアーは1つから3つの接続されたフライトからなる。
  2. ツアーは出発地で終わると、2単位のコストがかかる。
  3. 出発地以外の場所で終わる行き止まりツアーは3単位のコストがかかる。
以下はツアーの例である。
ツアーコスト
(単位)
17, 101, 232
220, 17, 1013
410, 132

問題を解決するためにはすべてのツアーを数え上げることが必要である。
ツアーのリスト
1回
フライト
コスト 2回
フライト
コスト 3回
フライト
コスト
11013 11101, 233 25101, 23, 172
24103 12410, 132 26101, 23, 113
32203 13410, 193 27410, 19, 173
4173 14220, 173 28410, 19, 112
573 15220, 112 29220, 17, 1013
6133 1617, 1013 30220, 11, 4103
7113 17 7, 133 25 17,101, 232
8193 187, 193 317, 19, 173
9233 19 11,4103 32 7, 19, 113
1033 20 19, 172 33 11,417, 133
21 19, 113 28 11,410, 192
22 23, 173 34 19, 17,1013
23 23, 113 28 19, 11,4102
24 3, 232 25 23, 17,1012
35 23, 11,4103
36 2, 23, 173
37 3, 23, 113
出発地点で終わる3回フライトにおいて、出発地を区別しないことにする。
だから番号が重複している。
以上で乗員は確保されているとして、
すべてのフライトを含むツアーの組み合わせの中で、
コストを最小にするもの(ツアー)を求める。
変数はツアーである。
目的関数(min)
Z= 3T1 + 3T2 + 3T3 + 3T4 + 3T5 + 3T6 + 3T7 + 3T8 + 3T9
+ 3T10+ 3T11+ 2T12+ 3T13+ 3T14+ 2T15+ 3T16+ 3T17+ 3T18
+ 3T19+ 2T20+ 3T21+ 3T22+ 3T23+ 2T24+ 2T25+ 3T26+ 2T27
+ 2T28+ 3T29+ 3T30+ 3T31+ 3T32+ 3T33+ 3T34+ 3T35+ 3T36
+ 3T37
制約条件式
F101) T1 +T11+T16+T25+T26+T29+T34=1
F410) T2 +T12+T13+T19+T27+T28+T30+T33+T35=1
F220) T3 +T14+T15+T29+T30=1
F17) T4 +T16+T20+T22+T25+T27+T29+T31+T34+T36=1
F7) T5 +T17+T18+T31+T32=1
F13) T6 +T12+T17+T33=1
F11) T7 +T15+T19+T21+T23+T26+T28+T30+T32+T33+T35+T37=1
F19) T8 +T13+T18+T20+T21+T27+T28+T31+T32+T34=1
F23) T9 +T11+T22+T23+T24+T25+T26+T35+T36+T37=1
F3) T10+T24+T36+T37=1
最適解
コスト=10
ツアーフライト出発地目的地コスト
T17F7ロサンゼルス-->シカゴ 3
F13シカゴ-->ニューヨーク
T24F3マイアミ-->ロサンゼルス 2
F23ロサンゼルス-->マイアミ
T28F410ニューヨーク-->シカゴ 2
F19シカゴ-->マイアミ
F11マイアミ-->ニューヨーク
T29F220ニューヨーク-->マイアミ 3
F17マイアミ-->シカゴ
F101シカゴ-->ロサンゼルス
最小値は 10 です
0 でない変数の値:
x[17] = 1
x[24] = 1
x[28] = 1
x[29] = 1
Python による結果

7.ネットワークまたは輸送問題
(07.1)ネットワーク型の特徴
次の図は、製品を配送するのに問屋を仲介にしている会社の配送システムである。
この会社は A, B で表される2つの工場と、X, Y, Z で表される3つの倉庫と、
1, 2, 3, 4 で表される4つの販売地域を持っている。
各節点(ノード)の横の数字は、その節点(ノード)における製品の出荷可能量を表す。
例として、工場 A は9単位の製品が出荷可能である。販売地域3では、4単位を搬入する必要がある。
流枝(アーク)上の数字は、その流枝(アーク)を用いて搬出する製品1単位当たりの費用である。
例として、工場 A の9単位のうち、5単位を倉庫 Y に搬送する場合、コストは5×2=10だけかかる。
問題は、 すべての販売地域の需要を満たし、総費用を最小にするような各流枝(アーク)上の搬送量を決定すること である。
流枝変数
AXAYBXBYBZ X1X2Y1Y2Y3 Z2Z3Z4
X1X2X3X4X5 X6X7X8X9X10 X11X12X13
制約式
AX+AY=9
BX+BY+BZ=8
-AX-BX+X1+X2=0
-AY-BY+Y1+Y2+Y3=0
-BZ+Z2+Z3+Z4=0
-X1-Y1=-3
-X2-Y2-Z2=-5
-Y3-Z3=-4
-Z4=-5
目的関数
AX+2AY+3BX+BY+2BZ+5X1+7X2+9Y1+6Y2+7Y3+8Z2+7Z3+4Z4=Z (MIN)
最適解

タブローシンプレックス法
          X1           8.0000        0.0000
          X2           1.0000        0.0000
          X3           0.0000        3.0000
          X4           3.0000        0.0000
          X5           5.0000        0.0000
          X6           3.0000        0.0000
          X7           5.0000        0.0000
          X8           0.0000        5.0000
          X9           0.0000        0.0000
         X10           4.0000        0.0000
         X11           0.0000   999993.0000
         X12           0.0000        1.0000
         X13           5.0000        0.0000

  *objective function *
     Z           121.0000
変数
X1AX8
X2AY1
X3BX
X4BY3
X5BZ5
X6X13
X7X25
X8Y1
X9Y2
X10Y34
X11Z2
X12Z3
X13Z45
Z101121
Python による結果
(07.3)PERT(最長経路問題)
PERT/CPM は大きなプロジェクトの進行を監督するための手法である。
計画通りプロジェクトが終了するためには、 必ず時間通り完了しなければならない仕事の集合(クリティカルパス)を決める必要がある。
次の問題、家を建てるというプロジェクト、を考える。
活動略記号活動
所要時間
先行活動 ノードイベント
A地下室を掘り始める時期
1基礎地盤の掘削 DIG3-
B地下室掘り完成
2基礎コンクリート打ち込み FOUND4DIG
C土台の完成
3基礎床コンクリート打ち POURB2FOUND
4床梁の据え付け JOISTS3FOUND
D床梁の完成
5壁の据え付け WALLS5FOUND
E壁の完成
6たるきの取り付け RAFTERS3WALLS, POURB
Gたるきの取り付けの完成
7床板張り FLOOR4JOIST
F床板張りの完成
8内装下地 ROUGH6FLOOR
9屋根張り ROOF7RAFTERS
H屋根の完成
10内装仕上げ FINISH5ROUGH, ROOF
11造園 SCAPE2POURB, WALLS
I屋根及び内装の完成
定式化ー1
問題は、PERT における最長経路を見つけること、である。
流枝変数
DIGFOUNDPOURBJOISTSWALLS RAFTERSFLOORROUGHROOFFINISH SCAPE
制約式は以下の条件のもとに作成する。
  1. DIG は必ずクリティカルパス上にある。
  2. 先行作業の1つがクリティカルパス上にある時のみ、その仕事がクリティカルパス上にある可能性がある。ある仕事がクリティカルパス上にあるとき、その後続作業のうちただ1つはクリティカルパス上にある。
  3. SCAPE, FINISH のうちどちらかはクリティカルパス上にある。
制約式
-DIG=-1
-FOUND+DIG=0
-JOISTS-POUR-WALLS+FOUND=0
-FLOOR+JOISTS=0
-RAFTERS-SCAPE+POURB+WALLS=0
-ROUGH+FLOOR=0
-ROOF+RAFTERS=0
-FINISH+ROUGH+ROOF=0
FINISH+SCAPE=1
目的関数
3DIG+4FOUND+2POURB+3JOISTS+5WALLS+3RAFTERS+4FLOOR+6ROUGH+
7ROOF+5FINISH+2SCAPE=Z (MAX)
最適解
DIGFOUNDPOURBJOISTSWALLS RAFTERSFLOORROUGHROOF FINISHSCAPE
11001 10011 0
Python による結果
注目点)ネットワークの枝の長さを景色の美しさと考えれば、
以上の定式化は途中の経路が最も景色が良い。
定式化ー2
この定式化の目的はプロジェクトにかかる時間を最小にすることである。
流枝変数
ABCDE FGHI
制約式
① B-A≧3
② C-B≧4
③ E-C≧2
④ D-C≧3
⑤ E-C≧5
⑥ F-D≧4
⑦ G-E≧3
⑧ H-F≧6
⑨ H-G≧7
⑩ I-H≧5
⑪ I-E≧2
目的関数
I-A=Z (MIN)
最適解
Python による結果
クリティカルパスは
1B-A31
2C-B41
3E-C20
4D-C30
5E-C51
6F-D40
7G-E31
8H-F60
9H-G71
10I-H51
11I-E20
プロジェクトにかかる時間(目的関数値)は 27 である。
流枝変数
ABCDE FGHI
03712 152227

書籍解は以下のようであるが、クリティカルパス上をたどれば一致している。
A = 0
B = 3
C = 7
D = 10
E = 12
F = 14
G = 15
H = 22
I = 27
(07.6)パスによる定式化
(07.1) の問題では、ネットワーク全体でとるパスで解を考えることが自然である。
13個のパスがある。
  1. A-->X-->1
  2. A-->X-->2
  3. A-->Y-->1
  4. A-->Y-->2
  5. A-->Y-->3
  6. B-->X-->1
  7. B-->X-->2
  8. B-->Y-->1
  9. B-->Y-->2
  10. B-->Y-->3
  11. B-->Z-->2
  12. B-->Z-->3
  13. B-->Z-->4
制約条件式
AX1+AX2+AY1+AY2+AY3=9
BX1+BX2+BY1+BY2+BY3+BZ2+BZ3+BZ4=8
AX1+AY1+BX1+BY1=3
AX2+AY2+BY2+BZ2=5
AY3+BY3+BZ3=4
BZ4=5
目的関数
6AX1+8AX2+11AY1+8AY2+9AY3+8BX1+10BX2+10BY1+7BY2+8BY3+10BZ2+9BZ3+6BZ4=Z (MIN)
最小値は 121 です
0 でない変数の値:
x[1] = 3
x[2] = 2
x[5] = 4
x[9] = 3
x[13] = 5
流枝変数
AX1AX2AY1AY2AY3 BX1BX2BY1BY2BY3 BZ2BZ3BZ4
X1X2X3X4X5 X6X7X8X9X10 X11X12X13
パスによる定式化
変数パス
X13AX1
X22AX2
X3AY1
X4AY2
X54AY3
X6BX1
X7BX2
X8BY1
X93BY2
X10BY3
X11BZ2
X12BZ3
X135BZ4
Z121
Python による結果
(07.7)方向性のないネットワーク
あるネットワークは5都市間の電話網である。
各枝は、容量制限はあるが、方向性はない。
通話に必要なすべてのリンクを使用できる。
ある時点での呼び出しが次のようであると考える。
(B)
DNV
(C)
CHI
(D)
ATL
(E)
MIA
(A)SEA 1020 3833
(B)DNV 42 4823
(C)CHI 9036
(D)ATL 26
呼び出し総数=366
問題は、上記需要をどれだけ多く満たせるか、である。
都市間パス
都市間パス
A-BA-BX1
A-C-D-BX2
A-CA-CX3
A-B-D-CX4
A-DA-B-DX5
A-C-DX6
A-EA-B-D-EX7
A-C-D-EX8
B-DB-DX9
B-A-C-DX10
B-CB-D-CX11
B-A-CX12
B-EB-D-EX13
B-A-C-D-EX14
C-DC-DX15
C-A-B-DX16
C-EC-D-EX17
C-A-B-D-EX18
D-ED-EX19
制約条件
容量による制約
A-B を含むパス
X1+X4+X5+X7+X10+X12+X14+X16+X18≦95
A-C を含むパス
X3+X6+X8+X10+X12+X14≦80
B-D を含むパス
X2+X4+X5+X7+X9+X11+X13+X16+X18≦200
C-D を含むパス
X2+X4+X6+X8+X10+X11+X14≦110
D-E を含むパス
X7+X8+X13+X14+X17+X18+X19≦105
需要による制約
A-B) X1+X2≦10
A-C) X3+X4≦20
A-D) X5+X6≦38
A-E) X7+X8≦33
B-C) X11+X12≦42
B-D) X9+X10≦48
B-E) X13+X14≦23
C-D) X15+X16≦90
C-E) X17+X18≦36
D-E) X19≦26
目的関数
X1+X2+X3+X4+X5+X6+X7+X8+X9+X10+X11+X12+X13+X14+X15+X16+X17+X18+X19=Z (MAX)
最適解
最小値は -353 です
0 でない変数の値:
x[1] = 10
x[3] = 20
x[5] = 38
x[7] = 33
x[9] = 48
x[11] = 42
x[13] = 23
x[15] = 90
x[17] = 36
x[19] = 13
書籍解
都市間パス
P1SEADNVA-BA-BX1
P2SEADNVA-C-D-BX2
P1SEACHIA-CA-CX3
P2SEACHIA-B-D-CX4
P1SEAATLA-DA-C-DX5
P2SEAATLA-B-DX6
P1SEAMIAA-EA-C-D-EX7
P2SEAMIAA-B-D-EX8
P1DNVCHIB-CB-A-CX9
P2DNVCHIB-D-CX10
P1DNVATLB-DB-DX11
P2DNVATLB-A-C-DX12
P1DNVMIAB-EB-D-EX13
P2DNVMIAB-A-C-D-EX14
P1CHIATLC-DC-DX15
P2CHIATLC-A-B-DX16
P1CHIMIAC-EC-D-EX17
P2CHIMIAC-A-B-D-EX18
P1ATLMIAD-ED-EX19
制約条件
容量による制約
1 P1SEADNV+P2SEACHI+ P2SEAATL+
X1 X4 X6
P2SEAMIA+P1DNVCHI+ P2DNVATL+
X8 X9 X12
P2DNVMIA+P2CHIATL+ P2CHIMIA 95
X14 X16 X18
2 P2SEADNV+P1SEACHI+ P1SEAATL+
X2 X3 X5
P1SEAMIA+P1DNVCHI+ P2DNVATL+
X7 X9 X11
P2DNVMIA+P2CHIATL+ P2CHIMIA 80
X14 X16 X18
3 P2SEADNV+P2SEACHI+ P2SEAATL+
X2 X4 X6
P2SEAMIA+P2DNVCHI+ P1DNVATL+
X8 X10 X11
P1DNVMIA+P2CHIATL+ P2CHIMIA 200
X13 X16 X18
4 P2SEADNV+P2SEACHI+ P1SEAATL+
X2 X4 X5
P1SEAMIA+P2DNVCHI+ P2DNVATL+
X7 X10 X12
P2DNVMIA+P2CHIATL+ P1CHIMIA 110
X14 X16 X17
5 P1SEAMIA+P2SEAMIA+ P1DNVMIA+
X7 X8 X13
P2DNVMIA+P1CHIMIA+ P2CHIMIA+
X14 X17 X18
P1ATLMIA 105
X19
需要による制約
P1SEADNV+P2SEADNV 10
X1X2
P1SEACHI+P2SEACHI 20
X3X4
P1SEAATL+P2SEAATL 38
X5X6
P1SEAMIA+P2SEAMIA 33
X7X8
P1DNVCHI+P2DNVCHI 42
X9X10
P1DNVATL+P2DNVATL 48
X11X12
P1DNVMIA+P2DNVMIA 23
X13X14
P1CHIATL+P2CHIATL 90
X15X16
P1CHIMIA+P2CHIMIA 36
X17X18
P1ATLMIA26
X19
容量による制約
A-B を含むパス
X1+X4+X6+X8+X9+X12+X14+X16+X18≦95
A-C を含むパス
X2+X3+X5+X7+X9+X11+X14+X16+X18≦80
B-D を含むパス
X2+X4+X6+X8+X10+X11+X13+X16+X18≦200
C-D を含むパス
X2+X4+X5+X7+X10+X12+X14+X16+X17≦110
D-E を含むパス
X7+X8+X13+X14+X17+X18+X19≦105
需要による制約
A-B) X1+X2≦10
A-C) X3+X4≦20
A-D) X5+X6≦38
A-E) X7+X8≦33
B-C) X11+X12≦42
B-D) X9+X10≦48
B-E) X13+X14≦23
C-D) X15+X16≦90
C-E) X17+X18≦36
D-E) X19≦26
目的関数
X1+X2+X3+X4+X5+X6+X7+X8+X9+X10+X11+X12+X13+X14+X15+X16+X17+X18+X19=Z (MAX)
最適解
Python書籍
353322
1P1SEADNV10
2P2SEADNV
3P1SEACHI2020
4P2SEACHI
5P1SEAATL
6P2SEAATL3838
7P1SEAMIA
8P2SEAMIA20
9P1DNVCHI2742
10P2DNVCHI15
11P1DNVATL4848
12P2DNVATL
13P1DNVMIA2323
14P2DNVMIA
15P1CHIATL9075
16P2CHIATL15
17P1CHIMIA3635
18P2CHIMIA
19P1ATLMIA2626
Python による結果
15.統計的推定への応用(回帰分析)
(15.2)最小絶対偏差(回帰分析)
誤差の絶対値の合計を最小にするように回帰係数を推定する。
記号の定義
n=オブザベーションの数(観測値数)
di=オブザベーション i の従属変数の値(i=1,2,・・・,n)
k=説明変数の数
eij=オブザベーション iにおける j 番目の従属変数の値 (i=1,2,・・・,n, j=1,2,・・・,k)
xj=説明変数 j の回帰係数
wi=オブザベーション i の観測値と推定値の誤差
問題定義式
MIN |w1|+|w2|+|w3|+・・・+|wn|
変数定義の変更
wi=ui-vi
ui,vi≧0
問題の書き換え
MIN |u1|+|v1|+|u2|+|v2|+・・・ +|un|+|vn|
ST
e0+ei1x1+ei2x2+・・・ +eikxk+ui-vi=di
(i=1,2,・・・,n)
例題
diei1ei2
211
312
414
516
817
目的関数
Z=U1+V1+U2+V2+U3+V3+U4+V4+U5+V5
制約条件式
U1-V1+X0+X1=2
U2-V2+X0+2X1=3
U3-V3+X0+4X1=4
U4-V4+X0+6X1=5
U5-V5+X0+7X1=8
解答
最小値は 2.66667 です
0 でない変数の値:
x[3] = 0.333333
x[8] = 0.333333
x[9] = 2
x[11] = 1.33333
x[12] = 0.666667
ここで、
x[11] と x[12] の値は回帰係数を表すから、単回帰式は
di=1.33333+0.666667ei2
である。
Python による結果
以下にPython による結果を示す。
Python による結果
ここで、絶対値の計算方法の別の方式を示す。
(線形計画法の問題番号 3-1.3 を参照)

ページ先頭