An introduction to Linear programming

D0167b760673d702a06427fb3f878696?s=47 Shunji Umetani
October 11, 2020

An introduction to Linear programming

線形計画法入門です.大学2年生の授業から線形計画法に関する部分のみを取り出しました.主に単体法(シンプレックス法)の手続きと双対問題の作り方について解説しています.
追記:少しだけ改定しました(2020/10/11)

D0167b760673d702a06427fb3f878696?s=128

Shunji Umetani

October 11, 2020
Tweet

Transcript

  1. 線形計画法⼊⾨ ⼤阪⼤学 ⼤学院情報科学研究科 梅⾕ 俊治 2020年10⽉11⽇

  2. 講演の概要 • 線形計画問題の定式化 • 線形計画ソルバーの利⽤法 • 単体法とその実装 • 双対問題と緩和問題 2

  3. 線形計画問題 • ⽬的関数が線形関数で,全ての制約条件が線形の等式もしくは不 等式で表された最適化問題. • さまざまな形の線形計画問題を扱うのは⾯倒 → (不等式)標準形 • ⽬的関数は

    最⼤化,制約条件は 左辺 右辺,各変数は⾮負. • 全ての線形計画問題は標準形に変形できる. 3
  4. 線形計画問題の例 • ある飲料メーカーでは,トマト,にんじん,ほうれん草を原料と する野菜ジュースを製造している. • 野菜ジュースに含まれる⾷物繊維,ビタミン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. 線形計画問題の例 • ある飲料メーカーでは, 種類の野菜を原料とする野菜ジュースを 製造している.野菜ジュースに含まれる 種類の栄養素の必要量 を満たしつつ,製造に要する原料費を最⼩化するには,どの野菜 をどれだけ購⼊すれば良いのだろうか︖ 5 野菜

    に含まれる栄養素 の量(定数) 栄養素 の必要量(定数) 野菜 の単位量当たりの値段(定数) 野菜 の購⼊量を変数 とすると
  6. 線形計画問題の不等式標準形 • ⽬的関数の値を最⼤化する. • 全ての変数に⾮負制約がつく. • ⾮負制約を除く全ての制約条件で左辺の値が右辺の値以下となる. 6 ⾊々な表記が出てきますが全て同じ問題です

  7. 標準形への変形 • どんな形の線形計画問題でも不等式標準形に変形できる. • 最⼩化ならば⽬的関数を-1倍する. • ⾮負制約なし変数 は,⾮負制約あり変数 に置き換える. •

    等式制約を2つの不等式制約に置き換える. • 不等号が逆向きの制約条件ならば両辺を-1倍する. 7 ⽬的関数の値の正負が 反転することに注意
  8. 線形計画問題の等式標準形 • ⽬的関数の値を最⼤化する. • 全ての変数に⾮負制約がつく. • ⾮負制約を除く全ての制約条件が等式. • どんな形の線形計画問題でも等式標準形に変形できる. •

    不等式制約にスラック変数を加えて等式制約に変形する. 8
  9. 輸送計画問題 • ある企業ではある製品を ヶ所の⼯場から ヶ所の顧客に納⼊し ている.各⼯場の⽣産量を超えない範囲で各顧客の需要を満たす ように製品を輸送したい.輸送費の合計を最⼩化するためには, どの⼯場からどの顧客にどれだけの量の製品を輸送すれば良いの だろうか︖ 9

    ⼯場 の⽣産量(定数) 顧客 の需要量(定数) ⼯場 から顧客 への単位量当たりの輸送費(定数) ⼯場 から顧客 への輸送量(変数) ⼯場 顧客
  10. ⽇程計画問題 • ある企業では 個の作業からなるプロジェクトに取り組んでいる. • 各作業の処理順序を表すネットワークが与えられ,各作業は先⾏ する作業が全て完了しない限り始められない. • 各作業は費⽤を余分にかければある程度まで処理⽇数を短縮可能. •

    プロジェクト全体を ⽇以内で完了させた上で,費⽤の合計を最 ⼩化するためには,各作業の開始⽇と処理⽇数をどのように定め れば良いのだろうか︖ 10 ։࢝ ऴྃ       
  11. ⽇程計画問題 • プロジェクトの各作業の処理順序を表すネットワークを⽤いて⽇ 程計画を⽴案・管理する⼿法をPERT(Program Evaluation and Review Technique)と呼ぶ. 11 作業

    の標準の処理⽇数(定数) 作業 の費⽤(定数) 作業 を1⽇短縮した際に⽣じる追加費⽤(定数) 作業 の処理⽇数の下限(定数) 作業 の実際の処理⽇数(変数) 作業 の開始⽇(変数) 作業 は作業 に先⾏
  12. ⽣産計画問題 • ある⼯場では 種類の原料から 種類の製品を⽣産している. • 顧客の需要と⽣産費が期により変動するため,⼯場の⽣産と倉庫 の在庫を組み合わせて顧客に製品を卸している. • ⽣産費と在庫費の合計を最⼩化するためには,どの期にどれだけ

    の量の製品を⽣産し,倉庫の在庫で賄えば良いだろうか︖ 12 需要 1 2 3 T 期 在庫 ⽣産
  13. ⽣産計画問題 13 製品 を1単位⽣産するのに必要な原料 の量(定数) 各期 の原料 の供給量(定数) 各期 の製品

    の顧客の需要量(定数) 各期 の製品 の単位量当たりの⽣産費(定数) 各期 の製品 の単位量当たりの在庫費(定数) 各期 の製品 の⽣産量(定数) 各期 の製品 の在庫量(定数)
  14. 凸な⾮線形関数の近似 • ⾮線形関数 を区分線形関数 で近似する. • 区分線形関数 が凸関数であれば,その最⼩化問題は等価な線 形計画問題に変形できる*. 14

    最 ⼩ 化 *⾮凸関数であれば,その最⼩化問題は混合整数計画問題に変形できる. 最⼤値を表す zを⽤いる
  15. 平均誤差の最⼩化 • 全ての制約条件を満たせない連⽴1次⽅程式の平均誤差を最⼩化する. • 各制約条件 の誤差を とおけば線形計画問題に変 形できる. 15

  16. 回帰問題 • 観測で得られた 個のデータ から⼊出⼒の関 係を線形関数 で近似する. • 係数 の値を変数として求めるいわゆる回帰問題.

    • 次の多項式関数でも同様に近似できる. 16 誤差 誤差を表す 変数 を⽤いる
  17. 最悪誤差の最⼩化 • 全ての制約条件を満たせない連⽴1次⽅程式の最悪誤差を最⼩化する. • 誤差の最⼤値を表す変数 を導⼊すると線形計画問題に変形できる. 17

  18. 資源の公平な配分 • 与えられた条件の下で限られた予算 を 個の事業にできるだけ 公平に配分する. • 配分額の最⼩値を最⼤化する予算の配分を求める問題は線形計画 問題に定式化できる. 18

    事業 の配分額は 以上
  19. 多⽬的最適化 • 複数の⽬的関数を同時に最⼩化したい場合には,これらの⽬的関数 の最⼤値 を最⼩化する問題を考えると線形計画問題に変形できる. 19 ⽬的関数値は 以下

  20. ⽐率の最⼩化 • 2つの関数の⽐を⽬的関数に持つ最適化問題を分数計画問題と呼ぶ. • 2つの線形関数の⽐を⽬的関数に持つ分数計画問題は線形計画問題に 変形できる. • ただし, とする. 20

  21. 事業効率の評価 • ある企業では 個の事業の経営効率を「収⼊/⽀出」(出⼒/⼊⼒) で評価している. • 各事業は複数の⼊⼒と出⼒を持つため,各⼊⼒と各出⼒に適当な 重みを付けて⾜し合わせたものを仮想的な⼊⼒と仮想的な出⼒と みなす. •

    全ての事業をお公平に評価するためには,各⼊⼒と各出⼒をどの ように重み付けすれば良いのだろうか︖ 21 ࣄۀ ⼊⼒ 出⼒ ⼊⼒重み 出⼒重み
  22. 事業効率の評価 • 複数の事業の相対的な効率を評価する⼿法を包絡分析法(Data envelopment analysis; DEA)と呼ぶ. • 全ての事業に対して同じ重み付けをするのではなく,それぞれの 事業 の効率が最⼤となる重み付けをした上で,得られた「仮想

    的な出⼒/仮想的な⼊⼒」の値を⽐較する. • 事業 の効率を最⼤にする⼊⼒と出⼒の重みを求める問題は線形 計画問題に変形できる. 22 事業 の 番⽬の⼊⼒値(定数) 事業 の 番⽬の出⼒値(定数) いずれの事業も「⼊⼒/出⼒」が 1以下となるよう重み付けする 事業 の⼊⼒ に対する重み(変数) 事業 の出⼒ に対する重み(変数)
  23. 事業効率の評価 • として,新たな変数 を導 ⼊すると線形計画問題に変形できる. 23

  24. 講演の概要 • 線形計画問題の定式化 • 線形計画ソルバーの利⽤法 • 単体法とその実装 • 双対問題と緩和問題 24

  25. 線形計画ソルバーの利⽤法 • lp_solve, GLPKなど数多くの⾮商⽤ソルバーが公開されている. • 多くの線形計画ソルバーはMPS形式とLP形式で記述された⼊⼒ ファイルを読み込める. • その他にもAMPL,GAMSなどのモデリング⾔語も知られている. •

    多くの商⽤ソルバーと⼀部の⾮商⽤ソルバーは,C, C++, Java, Matlab, Python, Excelなどのインターフェースを持つ. • Pulpなどサードパーティ製のインターフェースもある. 25 minimize 3 x1 + 4 x2 + 2 x3 subject to c1: 2 x1 <= 4 c2: x1 + 2 x3 <= 8 c3: 3 x2 + x3 <= 6 end 線形計画問題をLP形式で記述した例
  26. 線形計画ソルバーの利⽤法 • LP形式は⽂法が平易で可読性が⾼く,多くの線形計画ソルバーが 対応しているが,配列のように変数をまとめて扱う機能がない. • ⼤規模な問題例を扱いたい場合には, ü LP形式のファイルを出⼒するプログラムを作成 → 多くの線形計画ソルバーが使えるので保守性が⾼い

    ü モデリング⾔語を利⽤ → プログラムを書くようにモデルを書ける → 多くの線形計画ソルバーで使える標準的なモデリング⾔語がない ü インターフェースを利⽤ → 線形計画ソルバーを繰返し呼出すなど⼩回りが利く → インターフェースに依存するので保守性が低い 26 for(i = 0; i < 10; i++){ printf("+ x%d ",i); } printf("<= 3¥n"); + x0 + x1 + x2 + ... + x9 <= 3 sum(i in 0..9)(x[i]) <= 3
  27. 講演の概要 • 線形計画問題の定式化 • 線形計画ソルバーの利⽤法 • 単体法とその実装 • 双対問題と緩和問題 27

  28. 実⾏不能・⾮有界な線形計画問題 • 実⾏不能︓制約条件を満たす解(実⾏可能解)が存在しない. • ⾮有界︓実⾏可能解を持つが⽬的関数の値を無限に改善できる. 28 実⾏不可能な線形計画問題の例 ⾮有界な線形計画問題の例 最⼤化 ⽬的関数値を∞にできる

    は⾮負なので解なし
  29. 線形計画問題を解く • 制約条件を 本,変数を 個とする. • 実⾏可能領域は 枚の超平⾯に囲まれる → 凸多⾯体

    • 枚の超平⾯が交差する頂点のいずれかに最適解がある*. 29 *実⾏可能領域が⾮有界ならば のように凸多⾯体が頂点を持たない 場合もあるので注意する. ࠷େԽ ᶃ ᶄ ᶅ ᶆ ᶇ B C D E F → ① → ② → ③ → ④ → ⑤ 調べる頂点の数が 個となり効率的ではない
  30. 単体法の概要 • 凸多⾯体のある頂点(実⾏可能解)から出発し,⽬的関数の値が改 善する隣接頂点への移動を繰返す. • 各頂点では 枚の超平⾯が交差しているので, 本の線形式からな る連⽴1次⽅程式を解けば対応する実⾏可能解が得られる*. 30

    *単体法の実装では,連⽴1次⽅程式を⼀から解き直さなくても済むように⼯夫されている. ࠷େԽ ࠷େԽ
  31. 単体法の⼿続き • 与えられた線形計画問題を等式標準形に変形する. • 各変数 〜 が線形不等式①〜⑤に対応していることを確認する. 31 → ①

    → ② → ③ → ④ → ⑤ → ① → ② → ③ → ④ → ⑤ ① ② ③ ④ ⑤ と の値が0 と の値が0 制約条件を等号で満たす =対応する変数の値が0
  32. 単体法の⼿続き • 解が凸多⾯体の頂点にある ⇔ 対応する制約条件を等号で満たす ⇔ 対応する変数の値が0を取る • 変数 個,制約条件

    本だが,各変数の⾮負制約もあるので,実 際の制約条件は 本ある. • 本の制約を選び*連⽴⽅程式を解くと,凸多⾯体の頂点に対応す る実⾏可能解が得られる. 32 *実際は対応する変数の値を0に固定する. → ① → ② → ③ → ④ → ⑤ 辞書形式 と固定すると 実⾏可能解が1つ求まる
  33. 単体法の⼿続き • 現在の頂点(実⾏可能解)に隣接する頂点を求めるには︖ 33 は⾮負 ← x2 =6まで増やせる ← x2

    =4まで増やせる ← x2 =10まで増やせる ← x1 かx2 を増加すると⽬的関数が改善しそう を代⼊して書き直すと (掃出し計算でもOK) 連⽴⽅程式を解いている
  34. 単体法の⼿続き • 前ページの⼿続きを図で確認する. 34 ① ② ③ ④ ⑤

  35. 単体法の⼿続き 35 ① ② ③ ④ ⑤ ← x1 =3まで増やせる

    ← x1 =12まで増やせる ← x1 =18/5まで増やせる ← x1 を増加すると⽬的関数が改善しそう を代⼊する もう改善できない︕
  36. 単体法の原理 • 凸多⾯体の頂点(基底解)において, となる変数 → ⾮基底変数 となる変数 → 基底変数 •

    実⾏可能基底解 ある分割 が与えられると 36 m m が正則ならば基底解 が得られる ならば実⾏可能 n-m ( とする)
  37. 単体法の原理 実⾏可能基底解の最適性 37 シンプレックス乗数 を⽬的関数に代⼊すると ここで, とおくと線形計画問題は以下の通り書き換えられる. ここで, ならば は⾃明な最適解で

    最⼩値 すなわち,この式によって実⾏可能基底解の最適性が判定できる. 相対コスト係数もしくは被約費⽤ 単体法における辞書
  38. 単体法の原理 単体法の⼿続き 38 最適基底解でなければ, となる⾮基底変数 が存在する を0から正の値に増加すると基底変数の値は ここで, とすると, は

    まで増加できることが分かる このとき,基底変数は と更新できる
  39. 初期実⾏可能解を求める(2段階単体法) • 線形計画問題を特には初期実⾏可能解が必要 • ⾃明な実⾏可能解が分からない場合は︖ → 補助問題を作る • 補助問題︓⾃明な実⾏可能解を持つ線形計画問題 →

    単体法を2回適⽤すると解ける(2段階法) 39 ⾃明な実⾏可能解が分からない 補助変数 x0 を導⼊ 制約条件の違反度の最⼤値を最⼩化 ⽬的関数値 = 0 → 元の問題は実⾏可能 ⽬的関数値 > 0 → 元の問題は実⾏不能 補助問題
  40. 初期実⾏可能解を求める(2段階単体法) 40 ᶃ ᶄ ᶅ ᶆ ᶇ 実⾏可能解ではない 違反度が最⼤になる と

    を⼊れ替える 最⼩化に注意
  41. 初期実⾏可能解を求める(2段階単体法) 41 ᶃ ᶄ ᶅ ᶆ ᶇ ← x1 =2まで増やせる

    ← x1 =3まで増やせる ← x1 =9/2まで増やせる ← x1 (x2 )を増加すると⽬的関数が改善しそう と を⼊れ替える ⽬的関数値が0に︕
  42. 初期実⾏可能解を求める(2段階単体法) 42 変数 の項を除き,⽬的関数 を ⽬的関数 に置き換える

  43. ⾮有界な線形計画問題の判定 • 線形計画問題が⾮有界かどうか単体法の⼿続きの中で判定できる. 43 ࠷େԽ ᶃ ᶄ ᶅ ᶆ →

    ① → ② → ③ → ④ と を⼊れ替える ← x2 を増加すると⽬的関数が改善しそう x2 をいくら増加してもx1 もx4 も負にならない︕
  44. 退化と巡回 • 最⼤係数規則︓変数の値を1増加したときの⽬的関数の改善量が最 ⼤となる⾮基底変数 を常に選ぶ. • 値が0となる基底変数が現れる(退化)と単体法が同じ実⾏可能基底 解に戻る巡回が⽣じて,無限ループに陥り最適解にたどり着けなく なることがある. •

    最⼩添字規則(Blandの規則)︓添字 が最⼩となる基底変数を選ぶ. • 最⼩添字規則を⽤いると巡回を避けることができる. 44 ࠷େԽ ᶃ ᶄ ᶅ ᶆ → ① → ② → ③ → ④ 基底変数の値が0
  45. 内点法 • 単体法︓実⾏可能領域の境界を通り最適解にたどり着く. ü 実⽤的には⾼速だが,理論的には最悪で指数時間かかる例も知られ ている. • 内点法︓実⾏可能領域の内部を通り最適解にたどり着く. ü 実⽤的に⾼速で,理論的にも最悪で多項式時間に抑えられる.

    • ⼤規模な問題例を1回だけ解くなら内点法が効率的. • ⼊⼒データを変更して解き直す際に,変更前の最適解を出発点と して変更後の最適解を求める再最適化では単体法が効率的. 45 初期解 最適解 近道 遠回り︖ 初期解 最適解
  46. 講演の概要 • 線形計画問題の定式化 • 線形計画ソルバーの利⽤法 • 単体法とその実装 • 双対問題と緩和問題 46

  47. 最適値の上界を求める • ⾮線形計画問題や整数計画問題など,簡単に最適解を求めること ができない問題は多い. • 与えられた最適化問題の上界と下界を簡単に求める⽅法は︖ → 実⾏可能解から下界は求まる.では上界は︖ 47 Լք

    ࠷ద஋ ্ք ࣮ߦෆೳ ࣮ߦՄೳ ࠷ େ Խ 実⾏可能領域 S 最 ⼤ 化
  48. 線形計画問題の最適値の上界を求める • 制約条件の1次結合により最適値の上界を求めることができる. • 最適解は全ての制約条件を満たす. → 1次結合で新たに作られた不等式も満たす. → 左辺値が⽬的関数の値以上となる不等式を作る. 48

    線形計画問題の最適値の上界
  49. 線形計画問題の双対問題 • 線形計画問題の最適値の上界を求める⼀般的な⼿続きは︖ • 制約条件の1次結合から上界を与える関数を求める. • 最適値により近い上界は︖ → 上界を与える関数を最⼩にする. 49

    不等号の向きが逆になると まずいので 最⼩化 20 10 良く⾒慣れた問題に︖
  50. 線形計画問題の双対問題 • 双対問題︓最適化問題の最⼩の上界(最⼤の下界)を求める問題. • 線形計画問題では問題D(双対問題)の双対問題は問題P(主問題). 50 最⼩化 不等号の向きが逆になると まずいので (P)

    (D) 主問題 双対問題
  51. 線形計画問題の双対問題 • 線形計画問題の変数に⾮負制約がない場合は︖ • 線形計画問題が等式標準形の場合は︖ 51 最⼤化 不等号の向きが逆になると まずいので が負の値を取ると不等号

    の向きが逆になる 等号なので の正負は関係 なし 主問題 双対問題 等号なので の⾮負制約なし
  52. 緩和問題を⽤いて最適値の上界を求める • 最適解を求めることが難しい最適化問題に対するアプローチ. • 原問題を簡単な問題(緩和問題)に変形して上界を求める. 52 ࠷ େ Խ (P)

    主問題 緩和問題 (R) ただし,以下のR1,R2を満たす (R1) (R2)
  53. 線形計画問題のラグランジュ緩和 • ラグランジュ緩和問題︓(⼀部の)制約条件を取り除く代わりに, それらのペナルティに重み係数をかけて⽬的関数に組み込む. 53 主問題 ラグランジュ緩和問題 ラグランジュ緩和問題から線形計画問題の双対問題が導ける は各制約式の重み係数

  54. ラグランジュ緩和から双対問題を導く • 最適値の良い上界を与えるラグランジュ緩和問題を作る. → ペナルティ重み係数 に関する最適化問題を解く. 54 最⼩化 の係数が正だと上界が∞(⾮有界)になる →

    常に0以下 この条件の下では緩和問題の最適解は常に 双対問題のでき上がり︕
  55. ラグランジュ緩和から双対問題を導く • 不等式標準形の線形計画問題から双対問題を導く. 55 (P) (D) 主問題 双対問題 は各制約式の重み係数 係数が正だと⾮有界になる

    → 常に0以下 この条件の下では最適解は常に
  56. ラグランジュ緩和から双対問題を導く • 等式標準形の線形計画問題から双対問題を導く. 56 (P) (D) 主問題 双対問題 は各制約式の重み係数 等式→2本の不等式に置換え

    に置き換える (⾮負制約がなくなる点に注意)
  57. 主問題と双対問題の関係 57 (P) 主問題 (D) 双対問題 弱双対定理 x, yを主問題(P)と双対問題(D)の実⾏可能解とすると 実⾏可能(有界)

    実⾏可能(有界) ⾮有界 ⾮有界 より明らか 実⾏不能 実⾏不能 主問題 双対問題 主問題(P)が⾮有界ならば, より双対問題(D)は 実⾏可能解を持たない(両⽅とも実⾏不能ということはある)
  58. 主問題と双対問題の関係 58 強双対定理 主問題(P)が最適解を持つならば双対問題(D)も最適解を持ち 2つの問題の最適値は⼀致する 主問題(P)の最適基底解 を考える ここで, は最適なので より

    となる ここで, とおくと は双対問題(D)の実⾏可能解 相補性条件 強双対性が成り⽴つと ここから, が⽰される
  59. 感度分析 • 最適化問題は最適解を1回だけ求めればそれで終わりではない. • ⼊⼒データの変化にともなう最適解の変化を分析したい. 59 ⽣産計画問題 あるシャトーでは3種類のブドウ,カベルネ,メルロー,セミヨンを原料 として,3種類のワイン,⾚ワイン,⽩ワイン,ロゼワインを製造してい る.収益が最⼤となる各ワインの1⽇当たりの製造量を求めよ.

    種類 ⾚ワイン ⽩ワイン ロゼワイン 供給量 カベルネ a11 a12 a13 b1 メルロー a21 a22 a23 b2 セミヨン a31 a32 a33 b3 収益 p1 p2 p3
  60. 感度分析 • 3種類のブドウ,カベルネ,メルロー,セミヨンの供給量b1 ,b2 ,b3 を 増やすとすると,どのブドウの供給量を増やすのが最もお得か︖ 60 主問題 双対問題

    最適解 が得られたとすると ⽬的関数値は 供給量をそれぞれ 増やしたときの最適値は︖ 最適解における双対変数の値は,各ブドウの潜在的な収益を表している (双対変数は「潜在価格」とも呼ばれる)
  61. 列⽣成法 • 双対問題の最適解 は新たなワインの⽣産を検討する際にも役⽴つ. • 新たなワイン1tの⽣産に必要なブドウの量を ,ワイン1tの 収益を pʼ, 購⼊量を

    xʼ とする. • 主問題に新たな変数 xʼ を追加することは,双対問題では新たな制約 条件 を追加することに対応する. • となるワインならば⽣産することで収益が増加する. 61 主問題 双対問題 ࣮ߦՄೳྖҬ ࣮ߦՄೳྖҬ ৽੍͍͠໿৚݅ ࠷ద஋͕૿Ճ
  62. 参考⽂献 • 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