SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
Kaggle Santa 2019で学ぶMIP最適化入門
1/23/20kaggle santa 2019で学ぶMIP入門 1
Takami Sato
Youtube: https://youtu.be/0AdaTRU--YE
Github: https://github.com/tkm2261/kaggle_santa2019_youtube
アジェンダ
• 線形計画問題(Linear Programming: LP)おさらい
• 混合整数計画問題(Mixed Integer Programming: MIP)ざっくり解説
• モデリング言語とMIPソルバー
• Kaggle Santa 2019コンペ解法解説
• 実装解説
– Gurobi
– CPLEX
– PuLP + CBC
• 雑談
1/22/20kaggle santa 2019で学ぶMIP入門 2
線形計画問題(Linear Programming)おさらい
1/22/20kaggle santa 2019で学ぶMIP入門 3
最適化超入門より
線形計画問題(Linear Programming)おさらい
1/22/20kaggle santa 2019で学ぶMIP入門 4
最適化超入門より
LP標準形と主・双対問題
1/22/20kaggle santa 2019で学ぶMIP入門 5
主問題(P) 双対問題(D)
双対問題(D)は主問題の下界を与える問題として導出できる
最適値
主問題(P)
双対問題(D)
双対定理とLP解法
1/22/20kaggle santa 2019で学ぶMIP入門 6
• 主単体法
• 主問題の実行性と相補性条件(最適性)を満たしながら
双対問題の実行可能性を満たす解を探す
• 双対単体法
• 双対問題の実行性と相補性条件(最適性)を満たしながら
主問題の実行可能性を満たす解を探す
• 主双対内点法
• 主問題と双対問題を実行性と(徐々に)相補性条件(最適性)を解く
• 弱双対定理
• 主問題の実行可能解の目的関数値は
双対問題の実行可能解の目的関数値より常に大きい
• 強双対定理
• 主問題に最適解が存在するならば、
双対問題にも最適解が存在し、最適値は一致する
双対定理
代表的なLP解法
混合整数計画法(Mixed Integer Programming: MIP)ざっくり解説
1/22/20kaggle santa 2019で学ぶMIP入門 7
線形計画問題に整数制約がついた問題
元の線形計画問題は整数制約のない緩和問題とみなせる
=> とりあえず元の線形計画問題を解く
でも解が整数になってないよね?
=>分枝限定法で解く
(例) 変数がx=3.3だった場合
x <= 3を加えた問題と x >= 4を加えた2個の小問題に分岐
混合整数計画法(Mixed Integer Programming: MIP)ざっくり解説
• 分枝限定法の末にすべて解が整数になれば終了
– 緩和解と現在の最良実行可能解の差がMIPギャップ
– Gurobiの定義
– (ObjBound-ObjVal)/|ObjVal| (where ObjBound and ObjVal are the
MIP objective bound and incumbent solution objective, respectively
• ぶっちゃけかなり力技
• 分枝限定法だけでなく
– MIPの最適解は除かないけど、緩和問題には効く制約を追加
• カットと呼ばれる
– 妥当不等式と呼ばれる。詳しくは切除平面法でググって
1/22/20kaggle santa 2019で学ぶMIP入門 8
モデリング言語とMIPソルバー
1/22/20kaggle santa 2019で学ぶMIP入門 9
STEP1: 最適化モデリング言語を使ってモデル化
Gurobi、 CPLEXには専用のものが付属
STEP2: 混合整数計画ソルバに解いてもらう
AMPL
有償の最適化モデリング専用言語。
Pythonでのモデリングが主流になってからは下火
PuLP
無償のPythonの最適化モデリングモジュール
今回はこれでサンプルを作成。
Pythonで出来るのが最大の利点だが、商用利用に不安アリ
JuliaOpt
最近出てきたJuliaの最適化モデリングモジュール。無償
MITのチームが頑張って開発しているらしく、今後に期待
Kaggle Santa 2019コンペ解法解説
• 5,000組の家族がいて、
• クリスマス前の100日間でイベントにアサインする
– 各日125-300人をアサイン
• Preference cost
– サンタさんは10種類のプレゼントのどれかを各家族に贈る
– ただし各種のプレゼントは家族毎に贈れる日が決まっている
• それ以外の日にアサインした場合は一番高額なプレゼントになる
– プレゼントの値段は家族人数にもよる
• Accounting penalty
– 日毎の人数のばらつきが大きいとペナルティ(次ページ)
1/22/20kaggle santa 2019で学ぶMIP入門 10
Kaggle Santa 2019コンペ解法解説
1/22/20kaggle santa 2019で学ぶMIP入門 11
• Accounting penalty
• Preference cost
Kaggle Santa 2019コンペ解法解説
1/22/20kaggle santa 2019で学ぶMIP入門 12
• Accounting penalty
• Preference cost
とる値を全列挙できる
ひとまず混合二次計画で定式化
s.t.
1/22/20kaggle santa 2019で学ぶMIP入門 13
min
双線形型をMIPに書き下す
1/22/20kaggle santa 2019で学ぶMIP入門 14
min
s.t.
1/22/20kaggle santa 2019で学ぶMIP入門 15
1d日目130人
d+1日目135人
1d+1日目135人
d+2日目130人
ライブ実装&デモ
• デモ
• sudo apt install coinor-cbc
• Pip install pulp
• pip install docplex
1/22/20kaggle santa 2019で学ぶMIP入門 16

Contenu connexe

Tendances

Openfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part IOpenfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part IMaho Nakata
 
[DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent
 [DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent [DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent
[DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient DescentDeep Learning JP
 
Cosine Based Softmax による Metric Learning が上手くいく理由
Cosine Based Softmax による Metric Learning が上手くいく理由Cosine Based Softmax による Metric Learning が上手くいく理由
Cosine Based Softmax による Metric Learning が上手くいく理由tancoro
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)Kota Matsui
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習Eiji Uchibe
 
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたいTakuji Tahara
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画までShunji Umetani
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)RyuichiKanoh
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向Motokawa Tetsuya
 
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~SSII
 
自動運転におけるCNNの信頼性
自動運転におけるCNNの信頼性自動運転におけるCNNの信頼性
自動運転におけるCNNの信頼性Fixstars Corporation
 
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?Masanao Ochi
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方joisino
 
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
LUT-Network ~本物のリアルタイムコンピューティングを目指して~LUT-Network ~本物のリアルタイムコンピューティングを目指して~
LUT-Network ~本物のリアルタイムコンピューティングを目指して~ryuz88
 
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~RyuichiKanoh
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...joisino
 
ベイズ最適化によるハイパラーパラメータ探索
ベイズ最適化によるハイパラーパラメータ探索ベイズ最適化によるハイパラーパラメータ探索
ベイズ最適化によるハイパラーパラメータ探索西岡 賢一郎
 
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2Kota Matsui
 

Tendances (20)

Openfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part IOpenfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part I
 
[DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent
 [DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent [DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent
[DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent
 
Cosine Based Softmax による Metric Learning が上手くいく理由
Cosine Based Softmax による Metric Learning が上手くいく理由Cosine Based Softmax による Metric Learning が上手くいく理由
Cosine Based Softmax による Metric Learning が上手くいく理由
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
 
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
 
自動運転におけるCNNの信頼性
自動運転におけるCNNの信頼性自動運転におけるCNNの信頼性
自動運転におけるCNNの信頼性
 
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
LUT-Network ~本物のリアルタイムコンピューティングを目指して~LUT-Network ~本物のリアルタイムコンピューティングを目指して~
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
 
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~
 
ゲート方式量子コンピュータの概要
ゲート方式量子コンピュータの概要ゲート方式量子コンピュータの概要
ゲート方式量子コンピュータの概要
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
 
線形計画法入門
線形計画法入門線形計画法入門
線形計画法入門
 
ベイズ最適化によるハイパラーパラメータ探索
ベイズ最適化によるハイパラーパラメータ探索ベイズ最適化によるハイパラーパラメータ探索
ベイズ最適化によるハイパラーパラメータ探索
 
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
 

Plus de Takami Sato

Kaggle&競プロ紹介 in 中田研究室
Kaggle&競プロ紹介 in 中田研究室Kaggle&競プロ紹介 in 中田研究室
Kaggle&競プロ紹介 in 中田研究室Takami Sato
 
Quoraコンペ参加記録
Quoraコンペ参加記録Quoraコンペ参加記録
Quoraコンペ参加記録Takami Sato
 
Data Science Bowl 2017 Winning Solutions Survey
Data Science Bowl 2017Winning Solutions SurveyData Science Bowl 2017Winning Solutions Survey
Data Science Bowl 2017 Winning Solutions SurveyTakami Sato
 
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...Takami Sato
 
Overview of tree algorithms from decision tree to xgboost
Overview of tree algorithms from decision tree to xgboostOverview of tree algorithms from decision tree to xgboost
Overview of tree algorithms from decision tree to xgboostTakami Sato
 
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesIcml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesTakami Sato
 
AAをつくろう!
AAをつくろう!AAをつくろう!
AAをつくろう!Takami Sato
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data scienceTakami Sato
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Takami Sato
 
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!Takami Sato
 
セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門Takami Sato
 

Plus de Takami Sato (11)

Kaggle&競プロ紹介 in 中田研究室
Kaggle&競プロ紹介 in 中田研究室Kaggle&競プロ紹介 in 中田研究室
Kaggle&競プロ紹介 in 中田研究室
 
Quoraコンペ参加記録
Quoraコンペ参加記録Quoraコンペ参加記録
Quoraコンペ参加記録
 
Data Science Bowl 2017 Winning Solutions Survey
Data Science Bowl 2017Winning Solutions SurveyData Science Bowl 2017Winning Solutions Survey
Data Science Bowl 2017 Winning Solutions Survey
 
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
 
Overview of tree algorithms from decision tree to xgboost
Overview of tree algorithms from decision tree to xgboostOverview of tree algorithms from decision tree to xgboost
Overview of tree algorithms from decision tree to xgboost
 
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesIcml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
 
AAをつくろう!
AAをつくろう!AAをつくろう!
AAをつくろう!
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
 
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
 
セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門
 

Dernier

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Dernier (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

Kaggle Santa 2019で学ぶMIP最適化入門

  • 1. Kaggle Santa 2019で学ぶMIP最適化入門 1/23/20kaggle santa 2019で学ぶMIP入門 1 Takami Sato Youtube: https://youtu.be/0AdaTRU--YE Github: https://github.com/tkm2261/kaggle_santa2019_youtube
  • 2. アジェンダ • 線形計画問題(Linear Programming: LP)おさらい • 混合整数計画問題(Mixed Integer Programming: MIP)ざっくり解説 • モデリング言語とMIPソルバー • Kaggle Santa 2019コンペ解法解説 • 実装解説 – Gurobi – CPLEX – PuLP + CBC • 雑談 1/22/20kaggle santa 2019で学ぶMIP入門 2
  • 3. 線形計画問題(Linear Programming)おさらい 1/22/20kaggle santa 2019で学ぶMIP入門 3 最適化超入門より
  • 4. 線形計画問題(Linear Programming)おさらい 1/22/20kaggle santa 2019で学ぶMIP入門 4 最適化超入門より
  • 5. LP標準形と主・双対問題 1/22/20kaggle santa 2019で学ぶMIP入門 5 主問題(P) 双対問題(D) 双対問題(D)は主問題の下界を与える問題として導出できる 最適値 主問題(P) 双対問題(D)
  • 6. 双対定理とLP解法 1/22/20kaggle santa 2019で学ぶMIP入門 6 • 主単体法 • 主問題の実行性と相補性条件(最適性)を満たしながら 双対問題の実行可能性を満たす解を探す • 双対単体法 • 双対問題の実行性と相補性条件(最適性)を満たしながら 主問題の実行可能性を満たす解を探す • 主双対内点法 • 主問題と双対問題を実行性と(徐々に)相補性条件(最適性)を解く • 弱双対定理 • 主問題の実行可能解の目的関数値は 双対問題の実行可能解の目的関数値より常に大きい • 強双対定理 • 主問題に最適解が存在するならば、 双対問題にも最適解が存在し、最適値は一致する 双対定理 代表的なLP解法
  • 7. 混合整数計画法(Mixed Integer Programming: MIP)ざっくり解説 1/22/20kaggle santa 2019で学ぶMIP入門 7 線形計画問題に整数制約がついた問題 元の線形計画問題は整数制約のない緩和問題とみなせる => とりあえず元の線形計画問題を解く でも解が整数になってないよね? =>分枝限定法で解く (例) 変数がx=3.3だった場合 x <= 3を加えた問題と x >= 4を加えた2個の小問題に分岐
  • 8. 混合整数計画法(Mixed Integer Programming: MIP)ざっくり解説 • 分枝限定法の末にすべて解が整数になれば終了 – 緩和解と現在の最良実行可能解の差がMIPギャップ – Gurobiの定義 – (ObjBound-ObjVal)/|ObjVal| (where ObjBound and ObjVal are the MIP objective bound and incumbent solution objective, respectively • ぶっちゃけかなり力技 • 分枝限定法だけでなく – MIPの最適解は除かないけど、緩和問題には効く制約を追加 • カットと呼ばれる – 妥当不等式と呼ばれる。詳しくは切除平面法でググって 1/22/20kaggle santa 2019で学ぶMIP入門 8
  • 9. モデリング言語とMIPソルバー 1/22/20kaggle santa 2019で学ぶMIP入門 9 STEP1: 最適化モデリング言語を使ってモデル化 Gurobi、 CPLEXには専用のものが付属 STEP2: 混合整数計画ソルバに解いてもらう AMPL 有償の最適化モデリング専用言語。 Pythonでのモデリングが主流になってからは下火 PuLP 無償のPythonの最適化モデリングモジュール 今回はこれでサンプルを作成。 Pythonで出来るのが最大の利点だが、商用利用に不安アリ JuliaOpt 最近出てきたJuliaの最適化モデリングモジュール。無償 MITのチームが頑張って開発しているらしく、今後に期待
  • 10. Kaggle Santa 2019コンペ解法解説 • 5,000組の家族がいて、 • クリスマス前の100日間でイベントにアサインする – 各日125-300人をアサイン • Preference cost – サンタさんは10種類のプレゼントのどれかを各家族に贈る – ただし各種のプレゼントは家族毎に贈れる日が決まっている • それ以外の日にアサインした場合は一番高額なプレゼントになる – プレゼントの値段は家族人数にもよる • Accounting penalty – 日毎の人数のばらつきが大きいとペナルティ(次ページ) 1/22/20kaggle santa 2019で学ぶMIP入門 10
  • 11. Kaggle Santa 2019コンペ解法解説 1/22/20kaggle santa 2019で学ぶMIP入門 11 • Accounting penalty • Preference cost
  • 12. Kaggle Santa 2019コンペ解法解説 1/22/20kaggle santa 2019で学ぶMIP入門 12 • Accounting penalty • Preference cost とる値を全列挙できる
  • 15. 1/22/20kaggle santa 2019で学ぶMIP入門 15 1d日目130人 d+1日目135人 1d+1日目135人 d+2日目130人
  • 16. ライブ実装&デモ • デモ • sudo apt install coinor-cbc • Pip install pulp • pip install docplex 1/22/20kaggle santa 2019で学ぶMIP入門 16