Submit Search
Upload
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
•
Download as PPTX, PDF
•
47 likes
•
30,515 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
最適化超入門
最適化超入門
Takami Sato
最適輸送の解き方
最適輸送の解き方
joisino
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
cvpaper. challenge
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
Shunji Umetani
大規模な組合せ最適化問題に対する発見的解法
大規模な組合せ最適化問題に対する発見的解法
Shunji Umetani
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Yusuke Uchida
最適化計算の概要まとめ
最適化計算の概要まとめ
Yuichiro MInato
Recommended
最適化超入門
最適化超入門
Takami Sato
最適輸送の解き方
最適輸送の解き方
joisino
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
cvpaper. challenge
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
Shunji Umetani
大規模な組合せ最適化問題に対する発見的解法
大規模な組合せ最適化問題に対する発見的解法
Shunji Umetani
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Yusuke Uchida
最適化計算の概要まとめ
最適化計算の概要まとめ
Yuichiro MInato
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
Deep Learning JP
深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)
Masahiro Suzuki
POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用
Yasunori Ozaki
[DL輪読会]1次近似系MAMLとその理論的背景
[DL輪読会]1次近似系MAMLとその理論的背景
Deep Learning JP
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
Taiji Suzuki
2019年度チュートリアルBPE
2019年度チュートリアルBPE
広樹 本間
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
Eiji Uchibe
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Preferred Networks
GAN(と強化学習との関係)
GAN(と強化学習との関係)
Masahiro Suzuki
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
Deep Learning JP
深層学習の数理
深層学習の数理
Taiji Suzuki
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
hoxo_m
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
Deep Learning JP
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
Preferred Networks
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
Kota Matsui
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
ohken
全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
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
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
Deep Learning JP
深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)
Masahiro Suzuki
POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用
Yasunori Ozaki
[DL輪読会]1次近似系MAMLとその理論的背景
[DL輪読会]1次近似系MAMLとその理論的背景
Deep Learning JP
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
Taiji Suzuki
2019年度チュートリアルBPE
2019年度チュートリアルBPE
広樹 本間
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
Eiji Uchibe
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Preferred Networks
GAN(と強化学習との関係)
GAN(と強化学習との関係)
Masahiro Suzuki
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
Deep Learning JP
深層学習の数理
深層学習の数理
Taiji Suzuki
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
hoxo_m
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
Deep Learning JP
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
Preferred Networks
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
Kota Matsui
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
ohken
全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
What's hot
(20)
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)
POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用
[DL輪読会]1次近似系MAMLとその理論的背景
[DL輪読会]1次近似系MAMLとその理論的背景
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
2019年度チュートリアルBPE
2019年度チュートリアルBPE
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
GAN(と強化学習との関係)
GAN(と強化学習との関係)
関数プログラミング入門
関数プログラミング入門
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
深層学習の数理
深層学習の数理
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
全力解説!Transformer
全力解説!Transformer
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 学習教材
Recently uploaded
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
Takayuki Itoh
Recently uploaded
(7)
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
組合せ最適化を体系的に知って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