線形計画法入門です.大学2年生の授業から線形計画法に関する部分のみを取り出しました.主に単体法(シンプレックス法)の手続きと双対問題の作り方について解説しています. 追記:少しだけ改定しました(2020/10/11)
線形計画法⼊⾨⼤阪⼤学 ⼤学院情報科学研究科梅⾕ 俊治2020年10⽉11⽇
View Slide
講演の概要• 線形計画問題の定式化• 線形計画ソルバーの利⽤法• 単体法とその実装• 双対問題と緩和問題2
線形計画問題• ⽬的関数が線形関数で,全ての制約条件が線形の等式もしくは不等式で表された最適化問題.• さまざまな形の線形計画問題を扱うのは⾯倒 → (不等式)標準形• ⽬的関数は 最⼤化,制約条件は 左辺 右辺,各変数は⾮負.• 全ての線形計画問題は標準形に変形できる.3
線形計画問題の例• ある飲料メーカーでは,トマト,にんじん,ほうれん草を原料とする野菜ジュースを製造している.• 野菜ジュースに含まれる⾷物繊維,ビタミンC,鉄分,βカロチンの必要量を満たしつつ,製造に要する原料費を最⼩に抑えるための各野菜の購⼊量は︖• トマト,にんじん,ほうれん草の購⼊量(kg)を とする.4⾷物繊維 ビタミンC 鉄分 βカロチン 価格(円/kg)トマト 10 15 2 5 400にんじん 25 5 2 80 250ほうれん草 30 35 20 40 1000必要量(単位/2L) 50 60 10 40→ 原料費を最⼩化→ ⾷物繊維は50単位以上→ ビタミンCは60単位以上→ 鉄分は10単位以上→ βカロチンは40単位以上→ 各野菜の購⼊量は⾮負
線形計画問題の例• ある飲料メーカーでは, 種類の野菜を原料とする野菜ジュースを製造している.野菜ジュースに含まれる 種類の栄養素の必要量を満たしつつ,製造に要する原料費を最⼩化するには,どの野菜をどれだけ購⼊すれば良いのだろうか︖5野菜 に含まれる栄養素 の量(定数)栄養素 の必要量(定数)野菜 の単位量当たりの値段(定数)野菜 の購⼊量を変数 とすると
線形計画問題の不等式標準形• ⽬的関数の値を最⼤化する.• 全ての変数に⾮負制約がつく.• ⾮負制約を除く全ての制約条件で左辺の値が右辺の値以下となる.6⾊々な表記が出てきますが全て同じ問題です
標準形への変形• どんな形の線形計画問題でも不等式標準形に変形できる.• 最⼩化ならば⽬的関数を-1倍する.• ⾮負制約なし変数 は,⾮負制約あり変数 に置き換える.• 等式制約を2つの不等式制約に置き換える.• 不等号が逆向きの制約条件ならば両辺を-1倍する.7⽬的関数の値の正負が反転することに注意
線形計画問題の等式標準形• ⽬的関数の値を最⼤化する.• 全ての変数に⾮負制約がつく.• ⾮負制約を除く全ての制約条件が等式.• どんな形の線形計画問題でも等式標準形に変形できる.• 不等式制約にスラック変数を加えて等式制約に変形する.8
輸送計画問題• ある企業ではある製品を ヶ所の⼯場から ヶ所の顧客に納⼊している.各⼯場の⽣産量を超えない範囲で各顧客の需要を満たすように製品を輸送したい.輸送費の合計を最⼩化するためには,どの⼯場からどの顧客にどれだけの量の製品を輸送すれば良いのだろうか︖9⼯場 の⽣産量(定数)顧客 の需要量(定数)⼯場 から顧客 への単位量当たりの輸送費(定数)⼯場 から顧客 への輸送量(変数)⼯場 顧客
⽇程計画問題• ある企業では 個の作業からなるプロジェクトに取り組んでいる.• 各作業の処理順序を表すネットワークが与えられ,各作業は先⾏する作業が全て完了しない限り始められない.• 各作業は費⽤を余分にかければある程度まで処理⽇数を短縮可能.• プロジェクト全体を ⽇以内で完了させた上で,費⽤の合計を最⼩化するためには,各作業の開始⽇と処理⽇数をどのように定めれば良いのだろうか︖10։࢝ ऴྃ
⽇程計画問題• プロジェクトの各作業の処理順序を表すネットワークを⽤いて⽇程計画を⽴案・管理する⼿法をPERT(Program Evaluation andReview Technique)と呼ぶ.11作業 の標準の処理⽇数(定数)作業 の費⽤(定数)作業 を1⽇短縮した際に⽣じる追加費⽤(定数)作業 の処理⽇数の下限(定数)作業 の実際の処理⽇数(変数)作業 の開始⽇(変数)作業 は作業 に先⾏
⽣産計画問題• ある⼯場では 種類の原料から 種類の製品を⽣産している.• 顧客の需要と⽣産費が期により変動するため,⼯場の⽣産と倉庫の在庫を組み合わせて顧客に製品を卸している.• ⽣産費と在庫費の合計を最⼩化するためには,どの期にどれだけの量の製品を⽣産し,倉庫の在庫で賄えば良いだろうか︖12需要1 2 3 T期 在庫⽣産
⽣産計画問題13製品 を1単位⽣産するのに必要な原料 の量(定数)各期 の原料 の供給量(定数)各期 の製品 の顧客の需要量(定数)各期 の製品 の単位量当たりの⽣産費(定数)各期 の製品 の単位量当たりの在庫費(定数)各期 の製品 の⽣産量(定数)各期 の製品 の在庫量(定数)
凸な⾮線形関数の近似• ⾮線形関数 を区分線形関数 で近似する.• 区分線形関数 が凸関数であれば,その最⼩化問題は等価な線形計画問題に変形できる*.14最⼩化*⾮凸関数であれば,その最⼩化問題は混合整数計画問題に変形できる.最⼤値を表すzを⽤いる
平均誤差の最⼩化• 全ての制約条件を満たせない連⽴1次⽅程式の平均誤差を最⼩化する.• 各制約条件 の誤差を とおけば線形計画問題に変形できる.15
回帰問題• 観測で得られた 個のデータ から⼊出⼒の関係を線形関数 で近似する.• 係数 の値を変数として求めるいわゆる回帰問題.• 次の多項式関数でも同様に近似できる.16誤差誤差を表す変数 を⽤いる
最悪誤差の最⼩化• 全ての制約条件を満たせない連⽴1次⽅程式の最悪誤差を最⼩化する.• 誤差の最⼤値を表す変数 を導⼊すると線形計画問題に変形できる.17
資源の公平な配分• 与えられた条件の下で限られた予算 を 個の事業にできるだけ公平に配分する.• 配分額の最⼩値を最⼤化する予算の配分を求める問題は線形計画問題に定式化できる.18事業 の配分額は 以上
多⽬的最適化• 複数の⽬的関数を同時に最⼩化したい場合には,これらの⽬的関数の最⼤値 を最⼩化する問題を考えると線形計画問題に変形できる.19⽬的関数値は 以下
⽐率の最⼩化• 2つの関数の⽐を⽬的関数に持つ最適化問題を分数計画問題と呼ぶ.• 2つの線形関数の⽐を⽬的関数に持つ分数計画問題は線形計画問題に変形できる.• ただし, とする.20
事業効率の評価• ある企業では 個の事業の経営効率を「収⼊/⽀出」(出⼒/⼊⼒)で評価している.• 各事業は複数の⼊⼒と出⼒を持つため,各⼊⼒と各出⼒に適当な重みを付けて⾜し合わせたものを仮想的な⼊⼒と仮想的な出⼒とみなす.• 全ての事業をお公平に評価するためには,各⼊⼒と各出⼒をどのように重み付けすれば良いのだろうか︖21ࣄۀ⼊⼒ 出⼒⼊⼒重み 出⼒重み
事業効率の評価• 複数の事業の相対的な効率を評価する⼿法を包絡分析法(Dataenvelopment analysis; DEA)と呼ぶ.• 全ての事業に対して同じ重み付けをするのではなく,それぞれの事業 の効率が最⼤となる重み付けをした上で,得られた「仮想的な出⼒/仮想的な⼊⼒」の値を⽐較する.• 事業 の効率を最⼤にする⼊⼒と出⼒の重みを求める問題は線形計画問題に変形できる.22事業 の 番⽬の⼊⼒値(定数)事業 の 番⽬の出⼒値(定数)いずれの事業も「⼊⼒/出⼒」が1以下となるよう重み付けする事業 の⼊⼒ に対する重み(変数)事業 の出⼒ に対する重み(変数)
事業効率の評価• として,新たな変数 を導⼊すると線形計画問題に変形できる.23
講演の概要• 線形計画問題の定式化• 線形計画ソルバーの利⽤法• 単体法とその実装• 双対問題と緩和問題24
線形計画ソルバーの利⽤法• lp_solve, GLPKなど数多くの⾮商⽤ソルバーが公開されている.• 多くの線形計画ソルバーはMPS形式とLP形式で記述された⼊⼒ファイルを読み込める.• その他にもAMPL,GAMSなどのモデリング⾔語も知られている.• 多くの商⽤ソルバーと⼀部の⾮商⽤ソルバーは,C, C++, Java,Matlab, Python, Excelなどのインターフェースを持つ.• Pulpなどサードパーティ製のインターフェースもある.25minimize3 x1 + 4 x2 + 2 x3subject toc1: 2 x1 <= 4c2: x1 + 2 x3 <= 8c3: 3 x2 + x3 <= 6end線形計画問題をLP形式で記述した例
線形計画ソルバーの利⽤法• LP形式は⽂法が平易で可読性が⾼く,多くの線形計画ソルバーが対応しているが,配列のように変数をまとめて扱う機能がない.• ⼤規模な問題例を扱いたい場合には,ü LP形式のファイルを出⼒するプログラムを作成→ 多くの線形計画ソルバーが使えるので保守性が⾼いü モデリング⾔語を利⽤→ プログラムを書くようにモデルを書ける→ 多くの線形計画ソルバーで使える標準的なモデリング⾔語がないü インターフェースを利⽤→ 線形計画ソルバーを繰返し呼出すなど⼩回りが利く→ インターフェースに依存するので保守性が低い26for(i = 0; i < 10; i++){printf("+ x%d ",i);}printf("<= 3¥n");+ x0 + x1 + x2 + ... + x9 <= 3sum(i in 0..9)(x[i]) <= 3
講演の概要• 線形計画問題の定式化• 線形計画ソルバーの利⽤法• 単体法とその実装• 双対問題と緩和問題27
実⾏不能・⾮有界な線形計画問題• 実⾏不能︓制約条件を満たす解(実⾏可能解)が存在しない.• ⾮有界︓実⾏可能解を持つが⽬的関数の値を無限に改善できる.28実⾏不可能な線形計画問題の例 ⾮有界な線形計画問題の例最⼤化⽬的関数値を∞にできるは⾮負なので解なし
線形計画問題を解く• 制約条件を 本,変数を 個とする.• 実⾏可能領域は 枚の超平⾯に囲まれる → 凸多⾯体• 枚の超平⾯が交差する頂点のいずれかに最適解がある*.29*実⾏可能領域が⾮有界ならば のように凸多⾯体が頂点を持たない場合もあるので注意する.࠷େԽᶃᶄᶅᶆᶇB CDEF→ ①→ ②→ ③→ ④→ ⑤調べる頂点の数が 個となり効率的ではない
単体法の概要• 凸多⾯体のある頂点(実⾏可能解)から出発し,⽬的関数の値が改善する隣接頂点への移動を繰返す.• 各頂点では 枚の超平⾯が交差しているので, 本の線形式からなる連⽴1次⽅程式を解けば対応する実⾏可能解が得られる*.30*単体法の実装では,連⽴1次⽅程式を⼀から解き直さなくても済むように⼯夫されている.࠷େԽ࠷େԽ
単体法の⼿続き• 与えられた線形計画問題を等式標準形に変形する.• 各変数 〜 が線形不等式①〜⑤に対応していることを確認する.31→ ①→ ②→ ③→ ④→ ⑤→ ①→ ②→ ③→ ④→ ⑤①②③④⑤と の値が0と の値が0制約条件を等号で満たす=対応する変数の値が0
単体法の⼿続き• 解が凸多⾯体の頂点にある ⇔ 対応する制約条件を等号で満たす⇔ 対応する変数の値が0を取る• 変数 個,制約条件 本だが,各変数の⾮負制約もあるので,実際の制約条件は 本ある.• 本の制約を選び*連⽴⽅程式を解くと,凸多⾯体の頂点に対応する実⾏可能解が得られる.32*実際は対応する変数の値を0に固定する.→ ①→ ②→ ③→ ④→ ⑤辞書形式と固定すると実⾏可能解が1つ求まる
単体法の⼿続き• 現在の頂点(実⾏可能解)に隣接する頂点を求めるには︖33は⾮負← x2=6まで増やせる← x2=4まで増やせる← x2=10まで増やせる← x1かx2を増加すると⽬的関数が改善しそうを代⼊して書き直すと(掃出し計算でもOK)連⽴⽅程式を解いている
単体法の⼿続き• 前ページの⼿続きを図で確認する.34①②③④⑤
単体法の⼿続き35①②③④⑤← x1=3まで増やせる← x1=12まで増やせる← x1=18/5まで増やせる← x1を増加すると⽬的関数が改善しそうを代⼊するもう改善できない︕
単体法の原理• 凸多⾯体の頂点(基底解)において,となる変数 → ⾮基底変数となる変数 → 基底変数• 実⾏可能基底解ある分割が与えられると36mmが正則ならば基底解が得られるならば実⾏可能n-m( とする)
単体法の原理実⾏可能基底解の最適性37シンプレックス乗数を⽬的関数に代⼊するとここで, とおくと線形計画問題は以下の通り書き換えられる.ここで, ならば は⾃明な最適解で最⼩値すなわち,この式によって実⾏可能基底解の最適性が判定できる.相対コスト係数もしくは被約費⽤単体法における辞書
単体法の原理単体法の⼿続き38最適基底解でなければ, となる⾮基底変数 が存在するを0から正の値に増加すると基底変数の値はここで, とすると, はまで増加できることが分かるこのとき,基底変数は と更新できる
初期実⾏可能解を求める(2段階単体法)• 線形計画問題を特には初期実⾏可能解が必要• ⾃明な実⾏可能解が分からない場合は︖ → 補助問題を作る• 補助問題︓⾃明な実⾏可能解を持つ線形計画問題→ 単体法を2回適⽤すると解ける(2段階法)39⾃明な実⾏可能解が分からない補助変数 x0を導⼊制約条件の違反度の最⼤値を最⼩化⽬的関数値 = 0 → 元の問題は実⾏可能⽬的関数値 > 0 → 元の問題は実⾏不能補助問題
初期実⾏可能解を求める(2段階単体法)40ᶃᶄᶅᶆᶇ実⾏可能解ではない違反度が最⼤になると を⼊れ替える最⼩化に注意
初期実⾏可能解を求める(2段階単体法)41ᶃᶄᶅᶆᶇ← x1=2まで増やせる← x1=3まで増やせる← x1=9/2まで増やせる← x1(x2)を増加すると⽬的関数が改善しそうと を⼊れ替える⽬的関数値が0に︕
初期実⾏可能解を求める(2段階単体法)42変数 の項を除き,⽬的関数 を⽬的関数 に置き換える
⾮有界な線形計画問題の判定• 線形計画問題が⾮有界かどうか単体法の⼿続きの中で判定できる.43࠷େԽᶃᶄᶅᶆ→ ①→ ②→ ③→ ④と を⼊れ替える← x2を増加すると⽬的関数が改善しそうx2をいくら増加してもx1もx4も負にならない︕
退化と巡回• 最⼤係数規則︓変数の値を1増加したときの⽬的関数の改善量が最⼤となる⾮基底変数 を常に選ぶ.• 値が0となる基底変数が現れる(退化)と単体法が同じ実⾏可能基底解に戻る巡回が⽣じて,無限ループに陥り最適解にたどり着けなくなることがある.• 最⼩添字規則(Blandの規則)︓添字 が最⼩となる基底変数を選ぶ.• 最⼩添字規則を⽤いると巡回を避けることができる.44࠷େԽᶃᶄᶅᶆ→ ①→ ②→ ③→ ④基底変数の値が0
内点法• 単体法︓実⾏可能領域の境界を通り最適解にたどり着く.ü 実⽤的には⾼速だが,理論的には最悪で指数時間かかる例も知られている.• 内点法︓実⾏可能領域の内部を通り最適解にたどり着く.ü 実⽤的に⾼速で,理論的にも最悪で多項式時間に抑えられる.• ⼤規模な問題例を1回だけ解くなら内点法が効率的.• ⼊⼒データを変更して解き直す際に,変更前の最適解を出発点として変更後の最適解を求める再最適化では単体法が効率的.45初期解最適解近道遠回り︖初期解最適解
講演の概要• 線形計画問題の定式化• 線形計画ソルバーの利⽤法• 単体法とその実装• 双対問題と緩和問題46
最適値の上界を求める• ⾮線形計画問題や整数計画問題など,簡単に最適解を求めることができない問題は多い.• 与えられた最適化問題の上界と下界を簡単に求める⽅法は︖→ 実⾏可能解から下界は求まる.では上界は︖47Լք࠷ద্ք ࣮ߦෆೳ࣮ߦՄೳ࠷େԽ実⾏可能領域 S最⼤化
線形計画問題の最適値の上界を求める• 制約条件の1次結合により最適値の上界を求めることができる.• 最適解は全ての制約条件を満たす.→ 1次結合で新たに作られた不等式も満たす.→ 左辺値が⽬的関数の値以上となる不等式を作る.48線形計画問題の最適値の上界
線形計画問題の双対問題• 線形計画問題の最適値の上界を求める⼀般的な⼿続きは︖• 制約条件の1次結合から上界を与える関数を求める.• 最適値により近い上界は︖ → 上界を与える関数を最⼩にする.49不等号の向きが逆になるとまずいので最⼩化20 10良く⾒慣れた問題に︖
線形計画問題の双対問題• 双対問題︓最適化問題の最⼩の上界(最⼤の下界)を求める問題.• 線形計画問題では問題D(双対問題)の双対問題は問題P(主問題).50最⼩化不等号の向きが逆になるとまずいので(P)(D)主問題双対問題
線形計画問題の双対問題• 線形計画問題の変数に⾮負制約がない場合は︖• 線形計画問題が等式標準形の場合は︖51最⼤化不等号の向きが逆になるとまずいのでが負の値を取ると不等号の向きが逆になる等号なので の正負は関係なし主問題双対問題等号なので の⾮負制約なし
緩和問題を⽤いて最適値の上界を求める• 最適解を求めることが難しい最適化問題に対するアプローチ.• 原問題を簡単な問題(緩和問題)に変形して上界を求める.52࠷େԽ(P) 主問題緩和問題(R)ただし,以下のR1,R2を満たす(R1)(R2)
線形計画問題のラグランジュ緩和• ラグランジュ緩和問題︓(⼀部の)制約条件を取り除く代わりに,それらのペナルティに重み係数をかけて⽬的関数に組み込む.53主問題 ラグランジュ緩和問題ラグランジュ緩和問題から線形計画問題の双対問題が導けるは各制約式の重み係数
ラグランジュ緩和から双対問題を導く• 最適値の良い上界を与えるラグランジュ緩和問題を作る.→ ペナルティ重み係数 に関する最適化問題を解く.54最⼩化の係数が正だと上界が∞(⾮有界)になる → 常に0以下この条件の下では緩和問題の最適解は常に双対問題のでき上がり︕
ラグランジュ緩和から双対問題を導く• 不等式標準形の線形計画問題から双対問題を導く.55(P)(D)主問題双対問題は各制約式の重み係数係数が正だと⾮有界になる → 常に0以下この条件の下では最適解は常に
ラグランジュ緩和から双対問題を導く• 等式標準形の線形計画問題から双対問題を導く.56(P)(D)主問題双対問題は各制約式の重み係数等式→2本の不等式に置換えに置き換える(⾮負制約がなくなる点に注意)
主問題と双対問題の関係57(P) 主問題* (D) 双対問題弱双対定理x, yを主問題(P)と双対問題(D)の実⾏可能解とすると実⾏可能(有界) 実⾏可能(有界)⾮有界 ⾮有界より明らか実⾏不能 実⾏不能主問題 双対問題主問題(P)が⾮有界ならば, より双対問題(D)は実⾏可能解を持たない(両⽅とも実⾏不能ということはある)*次ページの強双対定理の証明で単体法で得られた最適解を⽤いるため等式標準形にしています.
主問題と双対問題の関係58強双対定理主問題(P)が最適解を持つならば双対問題(D)も最適解を持ち2つの問題の最適値は⼀致する主問題(P)の最適基底解 を考えるここで, は最適なのでより となるここで, とおくと は双対問題(D)の実⾏可能解相補性条件強双対性が成り⽴つとここから, が⽰される
感度分析• 最適化問題は最適解を1回だけ求めればそれで終わりではない.• ⼊⼒データの変化にともなう最適解の変化を分析したい.59⽣産計画問題あるシャトーでは3種類のブドウ,カベルネ,メルロー,セミヨンを原料として,3種類のワイン,⾚ワイン,⽩ワイン,ロゼワインを製造している.収益が最⼤となる各ワインの1⽇当たりの製造量を求めよ.種類 ⾚ワイン ⽩ワイン ロゼワイン 供給量カベルネ a11a12a13b1メルロー a21a22a23b2セミヨン a31a32a33b3収益 p1p2p3
感度分析• 3種類のブドウ,カベルネ,メルロー,セミヨンの供給量b1,b2,b3を増やすとすると,どのブドウの供給量を増やすのが最もお得か︖60主問題 双対問題最適解 が得られたとすると⽬的関数値は供給量をそれぞれ増やしたときの最適値は︖最適解における双対変数の値は,各ブドウの潜在的な収益を表している(双対変数は「潜在価格」とも呼ばれる)
列⽣成法• 双対問題の最適解 は新たなワインの⽣産を検討する際にも役⽴つ.• 新たなワイン1tの⽣産に必要なブドウの量を ,ワイン1tの収益を pʼ, 購⼊量を xʼ とする.• 主問題に新たな変数 xʼ を追加することは,双対問題では新たな制約条件 を追加することに対応する.• となるワインならば⽣産することで収益が増加する.61主問題 双対問題࣮ߦՄೳྖҬ ࣮ߦՄೳྖҬ৽੍͍݅͠࠷ద͕૿Ճ
参考⽂献• H.P.Williams, Model Building in Mathematical Programming (5th ed.), John Wiley &Sons, Ltd., 2013.• 品野勇治,藤井浩⼀,使ってみよう線形計画ソルバー,オペレーションズ・リサーチ,64(2019), 238-245.• V. Chvatal, Linear Programming, W.H. Freeman and Company, 1983. (阪⽥省⼆郎,藤野和建,⽥⼝東(訳),線形計画法(上・下),啓学出版,1986)• 福島雅夫,数理計画⼊⾨(新版),朝倉書店,2011.• 久野誉⼈,繁野⿇⾐⼦,後藤順哉,数理最適化,オーム社,2012.• 加藤直樹,数理計画法,コロナ社,2007.• 久保幹雄,組合せ最適化とアルゴリズム,共⽴出版,2000.• 森雅夫,松井知⼰,オペレーションズ・リサーチ,朝倉書店,2004.• 寒野善博,⼟⾕隆,最適化と変分法,丸善出版,2014.• ⽥村明久,村松正和,最適化法,共⽴出版,2002.• 茨⽊俊秀,最適化の数学,共⽴出版,2011.• ⽮部博,最適化とその応⽤,数理⼯学社,2006.• ⼭下信雄,福嶋雅夫,数理計画法,コロナ社,2008.• 梅⾕ 俊治, 組合せ最適化⼊⾨︓線形計画から整数計画まで, ⾃然⾔語処理, 21 (2014), 1059-1090.• 梅⾕ 俊治,しっかり学ぶ数理最適化︓モデルからアルゴリズムまで,講談社,2020. 62