Submit Search
Upload
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
•
Download as PPTX, PDF
•
47 likes
•
30,533 views
S
SaitoTsutomu
Follow
https://pycon.jp/2015/ja/schedule/presentation/44/
Read less
Read more
Education
Report
Share
Report
Share
1 of 31
Download now
Recommended
最適輸送の解き方
最適輸送の解き方
joisino
TabNetの論文紹介
TabNetの論文紹介
西岡 賢一郎
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
強化学習その2
強化学習その2
nishio
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
最適化超入門
最適化超入門
Takami Sato
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
Shiga University, RIKEN
Recommended
最適輸送の解き方
最適輸送の解き方
joisino
TabNetの論文紹介
TabNetの論文紹介
西岡 賢一郎
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
強化学習その2
強化学習その2
nishio
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
最適化超入門
最適化超入門
Takami Sato
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
Shiga University, RIKEN
線形計画法入門
線形計画法入門
Shunji Umetani
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
最適輸送入門
最適輸送入門
joisino
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
Naoaki Okazaki
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
Takuya Akiba
直交領域探索
直交領域探索
okuraofvegetable
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
Deep Learning JP
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
Yusuke Fujimoto
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
Shunji Umetani
エントリー層向けセミナー#04『はじめての最適化』
エントリー層向けセミナー#04『はじめての最適化』
The Japan DataScientist Society
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
[DL輪読会]Attention Is All You Need
[DL輪読会]Attention Is All You Need
Deep Learning JP
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
joisino
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
gree_tech
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
Takeshi Mikami
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Preferred Networks
S03 t1 python_learningdiary#3
S03 t1 python_learningdiary#3
Takeshi Akutsu
More Related Content
What's hot
線形計画法入門
線形計画法入門
Shunji Umetani
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
最適輸送入門
最適輸送入門
joisino
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
Naoaki Okazaki
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
Takuya Akiba
直交領域探索
直交領域探索
okuraofvegetable
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
Deep Learning JP
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
Yusuke Fujimoto
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
Shunji Umetani
エントリー層向けセミナー#04『はじめての最適化』
エントリー層向けセミナー#04『はじめての最適化』
The Japan DataScientist Society
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
[DL輪読会]Attention Is All You Need
[DL輪読会]Attention Is All You Need
Deep Learning JP
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
joisino
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
gree_tech
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
Takeshi Mikami
What's hot
(20)
線形計画法入門
線形計画法入門
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
最適輸送入門
最適輸送入門
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
直交領域探索
直交領域探索
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
エントリー層向けセミナー#04『はじめての最適化』
エントリー層向けセミナー#04『はじめての最適化』
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
[DL輪読会]Attention Is All You Need
[DL輪読会]Attention Is All You Need
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
Similar to 組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Preferred Networks
S03 t1 python_learningdiary#3
S03 t1 python_learningdiary#3
Takeshi Akutsu
pythonでオフィス快適化計画
pythonでオフィス快適化計画
Kazufumi Ohkawa
[DL輪読会]It's not just size that maters small language models are also few sho...
[DL輪読会]It's not just size that maters small language models are also few sho...
Deep Learning JP
Sta introduction in_kyoto #devkan
Sta introduction in_kyoto #devkan
kyon mm
CIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用した
CIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用した
ssuser0be501
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
Hori Tasuku
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
Toshimichi Suekane
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
Kenichirou Oyama
勉強会 Cvml python基礎
勉強会 Cvml python基礎
真哉 杉野
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
ryohji ikebe
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
urasandesu
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
ryohji ikebe
20190722 Building handy CI with zuul and OpenStack
20190722 Building handy CI with zuul and OpenStack
Akihiro Motoki
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
20190701トリーズ9画面法で企業分析@東大授業の事前課題
20190701トリーズ9画面法で企業分析@東大授業の事前課題
芳徳 高木
IPython notebookを使おう
IPython notebookを使おう
Kazufumi Ohkawa
Python 学習教材
Python 学習教材
Jun MITANI
Similar to 組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
(20)
PFI Christmas seminar 2009
PFI Christmas seminar 2009
S03 t1 python_learningdiary#3
S03 t1 python_learningdiary#3
pythonでオフィス快適化計画
pythonでオフィス快適化計画
[DL輪読会]It's not just size that maters small language models are also few sho...
[DL輪読会]It's not just size that maters small language models are also few sho...
Sta introduction in_kyoto #devkan
Sta introduction in_kyoto #devkan
CIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用した
CIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用した
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
Pug(Jade)を使って コンテンツ書き出しの 時短をしよう
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
勉強会 Cvml python基礎
勉強会 Cvml python基礎
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
20190722 Building handy CI with zuul and OpenStack
20190722 Building handy CI with zuul and OpenStack
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
20190701トリーズ9画面法で企業分析@東大授業の事前課題
20190701トリーズ9画面法で企業分析@東大授業の事前課題
IPython notebookを使おう
IPython notebookを使おう
Python 学習教材
Python 学習教材
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
1.
組合せ最適化を体系的に知って Pythonで実行してみよう 斉藤努 PyCon 2015 10/10
2.
PyCon JP 2015
10/10 Agenda • はじめに • 定式化 • 体系 • 実行例 • 事例 • まとめ 2
3.
PyCon JP 2015
10/10 はじめに(自己紹介) • 名前:斉藤努 • 仕事:組合せ最適化を使った開発など • 言語:Python、C# • 書籍:「組合せ最適化」 10/22 出版記念セミナーをします 「最適化出版セミナー」で検索! 3
4.
PyCon JP 2015
10/10 はじめに(今日の目的) • 組合せ最適化を使えるようになること – 体系を知ること – 実装を知ること – 事例を知ること 4
5.
PyCon JP 2015
10/10 はじめに(身近にある組合せ最適化) • 最適なやり方はどうすればよい? – 全パターンを調べると組合せ数が爆発! 5 先日、あなたが実家に帰ると、お土産に野菜を 持って帰るよう言われました。東京の野菜は高い ので、「儲かった」と喜びましたが、量が多すぎま す。せいぜい5kg しか持って帰れないとします。 (宅配便は使えないことにしてください) また、野菜は切ったりすると傷むので、そのまま 持って帰ることにします。 100円 150g
6.
PyCon JP 2015
10/10 はじめに(数理最適化) • 数理最適化によるアプローチ – 数理モデル(数式による表現) 6 最大化 𝑖 𝑝𝑖 𝑥𝑖 𝑝𝑖:販売価格 𝑖 𝑤𝑖 𝑥𝑖 ≤ 5 𝑤𝑖:重さ ∀𝑥𝑖 ∈ 0, 1 𝑥𝑖:持って帰るかどうか
7.
PyCon JP 2015
10/10 はじめに(数理最適化) • 数理最適化 – 連続最適化 – 組合せ最適化 ← 今日のテーマ 7
8.
PyCon JP 2015
10/10 定式化 • 組合せ最適化では、数理モデルを定式化します • 定式化に必要なのは3つの要素 ↓ 1. 何を決めたいのか? 「持って帰る野菜を決めたい」 2. どうなるとうれしいのか? 「持って帰る野菜の販売価格の合計が高くなるとうれしい」 3. 守らないといけないことは? 「持って帰る野菜を5kg 以下にします」 8
9.
PyCon JP 2015
10/10 定式化 • 3つの要素を、変数、目的関数、制約条件と いいます 9 1. 変数 ∀𝑥𝑖 ∈ 0, 1 2. 目的関数 𝑖 𝑝𝑖 𝑥𝑖 → 最大化 3. 制約条件 𝑖 𝑤𝑖 𝑥𝑖 ≤ 5
10.
PyCon JP 2015
10/10 定式化 • 定式化には、数学的な考え方と慣れが必要 – 体系を知ることにより • 全体的な理解がしやすくなります – 実装を知ることにより • 理解を深めることができます – 数理モデルは、Pythonで記述できます – 事例を知ることにより • 考え方に慣れます 10
11.
PyCon JP 2015
10/10 定式化(ソルバー) • 定式化された数理モデルは、ソルバー(外部 実行モジュール)を利用して解くことができます。 • ソルバーは、無料や有料でいろいろあります。 • ソルバーの性能が飛躍的に向上! 11 問題 数理 モデル ソルバー 解 定式化 実行 出力入力
12.
PyCon JP 2015
10/10 体系 • 上手に使うには、体系的にとらえることが重要 • 体系的にとらえるために、問題を分類します • 「標準問題」による分類 • 「数理問題」による分類 12 1つの問題を 2面的にとらえる
13.
PyCon JP 2015
10/10 体系(標準問題) • 標準問題とは、よくある問題に名前を付け たもの • 例えば、先ほどの例は、ナップサック問題 とよばれます 13 容量 C のナップサックが一つと、n 種類の品物(各々、価値 pi, 容積 ci)が与えられたとき、ナップサックの容量 C を超えない範囲でいくつ かの品物をナップサックに詰め、ナップサックに入れた品物の価値の 和を最大化するにはどの品物を選べばよいか … wikipediaより ナップサック問題
14.
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個厳選 「組合せ最適化 標準問題」で検索!
15.
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 標準問題クラス:標準問題のグループ グラフ・ネットワーク問題 経路問題 集合被覆・分割問題 スケジューリング問題 切出し・詰込み問題 配置問題 割当・マッチング問題
16.
PyCon JP 2015
10/10 体系(数理問題) • 単目的か多目的か • 連続か離散か • 線形か非線形か • 制約つきか制約なしか • 凸か非凸か • 微分可能かどうか • 確率的かどうか • … • → 研究者によって多くの分類があります 16
17.
PyCon JP 2015
10/10 体系(数理問題) • 最初は、ざっくり3分類を覚えましょう 17 超難しい 難しい やさしい (NLP) (MIP) (LP)
18.
PyCon JP 2015
10/10 体系(標準問題と数理問題の関係) 18 系統樹
19.
PyCon JP 2015
10/10 体系(標準問題と数理問題の関係) • 1つの課題をいろいろな問題としてとらえる ことができます。 – 混合整数最適化問題(0-1変数で割当を表現) – 集合被覆問題(候補を列挙して選ぶ) – 最大マッチング問題(割当をマッチングと見る) 19
20.
PyCon JP 2015
10/10 体系(標準問題と数理問題の関係) • 標準問題 → 専用ソルバー • 数理問題 → 汎用ソルバー • 一般的には、標準問題の方が効率よく解ける 可能性があります。 • 標準問題では、とらえきれない場合 → 数理問題としてとらえます。 20
21.
PyCon JP 2015
10/10 実行例(ソフトウェアのインストール) • Anaconda – Pythonおよび科学技術用各種パッケージを統合した ディストリビューション – 利用したいバージョンのインストーラーを実行します。 • pip install pulp – 数理問題用のモデラーおよびソルバー。 • pip install ortoolpy – 標準問題用。最低限の機能のものや効率の悪いも のも含まれています。(仕事では未使用) 21
22.
PyCon JP 2015
10/10 実行例(ナップサック問題 - 標準問題) • 選択された荷物の価値の総和(105)と選択し た荷物の順番([0, 1, 3, 4, 5])が得られます。 22 ナップサックに、いくつかの荷物を詰込みます。詰込む荷物の容量(size) の和がナップサックの容量(capacity) を超えないように、荷物の価値 (weight) の和を最大にします。 from ortoolpy import knapsack size = [21, 11, 15, 9, 34, 25, 41, 52] weight = [22, 12, 16, 10, 35, 26, 42, 53] capacity = 100 knapsack(size, weight, capacity) >>> (105, [0, 1, 3, 4, 5])
23.
PyCon JP 2015
10/10 実行例(最短路問題 - 標準問題) • 8 個の点からなるランダムなグラフを作成し、 ノード0 からノード2 への最短路となるノードの リスト([0, 1, 6, 3, 5, 2]) が得られます。 23 グラフにおいて、始点から終点までの経路の中で最も短い経路を探します。 import networkx as nx g = 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 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 = 100 r = 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 2015
10/10 事例 1(データベースの最適配置) • 背景 – コールセンターでは、全国から多くの問い合わせ が来ます。問い合わせに答えるため個人データ がデータベースに格納されています。個人データ は、地方ごとにまとめますが、保存先のストレー ジは、複数あります。 • 問題 – 個人データの保存するストレージ先を選択します。 そのときに、ストレージごとのアクセスが平準化さ れるようにします。 25 標準問題 数理問題 アルゴリズム 一般化割当問題 NLP 局所探索法
26.
PyCon JP 2015
10/10 事例 2(店舗シフトスケジューリング) • 背景 – 全国の店舗では、店長が毎月末に翌月の社員 の勤務スケジュールを作成しています。様々な制 約があるため、作成には時間がかかっています。 • 問題 – 各店舗ごとに、社員の勤務スケジュールを作成し ます。勤務スケジュールでは、社員ごと日ごとの シフトを決定します。シフトは、日勤、休み、早番、 遅番などがあります。制約としては、各社員の休 みの希望や各日ごとの最低シフト数やシフトの禁 止パターンなどがあります。 26 標準問題 数理問題 アルゴリズム 勤務スケジューリング問題 MIP 分枝限定法
27.
PyCon JP 2015
10/10 事例 3(ビークル間連携配送最適化) • 背景 – 物資の保管所から避難場所に物資を運びたい。 輸送手段は、陸海空全て使うことができます。ま た、フェリーなどの定期便も利用できます。 • 問題 – 品物、輸送元、輸送先、数量、輸送期限からなる 配送オーダーを満たす配送計画を求めます。配 送計画では、いつ、何を、どうやって運ぶかを決 めます。オーダーは1 回で運んでもよいし、複数 の輸送手段で連携して運んでもよいです。 27 標準問題 数理問題 アルゴリズム 運搬経路問題 MIP 貪欲法
28.
PyCon JP 2015
10/10 事例 4(航空貨物の最適積み付け) • 背景 – 航空貨物のほとんどは、パレット上にパッキングし て、航空機内の形状に合わせて詰め込んでいます。 • 問題 – 様々な大きさの貨物をパレット上に効率よく詰め込 む方法を求めます。一番下に置かないといけない とか上に積んではいけないとか様々な制約があり ます。 28 標準問題 数理問題 アルゴリズム 3次元詰込み問題 MIP 貪欲法
29.
PyCon JP 2015
10/10 事例 5(バスの最適仕業作成) • 背景 – バスのダイヤを組合わせて仕業(系統や路線)を 作成します。1つの仕業は1人のドライバーが対 応します。労働基準法も満足しなければいけま せん。 • 問題 – バスのドライバーの人数を最小になる仕業を 作成します 29 標準問題 数理問題 アルゴリズム マッチング問題 MIP エドモンズ法
30.
PyCon JP 2015
10/10 事例 6(空箱の輸送コスト最適化) • 背景 – 物を箱に入れて輸送しているときに、需要地と供 給地に偏りがあると、空箱が需要地に溜まってい きます。この空箱を供給地に戻さないといけませ ん。コンテナやパレットやレンタカーなど、いろい ろな分野で見られます。 • 問題 – グラフ上において、複数の需要点と複数の供給 点があります。需要点から供給点へ、費用を最 小にするフロー(流量) を求めます。 30 標準問題 数理問題 アルゴリズム 最小費用流問題 LP 負閉路除去法
31.
PyCon JP 2015
10/10 まとめ • 標準問題と数理問題による俯瞰で体系を理解 • Pythonにより簡潔に実行 → 組合せ最適化が使える! 「組合せ最適化を使おう」で検索! 31
Download now