SlideShare a Scribd company logo
Model building in mathematical programming #2-3
第 3 章 Building linear programming models
⾼品 佑也 @takashinayuya
3 章の内容
3.1 The importance of linearity
3.2 Defining objectives
3.3 Defining constraints
3.4 How to build a good model
3.5 The use of modelling languages
2
3.1 The importance of linearity
線形計画モデルは、⽬的関数、制約ともに線形でなければならない。
そのため、応⽤は線形モデルが妥当な(もしくは良い近似になる)場合に限られるが、⾮線形計画
モデルと⽐べて遥かに解きやすいため、注⽬されている。
なお、⾮線形な表現であっても、線形な表現に変換できる場合もある(cf. 3.2 節)。
3
なぜ線形計画モデルは解きやすいのか
以下の簡単な例題を例に説明する。
Maximize 3x +1 2x2
subject to x + x1 2
2x + x1 2
−x + 4x1 2
x , x1 2
≤ 4,
≤ 5,
≥ 2,
≥ 0.
4
最適解の図的解釈
塗り潰されている領域の中で、破線の切⽚を
⼀番⼤きくするような点 A が最適解。
塗り潰し(実⾏可能領域)
制約条件を満たす の
組み合わせ(実⾏可能解)の集合。
破線
同じ⽬的関数値を持つ点の集合。平⾏移動して
上に⾏くほど⽬的関数の値( 切⽚)は⼤きい。
(x , x )1 2
∝
5
仮に、⽬的関数が だった場合、
破線の傾きが直線 AC と同じになり、
線分 AC 上の点は全て最適解になる。
このように、線形計画モデルの最適解は、
実⾏可能領域の頂点の中に必ず 1 つは存在する。
この性質を利⽤することで、線形計画モデルでは、
解の効率的な探索が可能(cf. 単体法)。
4x +1 2x2
6
⾮線形計画モデルの場合
⽬的関数か制約のうち少なくとも⽚⽅が
⾮線形な関数になり、最適解が頂点の
いずれかにあるとは⾔えなくなる。
①⽬的関数が⾮線形
破線が直線でなくなる。
②制約が⾮線形
塗り潰し領域の境界が直線でなくなる。
⾮線形計画については、詳しくは第 7 章。
7
3.2 Defining objectives
線形計画法では、⽬的関数を最⼤化(最⼩化)する変数の値を求める。
実⽤的な⽬的関数としては、以下のようなものがある。
最⼩化 最⼤化
コスト、従業員数、余剰
利益、効⽤、売上、ROI、NPV、
従業員数、顧客満⾜度、⽣存確率、
計画ロバスト性
8
注意:⽬的関数を設定しても意味がない場合
多くの場合、⽬的関数を変えると最適解も変わるが、⽬的関数が変わっても、同じ最適解が求まる
ケースもある。例えば次式では、最適解は常に 。
x + x1 2
x , x1 2
≤ 2,
≥ 1.
⾏動の⾃由度が少ない場合には、現実にもこのような状況になる場合がある。
異なる⽬的関数から常に同じ最適解が求まる場合には注意が必要。
x =1 x =2 1
9
これから、⽬的関数のタイプごとにモデリング⽅法や注意点を説明する。
3.2.1 Single objectives
3.2.2 Multiple objectives
3.2.3 Minimax objectives
3.2.4 Ratio objectives
3.2.5 Non-existent and non-optimizable objectives
10
3.2.1 Single objectives
現実の数理計画モデルでよく出てくる、以下の 2 つについて説明する。
利益(への貢献)の最⼤化
(変動)コストの最⼩化
(変動)と付けているのは、標準的な線形計画モデルでは変動費しか考えないため。ただし、整数
計画法で設備投資等も含めて最適化する場合は、固定費も考慮できる。
11
「コストの最⼩化」を⽬的とする場合
⽣産アロケーション最適化において、「コストの最⼩化」を⽬的にする場合は、既知の需要を満たすと
いう次の制約を設定する必要がある。
x =
j
∑ ij D   for all i,i
ここで、 は製品 のプロセス での⽣産量、 は製品 の需要を表す。この制約なしでコスト
を最⼩化すると、全く⽣産を⾏わないのが最適解になってしまう。
xij i j Di i
12
「利益の最⼤化」を⽬的とする場合
需要 を変数と捉え、発⽣したコストに対する利益を評価することで、コストだけでなく、売上も最
適化の対象にできる。
x −
j
∑ ij d =i 0  for all i.
実践的には、コスト最⼩化モデルから始めて、計画ツールとして受け⼊れられてから、利益最⼤化モデ
ルへ拡張していくのが良いかもしれない。
di
13
特殊なケース①:モデルが⾮線形になる場合
利益最⼤化モデルでは、単位需要当たりの限界利益係数 は、需要を表す変数 に依存して
いることもある。その場合、⽬的関数に含まれる は線形ではなくなる。
特に、 が の関数として表現できる場合には、⾮線形計画モデルになる(例:[McDonald+
1974])。
Pi di
P di i
Pi di
14
特殊なケース②:時間を考慮する場合
将来の⾦額を現在の⾦額と⽐較する際に、⾦額に補正を加える。最も⼀般的な⽅法は、⼀定の
⾦利の下で将来のお⾦を割り引くこと(cf. 4.1 節)。
また、第 2 部で挙げられている多くの問題は、このようなケースに該当する。例えば、ECONOMIC
PLANNING では、将来のより⼤きな利益のために、現在の利益を諦めて新しいプラントに投資する
かどうかを決定する。
15
3.2.2 Multiple objectives
複数の(競合する)⽬的関数を扱うには、⼤別して以下の 3 つの⽅法がある。
⽬的関数の個別最適化
⽬的関数の制約化
⽬的関数の線形和
唯⼀の正解はなく、状況に応じて使い分ける。
16
⽬的関数の個別最適化
複数の⽬的関数を個別に最適化し、⾒⽐べる。
1 つの⽬的関数を最適化して得られた最適解を初期値として、別の⽬的関数を最適化することで、
計算コストの削減が可能。
第 2 部で取り上げる MANPOWER PLANNING では、コストと冗⻑性という 2 つの⽬的関数を最
⼩化する。
17
⽬的関数の制約化
複数の⽬的関数のうち、1 つを除き全て制約として扱う。
⼀度モデルを作ったら、⽬的関数と制約を相互に変換するのは容易。どの⽬的関数を制約として扱
うか、制約として扱う際の右辺値をどうするかを、⾊々変えて試す。
18
⽬的関数の線形和
複数の⽬的関数の線形和として、新たな⽬的関数を定義する。
重み付けの仕⽅は、個⼈的な判断で⾏われることも多い。異なる重み付けの仕⽅で実験すること
で、意思決定者に⽅針の選択肢を提供できる。
多くの商⽤パッケージでは、このような⽬的関数の線形和を簡単に定義して、重み付けの仕⽅を変
更することができる。
19
⽬的関数の制約化と線形和の関係
複数の⽬的関数を制約化して解くと、各制約について shadow price を計算できる。この shadow
price で元々の⽬的関数を重み付けして新たな⽬的関数を定義すると、⽬的関数を制約化した場
合と同じ解が得られる。
なお、shadow price は、第 6 章の感度分析でも紹介するが、ある制約条件を少し緩めたときの⽬
的関数の増分。
20
⽬的関数同⼠が競合する場合
⽬的関数同⼠が競合している場合でも、3 つの⽅法はいずれも適⽤可能。
ただし、⽬的関数を制約化する場合には、実⾏可能解がなくならないよう注意する。制約が⽭盾し
ている場合は、緩和する必要がある。この⽅法は goal programming と呼ばれるが、詳しくは 3.3
節で説明する。
21
3.2.3 Minimax Objectives
⽬的関数が minimax の形(⼀番悪いものを⼀番マシにする)をしている場合、
Minimize Maximum a x( i
j
∑ ij j )
以下のように線形計画法の形に変換できる(maximin も同様)。
Minimize  z
subject to    a x − z ≤ 0  for all i.
j
∑ ij j
22
Minimax の⽬的関数は、以下の場合で出てくることがある。
Goal programming(3.3 節)
Zero-sum ゲーム
Maximax(または minimin)は、線形計画法で扱うことはできず、整数計画法を使⽤する必要が
ある。詳しくは 9.4 節。
23
3.2.4 Ratio objectives
以下の⽬的関数は、次ページに⽰す⼿順で線形計画法の形に変換できる。
Maximize (or Minimize) 
b x∑j j j
a x∑j j j
なお、 が常に⾮零で同符号になるときしか使えない。b x∑j j j
24
Ratio objective の線形化⼿順
1. と置く。
2. と置く。
3. という制約を⼊れる。
4. 元々の制約の両辺に をかけ、
の式にする。
⼿順 3 は、⼿順 1 の式を変形しただけ。
変換前:
Maximize  ,
b x∑j j j
a x∑j j j
s.t.   d x ⪋
j
∑ j j e.
変換後:
Maximize   a w ,
j
∑ j j
s.t.   d w − et ⪋ 0,
j
∑ j j
b w = 1.
j
∑ j j
t = 1/ b x∑j j j
w =j x tj
b w =∑j j j 1
t
w , tj
25
Ratio objective の⽤途
Ratio objective は、何らかの意味でのパフォーマンスの尺度を最適化するのに使⽤できる(例:
[Charnes+ 1978])。(前述の ROI も ratio objective に⼊る?)
第 2 部の EFFICIENCY ANALYSIS でも使⽤する。
26
3.2.5 Non-existent and non-optimizable objectives
⽬的関数が存在しない、もしくは最適化できない場合でも、⼈為的に⽬的関数を設定することで、
実⾏可能解を⾒つけることができる。
⼈為的に⽬的関数を設定することで、単にモデルを明確に定義できるだけでなく、制約を満たす「極
端な」解を得ることもできる。これはモデルの検証に有⽤。
27
3.3 Defining constraints
線形計画モデルでよく出てくる制約を紹介する。
3.3.1 〜 3.3.5 は、かなり具体的な制約。
3.3.6 〜 3.3.11 は、ある程度抽象的な制約。
28
3.3.1 Productive capacity constraints
⽣産能⼒に関する制約。
⽣産⼯程におけるリソース(処理能⼒や労働⼒)が限られている場合等。
例:1.2 節のオイル混合問題で出てきた、1 ⽉当たりのオイルの精製上限等。
29
3.3.2 Raw material availabilities
原材料の使⽤可否に関する制約。
⽣産プロセスなどで使える原材料の供給量が限られている場合等。
30
3.3.3 Marketing demands and limitations
需要に関する制約。
製品を作ったときに売ることができる最⼤の量や、最低限作らなければいけない量が決まっている場
合に、それぞれ上限や下限が付く。
このような上限、下限といった制約は⾮常に単純であり、単体法で解く際は単に変数に関する上下
限として扱う⽅が効率的。これについては、後ほど説明する。
31
3.3.4 Material balance (continuity) constraints
原材料のバランスに関する制約。
あるプロセスに⼊⼒する原材料の量の総和が、そのプロセスから出⼒される⽣成物の量の総和と⼀
致しなければいけない。
例:1.2 節のオイル混合問題で出てきた、原料オイルと製品の重量の関係。
32
3.3.5 Quality stipulation
製品の品質規定に関する制約。
材料を混合する問題で、原材料や製品に何らかの計測可能な品質の指標がある場合等に、制約
条件になる。
例:1.2 節のオイル混合問題で出てきた、製品の硬度に関する制約。
33
3.3.6 Hard and soft constraints
以下のような線形計画法の(ハード)制約では、制約を満たさない解は許されない。
a x ≤
j
∑ j j b.
しかし、⽣産能⼒や原材料に関する制約では、必ずしも常にこの制約を満たさなくてよいこともある。
そういった状況を織り込むには、ソフト制約が使⽤できる。
34
先ほどの制約式をソフト制約にするには、次のように変形する。
a x −
j
∑ j u ≤ b,
ここで、 は制約の違反の度合いを表す⾮負の変数。ソフト制約では、⽬的関数の中で にペナル
ティを課すことで、ハード制約よりも緩い制約をかけられる。
さらに、 に上限を課すことで、ハード制約も同時に課すことができる。
元々の制約の不等号の向きが逆でも同様に処理できる。
u u
u
35
さらに、元々の制約が等号だった場合は、次のように変形をすればよい。
a x +
j
∑ j j u − v = b
ここで、 は共に制約の違反の度合いを表す⾮負の変数。u, v
36
ファジー集合を⽤いたソフト制約(fuzzy linear programming; FLP)
ソフト制約をかけるもう⼀つの⽅法として、ファジー集合理論を⽤いる⽅法がある。
具体的には、各制約の違反度をファジー集合における帰属度に対応付け、全ての帰属度が予め決
めた基準より⼤きい、という制約を課す[Verdegay 1982]。
しかし、ファジー集合を⽤いた定式化は、minimax ⽬的関数を⽤いることで従来の線形計画モデル
に帰着できるということが⽰されている[Dyson 1980]。
37
3.3.7 Chance constraints
ある確率 以上で特定の制約を満たす、という制約。
P a x ≤ b ≥[
j
∑ j j ] β.
この制約に関しては、 がより⼤きいほど、⽬的関数の中でより⾼いコストを課す、という定式化が考
えられるが、モデルが複雑になる。
代わりに、新たな定数 を⽤いて、以下の制約に置き換えることもある。
a x ≤
j
∑ j j b .′
β
β
b (>′
b)
38
3.3.8 Conflicting constraints
⽭盾する制約を含むモデルにおいて、可能な限り全ての制約を満たすことを考える。この問題は goal
programming として知られるが、結果的に線形計画モデルになる。
cf. 第 2 部 MARKET SHARING、CURVE FITTING
39
Goal programming
Goal programming では、各制約を可能な限り満たすべき「ゴール」と考え、ソフト制約として表す。
例えば、以下のような等号制約があった場合、
a x =
j
∑ ij j b   for all i,i
次のようなソフト制約に変換する。
a x +
j
∑ ij j u −i v =i b   for all i.i
40
ソフト制約を使って最適化問題を構成する⽅法として、以下の 2 つがある。
1.
を使って書き換えると、 .
ソフト制約の節で触れたが、 にそれぞれペナルティを課すもの。
2.
を使って書き換えると、 .
複雑に⾒えるが、minimax の形になっており、線形モデルで定式化できる。
Minimize a x − b∑i ∣
∣∣
∣
∑j ij j i
∣
∣∣
∣
u , vi i Minimize ∣u −∑i i v ∣i
u, v
Minimize max a x − bi
∣
∣∣
∣
∑j ij j i
∣
∣∣
∣
u , vi i Minimize max ∣u −i i v ∣i
41
Minimax ⽬的関数の線形化
制約からの最⼤の乖離として変数 を導⼊すると、
Minimize  z
subject to    u − v − z ≤ 0  for all i.∣ i i∣
であり、少なくとも⽚⽅は となることに注意して制約を変形すると、
z − u ≥i 0  and  z − v ≥i 0  for all i.
この制約の下で を最⼩化すれば、制約からの最⼤の乖離を最も⼩さく抑えるように定式化でき
る。このタイプの問題は「ボトルネック問題」と呼ばれる。
⾔及されていないが、元々の⽬的関数もあるはずなので、 は実際はペナルティ項?
z
u , v ≥i i 0 0
z
z
42
Minimax ⽬的関数の応⽤例
Minimax ⽬的関数の興味深い応⽤として、癌性腫瘍に対し放射線を照射するレベルと⽅向を線
形計画法により決定した例がある[Redpath&Wright 1981]。
彼らは、腫瘍を通過する放射線の分散を最⼩化する代わりに、放射線レベルの差異の最⼤値を最
⼩化した。⼆次計画法が必要になる分散の最⼩化と異なり、最⼤値の最⼩化は、線形計画法に
より簡単に計算できる。
また、整数計画法での応⽤として、minimax の形をしている公平性に関する⽬的関数と、効⽤関
数を組み合わせた例もある[Hooker&Williams 2012]。
43
3.3.9 Redundant constraints
以下のような制約で最適解が (左辺) < (右辺) だったら、その制約は non-binding であり、取り払
っても最適解に影響は与えない(shadow price が になる)。
a x ≤
j
∑ j j b
このような制約は冗⻑といえるが、残しておいた⽅がよい理由がいくつかある。
1. 冗⻑な制約かどうかが、解いてみないと分からない。
2. データが変わる場合は、将来的に冗⻑でなくなる可能性がある。
3. 6.3 節で議論する ranging に関する情報が、冗⻑な制約に依存する可能性がある。
0
44
なお、最適解において の場合でも、たまたま最適解がそうなっただけで、その制約が
non-binding である可能性は残っている。
ある制約が non-binding であるかどうかを判断するには、shadow price が であるかどうかを⾒れ
ばよい。
a x =∑j j j b
0
45
整数計画法の場合は、仮に下の制約があるときに最適解で (左辺) < (右辺) だったとしても、その
制約が non-binding であるとは必ずしも⾔えない。
a x ≤
j
∑ j j b
このことについては、10.3 節で詳しく議論する。
46
3.3.10 Simple and generalized upper bounds
マーケットの需要等に関する制約は、単純な上下限の形を取ることが多い。
単純な上下限は、単体法で効率的に扱うことができるため、普通の制約としてではなく、変数に関
する単純な上下限として指定される。
# 例:PuLP における変数宣⾔
x = LpVariable("X", lowBound=0, upBound=3) # 0 <= x <= 3
47
Generalized upper bounds (GUBs)
単純な上下限の⼀般化として、以下の式であらわされる generalized upper bounds (GUBs) が
あり、これも計算量的な恩恵がある。
x =
j
∑ j b
等号 の代わりに だったとしても、スラック変数を導⼊すれば問題ない。= ≤
48
下図のように、GUB が複数の集合について存在し、しかも排他的な集合であった場合、その変数達
の集合は GUB 集合に属すると⾔う。変数達が GUB 集合に属する場合には、制約を取り除く代わ
りに GUB 集合として扱えばよい。
49
モデルが⼤きいと、GUB 集合を利⽤する計算量的な利点も⼤きくなりうる。例えば、5.3 節で議論
する輸送問題では、半数以上の制約が GUB 集合とみなすことができる。
モデル中の GUB 集合を検知する⼿法も存在する[Brearley+ 1975]。
50
3.3.11 Unusual constraints
これまでは線形計画法を使ってモデリングできる制約だけを紹介したが、そうでない(unusual な)
制約についても拒絶しないことは重要。
そのような制約は、モデルを整数計画法に拡張することで扱えるようになることもある。この話題につい
ては、第 9 章で議論する。
51
How to build a good model
良いモデルを構築するための⽅法について説明する。
3.4.1 Ease of understanding the model
3.4.2 Ease of detecting errors in the model
3.4.3 Ease of computing the solution
3.4.4 Modal formulation
3.4.5 Units of measurement
52
3.4.1 Ease of understanding the model
コンパクトで現実的なモデルを作ることは可能。例えば、⾮負の変数 が次の制約を満たすなら、
が出てくる全ての場所に の中⾝を代⼊すればよい。
f(x) − y = 0.
しかし、最適解を解釈するのが難しく、余計な計算も必要になる。したがって、解くのに若⼲時間がか
かったとしても、冗⻑なモデルの⽅がよいこともある。
Report writer を使う場合は、解釈性に関する難点を解決してくれる。
y y
f(x)
53
変数や制約に覚えやすい名前をつけるのも重要。
モデルの変数や制約の命名をシステマティックに扱う⽅法も存在する[Beale+ 1974]。
54
3.4.2 Ease of detecting errors in the model
モデルのエラーは次の 2 つに分類できる。
事務的なエラー(例:typo)
定式化のエラー
1 つ⽬のエラーを回避するには、matrix generator (MG) やモデリング⾔語を使って⾮常に⼩さなモ
デルを構築するのが望ましい。
55
どちらのタイプのエラーでも、モデルが unbounded もしくは infeasible になることが多いが、このような
条件はPRESOLVE や REDUCE の⼿順で検知することが可能。
unbounded: ⽬的関数がいくらでも⼤きく(⼩さく)できてしまう場合
infeasible: 制約を満たす解がない場合
6.1 節で説明するが、このようなエラー検知を念頭に置いて定式化することも可能。
56
3.4.3 Ease of computing the solution
計算時間が少ないモデルを構築することが望ましいが、解釈性は落としたくない。
PRESOLVE や REDUCE の⼿順を適⽤することで、モデルの解釈性を保ちながら、実際に解く前にモ
デルをコンパクトにすることが可能。なお、モデル化を⾏うパッケージでは⾃動化されている。
57
他にも、3.3 節で触れた GUB など、モデルの中に存在する特殊な構造を利⽤することで、計算時間
を削減することができる。
モデラーはこのような構造に気づけることが望ましいが、⼀部のパッケージには、そのような構造を⾃動
的に検出する機能もある。
58
3.4.4 Modal formulation
複数の制約が 2-3 個の変数しか含まない場合、実⾏可能領域の頂点を新たに変数 と置くと、
その中に収まるという制約は とまとめられ、制約を削減できる。
このとき、元の変数は .
λi
λ =∑i i 1
x =A 2λ +2 4λ +3 5λ ,  x =4 B 5λ +1 5λ +2 3λ3
59
3.4.5 Units of measurement
モデルの係数に格差があると、解くのが難しくなる。例えば、利益に関する係数が百万ポンド当たりで
定義されているのに、1 ポンド刻みで利益を計算しても無意味。
理想的には、モデルの⾮零の係数の⼤きさが 0.1 から 10 の間になることが望ましい。
ほとんどの商⽤パッケージには、解く前に⾃動で係数をスケーリングする機能がある。求解後に解は⾃
動的にスケールを戻される。
60
3.5 The use of modelling language
モデリング⾔語を使う利点。
3.5.1 〜 3.5.4 は、⼀般的な利点。
3.5.5 〜 3.5.8 は、モデリング⾔語の種類ごとの説明。
61
3.5.1 A more natural input format
多くの商⽤パッケージは MPS 形式を使⽤しているが、多くの場合不⾃然で、事務的なエラーの元と
なる。モデリング⾔語を使えば、より⾃然な⼊⼒形式を使える。
NAME SOS2test
ROWS
N obj
L c1
L c2
E c3
COLUMNS
x1 obj -1 c1 -1
x1 c2 1
x2 obj -2 c1 1
x2 c2 -3 c3 1
...
62
3.5.2 Debugging is made easier
モデルのデバッグと検証は重要で時間のかかる仕事である。モデラーがより⾃然と感じられるフォーマッ
トを使うことで、より効率的にデバッグや検証ができる。
3.5.3 Modification is made easier
モデルを⼀度構築した後に、データだけ修正して最適化し直したいことがある。データをモデルと分離す
ることで、効率的に⾏える。
63
3.5.4 Repetition is automated
⼤きなモデルは、⼩さなモデルの繰り返しや組み合わせによって⽣じる。例えば、4.1 節でも触れてい
る、複数の期間、プラント、製品を扱う場合など。
このようなモデルはデータや構造にたくさんの繰り返しを含むが、MPS 形式等ではこの繰り返しを効率
的に扱うことができず、エラーの元になる。
モデリング⾔語を⽤いることで、このような繰り返しを容易に扱うことができる。
64
3.5.5 Special purpose generators using a high level language
汎⽤⾔語で⾃前でモデルを構築すること。数理計画法のモデルに共通の構造を無視しているため、
あまり賢明ではない。
3.5.6 Matrix block building systems
現実の係数⾏列にありがちな構造を利⽤して、部分⾏列から⼤きな⾏列を⽣成するシステム。ユー
ザーが⾏列の構造を意識する必要があるが、その負担を下げてくれる。
3.5.7 Data structuring systems
フロー図などを使ってモデルを図的に作成できるシステム。
65
3.5.8 Mathematical languages
数学的な記法に近い形でモデルを記述できる⾔語。初等的な数学の訓練を受けている⼈であれば
誰でも理解できるため、学習コストが低い。
ここでは NEWMAGIC というモデリング⾔語を例に説明するが、多くのモデリング⾔語は似たような記
法なので、簡単に翻訳できるはず。
66
モデリング⾔語の要素
モデリング⾔語では、以下の要素を定義する必要がある。
3.5.8.1 SETs
3.5.8.2 DATA
3.5.8.3 VARIABLES
3.5.8.4 OBJECTIVE
3.5.8.5 CONSTRAINTS
67
3.5.8.1 SETs
変数やデータの添字となる集合。
A = {1..2}, B = {1..5},
T = {1.. max t}, I = {1..max i};
3.5.8.2 DATA
モデルの式で使⽤される係数。外部ファイルなどから読み込むことが多い。
DATA
cost[T, I] << "cost.dat",
hard[I] = [8,8,6.1,2.0,4.2,5.0];
68
3.5.8.3 VARIABLES
最適化の対象となる変数。
VARIABLES
b[I,T], u[I,T], s[I,T], Prod[T];
3.5.8.4 OBJECTIVE
最適化の⽬的関数。最⼩化するか最⼤化するかも指定する。
MAXIMIZE
prof = sum{t in T} (150 * Prod[t] - sum{i in I} (cost[t,i] * b[i, t] + 5 * s[i,t]));
69
3.5.8.5 CONSTRAINTS
制約式。集合の各要素に関して、繰り返し定義することもできる。
CONSTRAINTS
loil{i in I, 1}: 500 + b[i,1] - u[i,1] - s[i,1] = 0,
loil{i in I, t in T, t > 1}: s[i, t-1] + b[i,t] - u[i,t] - s[i,t] = 0,
...
70
参考)AMPL や PuLP での⽣産計画の定式化
set P;
param a {j in P};
param b;
param c {j in P};
param u {j in P};
var X {j in P};
maximize Total_Profit: sum {j in P} c[j] * X[j];
subject to Time: sum {j in P} (1/a[j]) * X[j] <= b;
subject to Limit {j in P}: 0 <= X[j] <= u[j];
P = ...
a = ...
b = ...
c = ...
u = ...
x = LpVariable.dicts("X", P, lowBound=0)
total_profit = lpSum(x[j] * c[j] for j in P)
model = LpProblem("Production planning", LpMaximize)
model.setObjective(total_profit)
model += lpSum(1 / a[j] * x[j] for j in P) <= b, "Time"
for j in P:
model += x[j] <= u[j], "Limit"
※実⾏して確かめてはいない。
71
参考⽂献
[Williams 2013] Williams, H. Paul. Model building in mathematical programming. John
Wiley & Sons, 2013.
[McDonald+ 1974] McDonald, A. G., G. C. Cuddeford, and E. M. L. Beale. "Balance of
care: some mathematical models of the National Health Service." British Medical
Bulletin 30.3 (1974): 262-270.
[Charnes+ 1978] Charnes, Abraham, William W. Cooper, and Edwardo Rhodes.
"Measuring the efficiency of decision making units." European journal of operational
research 2.6 (1978): 429-444.
72
[Dyson 1980] Dyson, Robert G. "Maximin programming, fuzzy linear programming and
multi-criteria decision making." Journal of the Operational Research Society 31.3 (1980):
263-267.
[Verdegay 1982] Verdegay, Jose. (1982). Fuzzy mathematical programming. Fuzzy Inf
and Decis Processes.
[Redpath&Wright 1981] Redpath, Anthony T. and Dennis H. Wright. “Optimization
procedures for computerised therapy planning.” Strahlentherapie. Sonderbande 77
(1981): 54-9 .
73
[Hooker&Williams 2012] Hooker, John N., and H. Paul Williams. "Combining equity and
utilitarianism in a mathematical programming model." Management Science 58.9
(2012): 1682-1693.
[Brearley+ 1975] Brearley, A. L., Gautam Mitra, and H. Paul Williams. "Analysis of
mathematical programming problems prior to applying the simplex algorithm."
Mathematical programming 8.1 (1975): 54-83.
[Beale+ 1974] Beale, E. M. L., G. C. Beare, and P. B. Tatham. "The DOAE reinforcement
and redeployment study: A case study in mathematical programming." Mathematical
programming in theory and practice. Elsevier, New York (1974): 417-442.
74

More Related Content

Similar to Model building in mathematical programming #2-3 輪読資料

Convex optimization
Convex optimization Convex optimization
Convex optimization
Simossyi Funabashi
 
1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題
京都大学大学院情報学研究科数理工学専攻
 
Deep learning basics described
Deep learning basics describedDeep learning basics described
Deep learning basics described
Naoki Watanabe
 
PRML輪読#3
PRML輪読#3PRML輪読#3
PRML輪読#3
matsuolab
 
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
Ryosuke Sasaki
 
第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization(移行済)
第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization(移行済)第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization(移行済)
第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization(移行済)
tomitomi3 tomitomi3
 
[読会]Logistic regression models for aggregated data
[読会]Logistic regression models for aggregated data[読会]Logistic regression models for aggregated data
[読会]Logistic regression models for aggregated data
shima o
 
統計的学習の基礎_3章
統計的学習の基礎_3章統計的学習の基礎_3章
統計的学習の基礎_3章
Shoichi Taguchi
 
論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)
Lintaro Ina
 
TokyoWebmining統計学部 第1回
TokyoWebmining統計学部 第1回TokyoWebmining統計学部 第1回
TokyoWebmining統計学部 第1回Issei Kurahashi
 
正則化つき線形モデル(「入門機械学習第6章」より)
正則化つき線形モデル(「入門機械学習第6章」より)正則化つき線形モデル(「入門機械学習第6章」より)
正則化つき線形モデル(「入門機械学習第6章」より)Eric Sartre
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムMiyoshi Yuya
 
PRML 3.5.2, 3.5.3, 3.6
PRML 3.5.2, 3.5.3, 3.6PRML 3.5.2, 3.5.3, 3.6
PRML 3.5.2, 3.5.3, 3.6
Kohei Tomita
 
データ解析3 最適化の復習
データ解析3 最適化の復習データ解析3 最適化の復習
データ解析3 最適化の復習
Hirotaka Hachiya
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011finalMikio Kubo
 
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
hirokazutanaka
 
一般化線形混合モデル isseing333
一般化線形混合モデル isseing333一般化線形混合モデル isseing333
一般化線形混合モデル isseing333Issei Kurahashi
 
深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習
Masahiro Suzuki
 
卒論プレゼンテーション -DRAFT-
卒論プレゼンテーション -DRAFT-卒論プレゼンテーション -DRAFT-
卒論プレゼンテーション -DRAFT-Tomoshige Nakamura
 

Similar to Model building in mathematical programming #2-3 輪読資料 (20)

Convex optimization
Convex optimization Convex optimization
Convex optimization
 
1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題
 
Deep learning basics described
Deep learning basics describedDeep learning basics described
Deep learning basics described
 
PRML輪読#3
PRML輪読#3PRML輪読#3
PRML輪読#3
 
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
 
第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization(移行済)
第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization(移行済)第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization(移行済)
第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization(移行済)
 
[読会]Logistic regression models for aggregated data
[読会]Logistic regression models for aggregated data[読会]Logistic regression models for aggregated data
[読会]Logistic regression models for aggregated data
 
統計的学習の基礎_3章
統計的学習の基礎_3章統計的学習の基礎_3章
統計的学習の基礎_3章
 
論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)
 
TokyoWebmining統計学部 第1回
TokyoWebmining統計学部 第1回TokyoWebmining統計学部 第1回
TokyoWebmining統計学部 第1回
 
正則化つき線形モデル(「入門機械学習第6章」より)
正則化つき線形モデル(「入門機械学習第6章」より)正則化つき線形モデル(「入門機械学習第6章」より)
正則化つき線形モデル(「入門機械学習第6章」より)
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズム
 
PRML 3.5.2, 3.5.3, 3.6
PRML 3.5.2, 3.5.3, 3.6PRML 3.5.2, 3.5.3, 3.6
PRML 3.5.2, 3.5.3, 3.6
 
Lp Boost
Lp BoostLp Boost
Lp Boost
 
データ解析3 最適化の復習
データ解析3 最適化の復習データ解析3 最適化の復習
データ解析3 最適化の復習
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011final
 
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
 
一般化線形混合モデル isseing333
一般化線形混合モデル isseing333一般化線形混合モデル isseing333
一般化線形混合モデル isseing333
 
深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習
 
卒論プレゼンテーション -DRAFT-
卒論プレゼンテーション -DRAFT-卒論プレゼンテーション -DRAFT-
卒論プレゼンテーション -DRAFT-
 

More from Yuya Takashina

Iterative Decomposition Guided Variable Neighborhood Search for Graphical Mod...
Iterative Decomposition Guided Variable Neighborhood Search for Graphical Mod...Iterative Decomposition Guided Variable Neighborhood Search for Graphical Mod...
Iterative Decomposition Guided Variable Neighborhood Search for Graphical Mod...
Yuya Takashina
 
Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定
Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定
Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定
Yuya Takashina
 
ネットワーク科学の応用について
ネットワーク科学の応用についてネットワーク科学の応用について
ネットワーク科学の応用について
Yuya Takashina
 
線形回帰と階層的クラスタリングの実装
線形回帰と階層的クラスタリングの実装線形回帰と階層的クラスタリングの実装
線形回帰と階層的クラスタリングの実装
Yuya Takashina
 
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知
Yuya Takashina
 
Short introduction to ML frameworks on Hadoop
Short introduction to ML frameworks on HadoopShort introduction to ML frameworks on Hadoop
Short introduction to ML frameworks on Hadoop
Yuya Takashina
 
数式を(ちょっとしか)使わずに隠れマルコフモデル
数式を(ちょっとしか)使わずに隠れマルコフモデル数式を(ちょっとしか)使わずに隠れマルコフモデル
数式を(ちょっとしか)使わずに隠れマルコフモデル
Yuya Takashina
 

More from Yuya Takashina (7)

Iterative Decomposition Guided Variable Neighborhood Search for Graphical Mod...
Iterative Decomposition Guided Variable Neighborhood Search for Graphical Mod...Iterative Decomposition Guided Variable Neighborhood Search for Graphical Mod...
Iterative Decomposition Guided Variable Neighborhood Search for Graphical Mod...
 
Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定
Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定
Estimating Mutual Information for Discrete‐Continuous Mixtures 離散・連続混合の相互情報量の推定
 
ネットワーク科学の応用について
ネットワーク科学の応用についてネットワーク科学の応用について
ネットワーク科学の応用について
 
線形回帰と階層的クラスタリングの実装
線形回帰と階層的クラスタリングの実装線形回帰と階層的クラスタリングの実装
線形回帰と階層的クラスタリングの実装
 
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知
 
Short introduction to ML frameworks on Hadoop
Short introduction to ML frameworks on HadoopShort introduction to ML frameworks on Hadoop
Short introduction to ML frameworks on Hadoop
 
数式を(ちょっとしか)使わずに隠れマルコフモデル
数式を(ちょっとしか)使わずに隠れマルコフモデル数式を(ちょっとしか)使わずに隠れマルコフモデル
数式を(ちょっとしか)使わずに隠れマルコフモデル
 

Model building in mathematical programming #2-3 輪読資料