SlideShare a Scribd company logo
1 of 16
Download to read offline
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

More Related Content

What's hot

状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
horihorio
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
Takao Yamanaka
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
 

What's hot (20)

Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
 
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
 
クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定
 
PRML輪読#13
PRML輪読#13PRML輪読#13
PRML輪読#13
 
Stochastic Variational Inference
Stochastic Variational InferenceStochastic Variational Inference
Stochastic Variational Inference
 
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料 「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
 
【DL輪読会】事前学習用データセットについて
【DL輪読会】事前学習用データセットについて【DL輪読会】事前学習用データセットについて
【DL輪読会】事前学習用データセットについて
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
Triplet Loss 徹底解説
Triplet Loss 徹底解説Triplet Loss 徹底解説
Triplet Loss 徹底解説
 
2 3.GLMの基礎
2 3.GLMの基礎2 3.GLMの基礎
2 3.GLMの基礎
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
 
[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-
 
SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 

More from Takami Sato

More from Takami Sato (12)

NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeNIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
 
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で大谷翔平の二刀流論争に終止符を打つ!
 
セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門
 

Recently uploaded

Recently uploaded (12)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

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