2021年11月26日に行われたPyData.Tokyo Meetup #24 Pythonではじめる数理最適化での発表資料です。 https://pydatatokyo.connpass.com/event/226657/
資料で使われているPythonコードはこちらになります。 https://github.com/dropout009/pydata24
CM2021/11/26PyData.Tokyo Meetup #24@dropout009
View Slide
TVISION INSIGHTSTwitter: @dropout009Speaker Deck: dropout009Blog: https://dropout009.hatenablog.com/
AB CDEFCM CM
• 𝑖 𝑖 = 1, … , 𝑁• 𝑗 𝑗 = 1, … , 𝐽• 𝑘!𝑗 CM 𝒌 = (𝑘", … , 𝑘!, … 𝑘#)• 𝑅• 𝑅$ 𝑖 CM 1 0• 𝑃𝑟𝑖𝑐𝑒! 𝑗 CM 1• 𝐵𝑢𝑑𝑔𝑒𝑡max𝒌&'𝔼 𝑅 ∣ 𝒌 = 𝔼1𝑁<$(")𝑅$∣ 𝒌𝑠. 𝑡. <!("#𝑃𝑟𝑖𝑐𝑒!×𝑘! ≤ 𝐵𝑢𝑑𝑔𝑒𝑡
𝔼 𝑅 ∣ 𝒌 = 𝔼1𝑁(!"#$𝑅!∣ 𝒌=1𝑁(!"#$𝔼 𝑅!∣ 𝒌=1𝑁(!"#$Pr(𝑅!= 1 ∣ 𝒌)
Pr(𝑅!= 1 ∣ 𝒌) = 1 − .%"#&1 − 𝑝!%'! = 1 − .%"#&𝑞!%'!𝑞!"𝑞!" = 1 − 𝑝!"𝑝!"1
max𝒌&'1 −1𝑁<$(")B!("#𝑞$!*!s. t. <!("#𝑝𝑟𝑖𝑐𝑒!×𝑘! ≤ 𝐵𝑢𝑑𝑔𝑒𝑡• 𝑖 𝑖 = 1, … , 𝑁• 𝑗 𝑗 = 1, … , 𝐽• 𝑘! 𝑗 CM 𝒌 = (𝑘", … , 𝑘!, … 𝑘#)• 𝑞$!𝑗 CM 𝑖• 𝑃𝑟𝑖𝑐𝑒!𝑗 CM 1• 𝐵𝑢𝑑𝑔𝑒𝑡
2 2 CM 2CM0 2 1 2 1A 1 −23!=591 −13!=791 −2313=79B 1 −13!=791 −23!=591 −1323=796969𝟕𝟗0 1A1323B2313(𝑝!")
Python
PythonscipyK
0 1A1323B231317/9(𝑝!")
𝑝$' ∼ Beta 4, 200𝑝$" ∼ Beta 3, 200max(7",7#)𝔼 𝑅 ∣ (𝑘', 𝑘") = 1 −1𝑁<$(")𝑞$'*"𝑞$"*#s. t. 𝑘' + 𝑘" ≤ 10000, 1
𝔼 𝑅 ∣ 𝒌 = 1 −1𝑁<$(")B!("#𝑞$!*!O𝔼 𝑅 ∣ 𝒌 = 1 −1𝑁<$(")B!("#P𝑞$!*!P𝑞$!= 1 −1𝐿!<:(";!𝑅$!:𝑗 𝐿!CM𝑖 𝑗 𝑙 CM1 0
𝑝!" ∼ Beta 1, 49𝐹!" ∼ Binomial 𝐿, 𝑝!">𝑞!" = 1 −𝐹!"𝐿?𝔼 𝑅 ∣ 𝒌 = = 1 −1𝑁E!#$%F"#$&>𝑞!"'!𝑖 𝑗 CM
CM 𝐿𝐹"#∼ Binomial 𝐿, 𝑝"#0𝑞"#= 1 −𝐹"#𝐿
𝔼 P𝑞$! = 𝑞$!2𝔼 P𝑞$!= = 𝔼 P𝑞$!=+ Var P𝑞$! ≥ 𝑞$!=U𝑞$!= = P𝑞$!= − VVar P𝑞$!𝑞$!= P𝑞$!=P𝑞$!GVar >𝑞!" =>𝑞!"(1 − >𝑞!")𝐿
1𝑞!%' 2𝔼 P𝑞$!* ≈ 𝔼 𝑞$!* + 𝑘𝑞$!*>" P𝑞$! − 𝑞$! +12𝑘 𝑘 − 1 𝑞$!*>= P𝑞$! − 𝑞$!== 𝑞$!* + 𝑘𝑞$!*>" 𝔼 P𝑞$! − 𝑞$! +12𝑘 𝑘 − 1 𝑞$!*>=𝔼 P𝑞$! − 𝑞$!== 𝑞$!* +12𝑘 𝑘 − 1 𝑞$!*>=Var P𝑞$!P𝑞$!* 𝑞$!* 2U𝑞$!* = P𝑞$!* −12𝑘 𝑘 − 1 X𝑞$!*>= VVar P𝑞$!𝑞$!* ⾒
CM 𝐿
• CM•• ⾒
CM𝔼 𝐴 ∣ 𝒌 = 𝔼1𝑁<$(")𝐴$ ∣ 𝒌=1𝑁<$(")𝔼 𝐴$∣ 𝒌=1𝑁<$(")Pr(𝐴$ = 1 ∣ 𝒌)=1𝑁<$(")<?('∑*!Pr(𝐴$ = 1 ∣ 𝑓) Pr(𝐹$ = 𝑓 ∣ 𝒌)CM 𝑘𝑖 𝑓𝑖 𝑓CMCM