Movatterモバイル変換


[0]ホーム

URL:


Uploaded bySaitoTsutomu
PPTX, PDF30,904 views

組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015

https://pycon.jp/2015/ja/schedule/presentation/44/

Embed presentation

Downloaded 158 times
組合せ最適化を体系的に知ってPythonで実行してみよう斉藤努PyCon 2015 10/10
PyCon JP 2015 10/10Agenda• はじめに• 定式化• 体系• 実行例• 事例• まとめ2
PyCon JP 2015 10/10はじめに(自己紹介)• 名前:斉藤努• 仕事:組合せ最適化を使った開発など• 言語:Python、C#• 書籍:「組合せ最適化」10/22 出版記念セミナーをします「最適化出版セミナー」で検索!3
PyCon JP 2015 10/10はじめに(今日の目的)• 組合せ最適化を使えるようになること– 体系を知ること– 実装を知ること– 事例を知ること4
PyCon JP 2015 10/10はじめに(身近にある組合せ最適化)• 最適なやり方はどうすればよい?– 全パターンを調べると組合せ数が爆発!5先日、あなたが実家に帰ると、お土産に野菜を持って帰るよう言われました。東京の野菜は高いので、「儲かった」と喜びましたが、量が多すぎます。せいぜい5kg しか持って帰れないとします。(宅配便は使えないことにしてください)また、野菜は切ったりすると傷むので、そのまま持って帰ることにします。100円150g
PyCon JP 2015 10/10はじめに(数理最適化)• 数理最適化によるアプローチ– 数理モデル(数式による表現)6最大化𝑖𝑝𝑖 𝑥𝑖 𝑝𝑖:販売価格𝑖 𝑤𝑖 𝑥𝑖 ≤ 5 𝑤𝑖:重さ∀𝑥𝑖 ∈ 0, 1 𝑥𝑖:持って帰るかどうか
PyCon JP 2015 10/10はじめに(数理最適化)• 数理最適化– 連続最適化– 組合せ最適化 ← 今日のテーマ7
PyCon JP 2015 10/10定式化• 組合せ最適化では、数理モデルを定式化します• 定式化に必要なのは3つの要素↓1. 何を決めたいのか?「持って帰る野菜を決めたい」2. どうなるとうれしいのか?「持って帰る野菜の販売価格の合計が高くなるとうれしい」3. 守らないといけないことは?「持って帰る野菜を5kg 以下にします」8
PyCon JP 2015 10/10定式化• 3つの要素を、変数、目的関数、制約条件といいます91. 変数 ∀𝑥𝑖 ∈ 0, 12. 目的関数𝑖𝑝𝑖 𝑥𝑖 → 最大化3. 制約条件 𝑖 𝑤𝑖 𝑥𝑖 ≤ 5
PyCon JP 2015 10/10定式化• 定式化には、数学的な考え方と慣れが必要– 体系を知ることにより• 全体的な理解がしやすくなります– 実装を知ることにより• 理解を深めることができます– 数理モデルは、Pythonで記述できます– 事例を知ることにより• 考え方に慣れます10
PyCon JP 2015 10/10定式化(ソルバー)• 定式化された数理モデルは、ソルバー(外部実行モジュール)を利用して解くことができます。• ソルバーは、無料や有料でいろいろあります。• ソルバーの性能が飛躍的に向上!11問題数理モデルソルバー 解定式化実行出力入力
PyCon JP 2015 10/10体系• 上手に使うには、体系的にとらえることが重要• 体系的にとらえるために、問題を分類します• 「標準問題」による分類• 「数理問題」による分類121つの問題を2面的にとらえる
PyCon JP 2015 10/10体系(標準問題)• 標準問題とは、よくある問題に名前を付けたもの• 例えば、先ほどの例は、ナップサック問題とよばれます13容量 C のナップサックが一つと、n 種類の品物(各々、価値 pi, 容積ci)が与えられたとき、ナップサックの容量 C を超えない範囲でいくつかの品物をナップサックに詰め、ナップサックに入れた品物の価値の和を最大化するにはどの品物を選べばよいか … wikipediaよりナップサック問題
PyCon JP 2015 10/10体系(標準問題)1. 最小全域木問題2. 最大安定集合問題3. 最大カット問題4. 最小頂点被覆問題5. 最短路問題6. 最大流問題7. 最小費用流問題8. 運搬経路問題9. 巡回セールスマン問題10. 集合被覆問題11. 集合分割問題12. ジョブショップ問題13. 勤務スケジューリング問題14. ナップサック問題15. ビンパッキング問題16. n次元詰込み問題17. 施設配置問題18. 容量制約なし施設配置問題19. 2次割当問題20. 一般化割当問題21. 最大マッチング問題22. 重みマッチング問題23. 安定マッチング問題14実務でよくでてくる問題を23個厳選「組合せ最適化 標準問題」で検索!
PyCon JP 2015 10/10体系(標準問題クラス)1. 最小全域木問題2. 最大安定集合問題3. 最大カット問題4. 最小頂点被覆問題5. 最短路問題6. 最大流問題7. 最小費用流問題8. 運搬経路問題9. 巡回セールスマン問題10. 集合被覆問題11. 集合分割問題12. ジョブショップ問題13. 勤務スケジューリング問題14. ナップサック問題15. ビンパッキング問題16. n次元詰込み問題17. 施設配置問題18. 容量制約なし施設配置問題19. 2次割当問題20. 一般化割当問題21. 最大マッチング問題22. 重みマッチング問題23. 安定マッチング問題15標準問題クラス:標準問題のグループグラフ・ネットワーク問題経路問題集合被覆・分割問題スケジューリング問題切出し・詰込み問題配置問題割当・マッチング問題
PyCon JP 2015 10/10体系(数理問題)• 単目的か多目的か• 連続か離散か• 線形か非線形か• 制約つきか制約なしか• 凸か非凸か• 微分可能かどうか• 確率的かどうか• …• → 研究者によって多くの分類があります16
PyCon JP 2015 10/10体系(数理問題)• 最初は、ざっくり3分類を覚えましょう17超難しい難しいやさしい(NLP)(MIP)(LP)
PyCon JP 2015 10/10体系(標準問題と数理問題の関係)18系統樹
PyCon JP 2015 10/10体系(標準問題と数理問題の関係)• 1つの課題をいろいろな問題としてとらえることができます。– 混合整数最適化問題(0-1変数で割当を表現)– 集合被覆問題(候補を列挙して選ぶ)– 最大マッチング問題(割当をマッチングと見る)19
PyCon JP 2015 10/10体系(標準問題と数理問題の関係)• 標準問題 → 専用ソルバー• 数理問題 → 汎用ソルバー• 一般的には、標準問題の方が効率よく解ける可能性があります。• 標準問題では、とらえきれない場合→ 数理問題としてとらえます。20
PyCon JP 2015 10/10実行例(ソフトウェアのインストール)• Anaconda– Pythonおよび科学技術用各種パッケージを統合したディストリビューション– 利用したいバージョンのインストーラーを実行します。• pip install pulp– 数理問題用のモデラーおよびソルバー。• pip install ortoolpy– 標準問題用。最低限の機能のものや効率の悪いものも含まれています。(仕事では未使用)21
PyCon JP 2015 10/10実行例(ナップサック問題 - 標準問題)• 選択された荷物の価値の総和(105)と選択した荷物の順番([0, 1, 3, 4, 5])が得られます。22ナップサックに、いくつかの荷物を詰込みます。詰込む荷物の容量(size)の和がナップサックの容量(capacity) を超えないように、荷物の価値(weight) の和を最大にします。from ortoolpy import knapsacksize = [21, 11, 15, 9, 34, 25, 41, 52]weight = [22, 12, 16, 10, 35, 26, 42, 53]capacity = 100knapsack(size, weight, capacity)>>>(105, [0, 1, 3, 4, 5])
PyCon JP 2015 10/10実行例(最短路問題 - 標準問題)• 8 個の点からなるランダムなグラフを作成し、ノード0 からノード2 への最短路となるノードのリスト([0, 1, 6, 3, 5, 2]) が得られます。23グラフにおいて、始点から終点までの経路の中で最も短い経路を探します。import networkx as nxg = nx.fast_gnp_random_graph(8, 0.26, 1)nx.dijkstra_path(g, source=0, target=2)>>>[0, 1, 6, 3, 5, 2]
PyCon JP 2015 10/10実行例(ナップサック問題 - 数理問題)24ナップサックに、いくつかの荷物を詰込みます。詰込む荷物の容量(size)の和がナップサックの容量(capacity) を超えないように、荷物の価値(weight) の和を最大にします。from pulp import *size = [21, 11, 15, 9, 34, 25, 41, 52]weight = [22, 12, 16, 10, 35, 26, 42, 53]capacity = 100r = range(len(size))m = LpProblem(sense=LpMaximize) # 数理モデルx = [LpVariable('x%d'%i, cat=LpBinary) for i in r] # 変数m += lpDot(weight, x) # 目的関数m += lpDot(size, x) <= capacity # 制約条件m.solve()print((value(m.objective), [i for i in r if value(x[i]) > 0.5]))>>>(105.0, [0, 1, 3, 4, 5])再掲定式化とほぼ対応
PyCon JP 2015 10/10事例 1(データベースの最適配置)• 背景– コールセンターでは、全国から多くの問い合わせが来ます。問い合わせに答えるため個人データがデータベースに格納されています。個人データは、地方ごとにまとめますが、保存先のストレージは、複数あります。• 問題– 個人データの保存するストレージ先を選択します。そのときに、ストレージごとのアクセスが平準化されるようにします。25標準問題 数理問題 アルゴリズム一般化割当問題 NLP 局所探索法
PyCon JP 2015 10/10事例 2(店舗シフトスケジューリング)• 背景– 全国の店舗では、店長が毎月末に翌月の社員の勤務スケジュールを作成しています。様々な制約があるため、作成には時間がかかっています。• 問題– 各店舗ごとに、社員の勤務スケジュールを作成します。勤務スケジュールでは、社員ごと日ごとのシフトを決定します。シフトは、日勤、休み、早番、遅番などがあります。制約としては、各社員の休みの希望や各日ごとの最低シフト数やシフトの禁止パターンなどがあります。26標準問題 数理問題 アルゴリズム勤務スケジューリング問題 MIP 分枝限定法
PyCon JP 2015 10/10事例 3(ビークル間連携配送最適化)• 背景– 物資の保管所から避難場所に物資を運びたい。輸送手段は、陸海空全て使うことができます。また、フェリーなどの定期便も利用できます。• 問題– 品物、輸送元、輸送先、数量、輸送期限からなる配送オーダーを満たす配送計画を求めます。配送計画では、いつ、何を、どうやって運ぶかを決めます。オーダーは1 回で運んでもよいし、複数の輸送手段で連携して運んでもよいです。27標準問題 数理問題 アルゴリズム運搬経路問題 MIP 貪欲法
PyCon JP 2015 10/10事例 4(航空貨物の最適積み付け)• 背景– 航空貨物のほとんどは、パレット上にパッキングして、航空機内の形状に合わせて詰め込んでいます。• 問題– 様々な大きさの貨物をパレット上に効率よく詰め込む方法を求めます。一番下に置かないといけないとか上に積んではいけないとか様々な制約があります。28標準問題 数理問題 アルゴリズム3次元詰込み問題 MIP 貪欲法
PyCon JP 2015 10/10事例 5(バスの最適仕業作成)• 背景– バスのダイヤを組合わせて仕業(系統や路線)を作成します。1つの仕業は1人のドライバーが対応します。労働基準法も満足しなければいけません。• 問題– バスのドライバーの人数を最小になる仕業を作成します29標準問題 数理問題 アルゴリズムマッチング問題 MIP エドモンズ法
PyCon JP 2015 10/10事例 6(空箱の輸送コスト最適化)• 背景– 物を箱に入れて輸送しているときに、需要地と供給地に偏りがあると、空箱が需要地に溜まっていきます。この空箱を供給地に戻さないといけません。コンテナやパレットやレンタカーなど、いろいろな分野で見られます。• 問題– グラフ上において、複数の需要点と複数の供給点があります。需要点から供給点へ、費用を最小にするフロー(流量) を求めます。30標準問題 数理問題 アルゴリズム最小費用流問題 LP 負閉路除去法
PyCon JP 2015 10/10まとめ• 標準問題と数理問題による俯瞰で体系を理解• Pythonにより簡潔に実行→ 組合せ最適化が使える!「組合せ最適化を使おう」で検索!31

Recommended

PDF
最適化超入門
PDF
全力解説!Transformer
PDF
cvpaper.challenge 研究効率化 Tips
PPTX
劣モジュラ最適化と機械学習1章
PPTX
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PPTX
カルマンフィルタ入門
PDF
PRML学習者から入る深層生成モデル入門
PPTX
[DL輪読会]Pay Attention to MLPs(gMLP)
PDF
最適輸送の解き方
PDF
【メタサーベイ】基盤モデル / Foundation Models
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
PDF
機械学習による統計的実験計画(ベイズ最適化を中心に)
PDF
線形計画法入門
PDF
自己教師学習(Self-Supervised Learning)
PDF
BlackBox モデルの説明性・解釈性技術の実装
PPTX
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
 
PPTX
深層学習の数理
PPTX
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
PDF
レコメンドエンジン作成コンテストの勝ち方
PPTX
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
PPTX
ようやく分かった!最尤推定とベイズ推定
PPTX
Triplet Loss 徹底解説
PPTX
変分ベイズ法の説明
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
PDF
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
 
PPTX
[DL輪読会]逆強化学習とGANs
PDF
Statistical Semantic入門 ~分布仮説からword2vecまで~
PPTX
【DL輪読会】Scaling Laws for Neural Language Models
PPT
Gurobi python
PDF
数式をnumpyに落としこむコツ

More Related Content

PDF
最適化超入門
PDF
全力解説!Transformer
PDF
cvpaper.challenge 研究効率化 Tips
PPTX
劣モジュラ最適化と機械学習1章
PPTX
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PPTX
カルマンフィルタ入門
PDF
PRML学習者から入る深層生成モデル入門
PPTX
[DL輪読会]Pay Attention to MLPs(gMLP)
最適化超入門
全力解説!Transformer
cvpaper.challenge 研究効率化 Tips
劣モジュラ最適化と機械学習1章
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
カルマンフィルタ入門
PRML学習者から入る深層生成モデル入門
[DL輪読会]Pay Attention to MLPs(gMLP)

What's hot

PDF
最適輸送の解き方
PDF
【メタサーベイ】基盤モデル / Foundation Models
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
PDF
機械学習による統計的実験計画(ベイズ最適化を中心に)
PDF
線形計画法入門
PDF
自己教師学習(Self-Supervised Learning)
PDF
BlackBox モデルの説明性・解釈性技術の実装
PPTX
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
 
PPTX
深層学習の数理
PPTX
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
PDF
レコメンドエンジン作成コンテストの勝ち方
PPTX
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
PPTX
ようやく分かった!最尤推定とベイズ推定
PPTX
Triplet Loss 徹底解説
PPTX
変分ベイズ法の説明
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
PDF
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
 
PPTX
[DL輪読会]逆強化学習とGANs
PDF
Statistical Semantic入門 ~分布仮説からword2vecまで~
PPTX
【DL輪読会】Scaling Laws for Neural Language Models
最適輸送の解き方
【メタサーベイ】基盤モデル / Foundation Models
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
機械学習による統計的実験計画(ベイズ最適化を中心に)
線形計画法入門
自己教師学習(Self-Supervised Learning)
BlackBox モデルの説明性・解釈性技術の実装
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
 
深層学習の数理
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
レコメンドエンジン作成コンテストの勝ち方
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
ようやく分かった!最尤推定とベイズ推定
Triplet Loss 徹底解説
変分ベイズ法の説明
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
 
[DL輪読会]逆強化学習とGANs
Statistical Semantic入門 ~分布仮説からword2vecまで~
【DL輪読会】Scaling Laws for Neural Language Models

Similar to 組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015

PPT
Gurobi python
PDF
数式をnumpyに落としこむコツ
PDF
整数計画法に基づく説明可能性な機械学習へのアプローチ
PDF
数理モデリングからはじめるPython数理最適化 PyData.Tokyo 2017/6/28 Retty Inc. Iwanaga Jiro
PPT
Or seminar2011final
PDF
科学技術計算関連Pythonパッケージの概要
PDF
競プロは人生の役に立つ!
PDF
PFI Christmas seminar 2009
KEY
ひのきのぼうだけで全クリ目指す
PDF
Kosakunakano
PPTX
yyoshida thesis
PDF
情報検索の基礎(11章)
PDF
確率解析計算
PDF
NLPforml5
PDF
オンライン学習 : Online learning
PDF
2013 JOI春合宿 講義6 機械学習入門
Gurobi python
数式をnumpyに落としこむコツ
整数計画法に基づく説明可能性な機械学習へのアプローチ
数理モデリングからはじめるPython数理最適化 PyData.Tokyo 2017/6/28 Retty Inc. Iwanaga Jiro
Or seminar2011final
科学技術計算関連Pythonパッケージの概要
競プロは人生の役に立つ!
PFI Christmas seminar 2009
ひのきのぼうだけで全クリ目指す
Kosakunakano
yyoshida thesis
情報検索の基礎(11章)
確率解析計算
NLPforml5
オンライン学習 : Online learning
2013 JOI春合宿 講義6 機械学習入門

組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015

  • 1.
  • 2.
    PyCon JP 201510/10Agenda• はじめに• 定式化• 体系• 実行例• 事例• まとめ2
  • 3.
    PyCon JP 201510/10はじめに(自己紹介)• 名前:斉藤努• 仕事:組合せ最適化を使った開発など• 言語:Python、C#• 書籍:「組合せ最適化」10/22 出版記念セミナーをします「最適化出版セミナー」で検索!3
  • 4.
    PyCon JP 201510/10はじめに(今日の目的)• 組合せ最適化を使えるようになること– 体系を知ること– 実装を知ること– 事例を知ること4
  • 5.
    PyCon JP 201510/10はじめに(身近にある組合せ最適化)• 最適なやり方はどうすればよい?– 全パターンを調べると組合せ数が爆発!5先日、あなたが実家に帰ると、お土産に野菜を持って帰るよう言われました。東京の野菜は高いので、「儲かった」と喜びましたが、量が多すぎます。せいぜい5kg しか持って帰れないとします。(宅配便は使えないことにしてください)また、野菜は切ったりすると傷むので、そのまま持って帰ることにします。100円150g
  • 6.
    PyCon JP 201510/10はじめに(数理最適化)• 数理最適化によるアプローチ– 数理モデル(数式による表現)6最大化𝑖𝑝𝑖 𝑥𝑖 𝑝𝑖:販売価格𝑖 𝑤𝑖 𝑥𝑖 ≤ 5 𝑤𝑖:重さ∀𝑥𝑖 ∈ 0, 1 𝑥𝑖:持って帰るかどうか
  • 7.
    PyCon JP 201510/10はじめに(数理最適化)• 数理最適化– 連続最適化– 組合せ最適化 ← 今日のテーマ7
  • 8.
    PyCon JP 201510/10定式化• 組合せ最適化では、数理モデルを定式化します• 定式化に必要なのは3つの要素↓1. 何を決めたいのか?「持って帰る野菜を決めたい」2. どうなるとうれしいのか?「持って帰る野菜の販売価格の合計が高くなるとうれしい」3. 守らないといけないことは?「持って帰る野菜を5kg 以下にします」8
  • 9.
    PyCon JP 201510/10定式化• 3つの要素を、変数、目的関数、制約条件といいます91. 変数 ∀𝑥𝑖 ∈ 0, 12. 目的関数𝑖𝑝𝑖 𝑥𝑖 → 最大化3. 制約条件 𝑖 𝑤𝑖 𝑥𝑖 ≤ 5
  • 10.
    PyCon JP 201510/10定式化• 定式化には、数学的な考え方と慣れが必要– 体系を知ることにより• 全体的な理解がしやすくなります– 実装を知ることにより• 理解を深めることができます– 数理モデルは、Pythonで記述できます– 事例を知ることにより• 考え方に慣れます10
  • 11.
    PyCon JP 201510/10定式化(ソルバー)• 定式化された数理モデルは、ソルバー(外部実行モジュール)を利用して解くことができます。• ソルバーは、無料や有料でいろいろあります。• ソルバーの性能が飛躍的に向上!11問題数理モデルソルバー 解定式化実行出力入力
  • 12.
    PyCon JP 201510/10体系• 上手に使うには、体系的にとらえることが重要• 体系的にとらえるために、問題を分類します• 「標準問題」による分類• 「数理問題」による分類121つの問題を2面的にとらえる
  • 13.
    PyCon JP 201510/10体系(標準問題)• 標準問題とは、よくある問題に名前を付けたもの• 例えば、先ほどの例は、ナップサック問題とよばれます13容量 C のナップサックが一つと、n 種類の品物(各々、価値 pi, 容積ci)が与えられたとき、ナップサックの容量 C を超えない範囲でいくつかの品物をナップサックに詰め、ナップサックに入れた品物の価値の和を最大化するにはどの品物を選べばよいか … wikipediaよりナップサック問題
  • 14.
    PyCon JP 201510/10体系(標準問題)1. 最小全域木問題2. 最大安定集合問題3. 最大カット問題4. 最小頂点被覆問題5. 最短路問題6. 最大流問題7. 最小費用流問題8. 運搬経路問題9. 巡回セールスマン問題10. 集合被覆問題11. 集合分割問題12. ジョブショップ問題13. 勤務スケジューリング問題14. ナップサック問題15. ビンパッキング問題16. n次元詰込み問題17. 施設配置問題18. 容量制約なし施設配置問題19. 2次割当問題20. 一般化割当問題21. 最大マッチング問題22. 重みマッチング問題23. 安定マッチング問題14実務でよくでてくる問題を23個厳選「組合せ最適化 標準問題」で検索!
  • 15.
    PyCon JP 201510/10体系(標準問題クラス)1. 最小全域木問題2. 最大安定集合問題3. 最大カット問題4. 最小頂点被覆問題5. 最短路問題6. 最大流問題7. 最小費用流問題8. 運搬経路問題9. 巡回セールスマン問題10. 集合被覆問題11. 集合分割問題12. ジョブショップ問題13. 勤務スケジューリング問題14. ナップサック問題15. ビンパッキング問題16. n次元詰込み問題17. 施設配置問題18. 容量制約なし施設配置問題19. 2次割当問題20. 一般化割当問題21. 最大マッチング問題22. 重みマッチング問題23. 安定マッチング問題15標準問題クラス:標準問題のグループグラフ・ネットワーク問題経路問題集合被覆・分割問題スケジューリング問題切出し・詰込み問題配置問題割当・マッチング問題
  • 16.
    PyCon JP 201510/10体系(数理問題)• 単目的か多目的か• 連続か離散か• 線形か非線形か• 制約つきか制約なしか• 凸か非凸か• 微分可能かどうか• 確率的かどうか• …• → 研究者によって多くの分類があります16
  • 17.
    PyCon JP 201510/10体系(数理問題)• 最初は、ざっくり3分類を覚えましょう17超難しい難しいやさしい(NLP)(MIP)(LP)
  • 18.
    PyCon JP 201510/10体系(標準問題と数理問題の関係)18系統樹
  • 19.
    PyCon JP 201510/10体系(標準問題と数理問題の関係)• 1つの課題をいろいろな問題としてとらえることができます。– 混合整数最適化問題(0-1変数で割当を表現)– 集合被覆問題(候補を列挙して選ぶ)– 最大マッチング問題(割当をマッチングと見る)19
  • 20.
    PyCon JP 201510/10体系(標準問題と数理問題の関係)• 標準問題 → 専用ソルバー• 数理問題 → 汎用ソルバー• 一般的には、標準問題の方が効率よく解ける可能性があります。• 標準問題では、とらえきれない場合→ 数理問題としてとらえます。20
  • 21.
    PyCon JP 201510/10実行例(ソフトウェアのインストール)• Anaconda– Pythonおよび科学技術用各種パッケージを統合したディストリビューション– 利用したいバージョンのインストーラーを実行します。• pip install pulp– 数理問題用のモデラーおよびソルバー。• pip install ortoolpy– 標準問題用。最低限の機能のものや効率の悪いものも含まれています。(仕事では未使用)21
  • 22.
    PyCon JP 201510/10実行例(ナップサック問題 - 標準問題)• 選択された荷物の価値の総和(105)と選択した荷物の順番([0, 1, 3, 4, 5])が得られます。22ナップサックに、いくつかの荷物を詰込みます。詰込む荷物の容量(size)の和がナップサックの容量(capacity) を超えないように、荷物の価値(weight) の和を最大にします。from ortoolpy import knapsacksize = [21, 11, 15, 9, 34, 25, 41, 52]weight = [22, 12, 16, 10, 35, 26, 42, 53]capacity = 100knapsack(size, weight, capacity)>>>(105, [0, 1, 3, 4, 5])
  • 23.
    PyCon JP 201510/10実行例(最短路問題 - 標準問題)• 8 個の点からなるランダムなグラフを作成し、ノード0 からノード2 への最短路となるノードのリスト([0, 1, 6, 3, 5, 2]) が得られます。23グラフにおいて、始点から終点までの経路の中で最も短い経路を探します。import networkx as nxg = nx.fast_gnp_random_graph(8, 0.26, 1)nx.dijkstra_path(g, source=0, target=2)>>>[0, 1, 6, 3, 5, 2]
  • 24.
    PyCon JP 201510/10実行例(ナップサック問題 - 数理問題)24ナップサックに、いくつかの荷物を詰込みます。詰込む荷物の容量(size)の和がナップサックの容量(capacity) を超えないように、荷物の価値(weight) の和を最大にします。from pulp import *size = [21, 11, 15, 9, 34, 25, 41, 52]weight = [22, 12, 16, 10, 35, 26, 42, 53]capacity = 100r = range(len(size))m = LpProblem(sense=LpMaximize) # 数理モデルx = [LpVariable('x%d'%i, cat=LpBinary) for i in r] # 変数m += lpDot(weight, x) # 目的関数m += lpDot(size, x) <= capacity # 制約条件m.solve()print((value(m.objective), [i for i in r if value(x[i]) > 0.5]))>>>(105.0, [0, 1, 3, 4, 5])再掲定式化とほぼ対応
  • 25.
    PyCon JP 201510/10事例 1(データベースの最適配置)• 背景– コールセンターでは、全国から多くの問い合わせが来ます。問い合わせに答えるため個人データがデータベースに格納されています。個人データは、地方ごとにまとめますが、保存先のストレージは、複数あります。• 問題– 個人データの保存するストレージ先を選択します。そのときに、ストレージごとのアクセスが平準化されるようにします。25標準問題 数理問題 アルゴリズム一般化割当問題 NLP 局所探索法
  • 26.
    PyCon JP 201510/10事例 2(店舗シフトスケジューリング)• 背景– 全国の店舗では、店長が毎月末に翌月の社員の勤務スケジュールを作成しています。様々な制約があるため、作成には時間がかかっています。• 問題– 各店舗ごとに、社員の勤務スケジュールを作成します。勤務スケジュールでは、社員ごと日ごとのシフトを決定します。シフトは、日勤、休み、早番、遅番などがあります。制約としては、各社員の休みの希望や各日ごとの最低シフト数やシフトの禁止パターンなどがあります。26標準問題 数理問題 アルゴリズム勤務スケジューリング問題 MIP 分枝限定法
  • 27.
    PyCon JP 201510/10事例 3(ビークル間連携配送最適化)• 背景– 物資の保管所から避難場所に物資を運びたい。輸送手段は、陸海空全て使うことができます。また、フェリーなどの定期便も利用できます。• 問題– 品物、輸送元、輸送先、数量、輸送期限からなる配送オーダーを満たす配送計画を求めます。配送計画では、いつ、何を、どうやって運ぶかを決めます。オーダーは1 回で運んでもよいし、複数の輸送手段で連携して運んでもよいです。27標準問題 数理問題 アルゴリズム運搬経路問題 MIP 貪欲法
  • 28.
    PyCon JP 201510/10事例 4(航空貨物の最適積み付け)• 背景– 航空貨物のほとんどは、パレット上にパッキングして、航空機内の形状に合わせて詰め込んでいます。• 問題– 様々な大きさの貨物をパレット上に効率よく詰め込む方法を求めます。一番下に置かないといけないとか上に積んではいけないとか様々な制約があります。28標準問題 数理問題 アルゴリズム3次元詰込み問題 MIP 貪欲法
  • 29.
    PyCon JP 201510/10事例 5(バスの最適仕業作成)• 背景– バスのダイヤを組合わせて仕業(系統や路線)を作成します。1つの仕業は1人のドライバーが対応します。労働基準法も満足しなければいけません。• 問題– バスのドライバーの人数を最小になる仕業を作成します29標準問題 数理問題 アルゴリズムマッチング問題 MIP エドモンズ法
  • 30.
    PyCon JP 201510/10事例 6(空箱の輸送コスト最適化)• 背景– 物を箱に入れて輸送しているときに、需要地と供給地に偏りがあると、空箱が需要地に溜まっていきます。この空箱を供給地に戻さないといけません。コンテナやパレットやレンタカーなど、いろいろな分野で見られます。• 問題– グラフ上において、複数の需要点と複数の供給点があります。需要点から供給点へ、費用を最小にするフロー(流量) を求めます。30標準問題 数理問題 アルゴリズム最小費用流問題 LP 負閉路除去法
  • 31.
    PyCon JP 201510/10まとめ• 標準問題と数理問題による俯瞰で体系を理解• Pythonにより簡潔に実行→ 組合せ最適化が使える!「組合せ最適化を使おう」で検索!31

[8]ページ先頭

©2009-2025 Movatter.jp