Slide 1

Slide 1 text

Copyright Drecom Co., Ltd. All Rights Reserved. !1 3VCZͱ1ZUIPO͸ ͲͪΒ͕଎͍ͷ͔ʁ URSL ٢ԬͻΖ͖

Slide 2

Slide 2 text

Copyright Drecom Co., Ltd. All Rights Reserved. !2 自己紹介 吉岡ひろき Webエンジニア irohiroki / いろ 登壇、執筆 少々

Slide 3

Slide 3 text

Copyright Drecom Co., Ltd. All Rights Reserved. !3 今どきのゲーム 何でも自動 ʰࠇ͍࠭യʱͷࣗಈङΓ

Slide 4

Slide 4 text

Copyright Drecom Co., Ltd. All Rights Reserved. !4 今どきのゲーム 何でも自動 自動戦闘 自動移動 自動アイテム処分 自動装備 自動パーティ編成 …

Slide 5

Slide 5 text

Copyright Drecom Co., Ltd. All Rights Reserved. !5 今どきのゲーム 何でも自動 自動戦闘 自動移動 自動アイテム処分 自動装備 自動パーティ編成 … 組合せ最適化問題 ʢ͍ΘΏΔφοϓαοΫ໰୊ʣ

Slide 6

Slide 6 text

Copyright Drecom Co., Ltd. All Rights Reserved. !6 組合せ最適化問題 近似解法 ミツバチコロニー最適化など 厳密解法 動的計画法 バックトラッキング 分岐限界法 など

Slide 7

Slide 7 text

Copyright Drecom Co., Ltd. All Rights Reserved. !7 あるブログ

Slide 8

Slide 8 text

Copyright Drecom Co., Ltd. All Rights Reserved. !8 ίʔυ͸3VCZ൛ͱಉ͚ͩ͡Ͳ
 ʢ1ZUIPOͷํ͕ʣ଎͍Έ͍ͨɻ ͳ͔ͥ஌Βͳ͍͚Ͳʂ

Slide 9

Slide 9 text

Copyright Drecom Co., Ltd. All Rights Reserved. !9 喧嘩売ってる?

Slide 10

Slide 10 text

Copyright Drecom Co., Ltd. All Rights Reserved. !10 検証 安定版 Ruby 2.6.3 Python 3.7.3 分岐限界法

Slide 11

Slide 11 text

Copyright Drecom Co., Ltd. All Rights Reserved. !11 分岐限界法 # Value Cost V/C 1 14 4 3.5 2 18 6 3 3 5 2 2.5 4 3 2 1.5 Cap=6

Slide 12

Slide 12 text

Copyright Drecom Co., Ltd. All Rights Reserved. !12 分岐限界法 V:0, C:0 UB:20 # Value Cost V/C 1 14 4 3.5 2 18 6 3 3 5 2 2.5 4 3 2 1.5 Cap=6 UB = 14 + 18 * (6 - 4) / 6

Slide 13

Slide 13 text

Copyright Drecom Co., Ltd. All Rights Reserved. !13 分岐限界法 V:0, C:0 UB:20 V:14, C:4 UB: 20 # Value Cost V/C 1 14 4 3.5 2 18 6 3 3 5 2 2.5 4 3 2 1.5 Cap=6 + I1 UB = 14 + 18 * (6 - 4) / 6

Slide 14

Slide 14 text

Copyright Drecom Co., Ltd. All Rights Reserved. !14 分岐限界法 V:0, C:0 UB:20 V:14, C:4 UB: 20 V: , C:10 UB: # Value Cost V/C 1 14 4 3.5 2 18 6 3 3 5 2 2.5 4 3 2 1.5 Cap=6 + I1 + I2

Slide 15

Slide 15 text

Copyright Drecom Co., Ltd. All Rights Reserved. !15 分岐限界法 V:0, C:0 UB:20 V:14, C:4 UB: 20 V: , C:10 UB: V:14, C:4 UB:19 # Value Cost V/C 1 14 4 3.5 2 18 6 3 3 5 2 2.5 4 3 2 1.5 Cap=6 + I1 + I2 - I2 UB = 14 + 5 * (6 - 4) / 2

Slide 16

Slide 16 text

Copyright Drecom Co., Ltd. All Rights Reserved. !16 分岐限界法 V:0, C:0 UB:20 V:14, C:4 UB: 20 V:0, C:0 UB: 18 V: , C:10 UB: V:14, C:4 UB:19 # Value Cost V/C 1 14 4 3.5 2 18 6 3 3 5 2 2.5 4 3 2 1.5 Cap=6 + I1 - I1 + I2 - I2

Slide 17

Slide 17 text

Copyright Drecom Co., Ltd. All Rights Reserved. !17 分岐限界法 V:0, C:0 UB:20 V:14, C:4 UB: 20 V:0, C:0 UB: 18 V: , C:10 UB: V:14, C:4 UB:19 # Value Cost V/C 1 14 4 3.5 2 18 6 3 3 5 2 2.5 4 3 2 1.5 Cap=6 V:19, C:6 UB:19 + I1 - I1 + I2 - I2 + I3

Slide 18

Slide 18 text

Copyright Drecom Co., Ltd. All Rights Reserved. !18 分岐限界法 V:0, C:0 UB:20 V:14, C:4 UB: 20 V:0, C:0 UB: 18 V: , C:10 UB: V:14, C:4 UB:19 # Value Cost V/C 1 14 4 3.5 2 18 6 3 3 5 2 2.5 4 3 2 1.5 Cap=6 V:19, C:6 UB:19 V:14, C:4 UB:17 + I1 - I1 + I2 - I2 + I3 - I3

Slide 19

Slide 19 text

Copyright Drecom Co., Ltd. All Rights Reserved. !19 分岐限界法 V:0, C:0 UB:20 V:14, C:4 UB: 20 V:0, C:0 UB: 18 V: , C:10 UB: V:14, C:4 UB:19 # Value Cost V/C 1 14 4 3.5 2 18 6 3 3 5 2 2.5 4 3 2 1.5 Cap=6 V:19, C:6 UB:19 V:14, C:4 UB:17 + I1 - I1 + I2 - I2 + I3 - I3

Slide 20

Slide 20 text

Copyright Drecom Co., Ltd. All Rights Reserved. !20 irohiroki/knapsacker

Slide 21

Slide 21 text

Copyright Drecom Co., Ltd. All Rights Reserved. !21 irohiroki/knapsacker-py

Slide 22

Slide 22 text

Copyright Drecom Co., Ltd. All Rights Reserved. !22 テストデータ アイテム数 … 200 Value … 1 〜 10 Cost … 1 〜 10 キャパシティ … 500

Slide 23

Slide 23 text

Copyright Drecom Co., Ltd. All Rights Reserved. !23 0.42秒 Rubyで解く

Slide 24

Slide 24 text

Copyright Drecom Co., Ltd. All Rights Reserved. !24 118 / 200 3.5 x 1057 通り Rubyで解く

Slide 25

Slide 25 text

Copyright Drecom Co., Ltd. All Rights Reserved. !25 Pythonで解く

Slide 26

Slide 26 text

Copyright Drecom Co., Ltd. All Rights Reserved. !26 0.14秒 Pythonで解く

Slide 27

Slide 27 text

Copyright Drecom Co., Ltd. All Rights Reserved. !27 Pythonで解く 0.14秒 Pythonの方が速い

Slide 28

Slide 28 text

Copyright Drecom Co., Ltd. All Rights Reserved. !28 Pythonで解く 3倍速い 0.42秒 0.14秒

Slide 29

Slide 29 text

Copyright Drecom Co., Ltd. All Rights Reserved. !29 ちょっと待って

Slide 30

Slide 30 text

Copyright Drecom Co., Ltd. All Rights Reserved. !30 リハーサルの方が速い…? Rubyで解く 2

Slide 31

Slide 31 text

Copyright Drecom Co., Ltd. All Rights Reserved. !31 リハーサルやめる benchmark.bmbm benchmark.bm

Slide 32

Slide 32 text

Copyright Drecom Co., Ltd. All Rights Reserved. !32 リハーサルなし 0.18秒

Slide 33

Slide 33 text

Copyright Drecom Co., Ltd. All Rights Reserved. !33 他のデータで…

Slide 34

Slide 34 text

Copyright Drecom Co., Ltd. All Rights Reserved. アイテム数 … 200 Value … 1 〜 10 Cost … 1 〜 10 キャパシティ … 503 !34 テストデータ2 +3

Slide 35

Slide 35 text

Copyright Drecom Co., Ltd. All Rights Reserved. !35 0.02秒 Rubyで解く 2 ʢࢀߟɿͷͱ͖ඵʣ

Slide 36

Slide 36 text

Copyright Drecom Co., Ltd. All Rights Reserved. !36 0.03秒 Pythonで解く 2

Slide 37

Slide 37 text

Copyright Drecom Co., Ltd. All Rights Reserved. !37 0.03秒 Pythonで解く 2 勝った

Slide 38

Slide 38 text

Copyright Drecom Co., Ltd. All Rights Reserved. !38 キャパシティ 500〜599

Slide 39

Slide 39 text

Copyright Drecom Co., Ltd. All Rights Reserved. !39 JITがある!

Slide 40

Slide 40 text

Copyright Drecom Co., Ltd. All Rights Reserved. !40 JITとは 一部をCに変換、コンパイルして実行 → 速くなる 2.6から実験的に組み込まれている

Slide 41

Slide 41 text

Copyright Drecom Co., Ltd. All Rights Reserved. !41 --jit

Slide 42

Slide 42 text

Copyright Drecom Co., Ltd. All Rights Reserved. !42 キャパシティ 500〜599

Slide 43

Slide 43 text

Copyright Drecom Co., Ltd. All Rights Reserved. !43 結論 Pythonの方が速かった

Slide 44

Slide 44 text

Copyright Drecom Co., Ltd. All Rights Reserved. !44 Python vs Ruby https://www.educba.com/python-vs-ruby-performance/

Slide 45

Slide 45 text

Copyright Drecom Co., Ltd. All Rights Reserved. !45 https://www.educba.com/python-vs-ruby-performance/ Python vs Ruby એݴత ಈత

Slide 46

Slide 46 text

Copyright Drecom Co., Ltd. All Rights Reserved. !46 https://www.educba.com/python-vs-ruby-performance/ Python vs Ruby ؆ܿͰ ϚδΧϧ ௚઀తͰ ಡΈ΍͍͢

Slide 47

Slide 47 text

Copyright Drecom Co., Ltd. All Rights Reserved. !47 https://www.educba.com/python-vs-ruby-performance/ Python vs Ruby ؆͕ܿͩ σόοά͠ʹ͍͘͜ͱ΋ ໌ࣔత͕ͩ ΤϨΨϯτͰͳ͍͜ͱ΋

Slide 48

Slide 48 text

Copyright Drecom Co., Ltd. All Rights Reserved. !48 https://www.educba.com/python-vs-ruby-performance/ Python vs Ruby ΢ΣϒΞϓϦͷ ϓϩτλΠϐϯά େྔͷσʔλͱܭࢉ

Slide 49

Slide 49 text

Copyright Drecom Co., Ltd. All Rights Reserved. !49 速さで選んでるんじゃないし。

Slide 50

Slide 50 text

Copyright Drecom Co., Ltd. All Rights Reserved. !50 おまけ - Python書いたら self忘れる return忘れる メソッド呼ぶとき()忘れる メソッドじゃないのに()つけちゃう true → True y if x else z

Slide 51

Slide 51 text

Copyright Drecom Co., Ltd. All Rights Reserved. !51 Rubyの方がいいし。 End