Slide 1

Slide 1 text

おやつは300円まで! の最適化を模索してみた パーソルキャリア株式会社 リードデータアナリスト 小澤 陽介 2025年6月4日 ※本資料は2025年6月時点の情報です

Slide 2

Slide 2 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 2 会社紹介(自己紹介) 01 はじめに 02 おやつは300円まで! 03 組み合わせ最適化と応用例の紹介 04 試してみた解法 05 最後に 06

Slide 3

Slide 3 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 3 会社紹介(自己紹介)

Slide 4

Slide 4 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 4 小澤 陽介 Yosuke Kozawa リードデータアナリスト パーソルキャリア株式会社 経歴 前職では機械系メーカーR&Dにて数理最適化の アプリケーション開発及び工程可視化に従事。 パーソルキャリア入社後、アナリストとして、 主に生成系AIに関連するアプリケーション開発 や検証に従事。現在はグループ企業向けのML推 薦システム構築に携わっている。 出身:福岡(ラーメンは豚骨) 趣味 数式いじり(解析学), プログラミング 最適化アプリケーション開発 歌, お料理など PROFILE

Slide 5

Slide 5 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 社 名 本 社 創 業 資 本 金 事 業 内 容 従 業 員 数 5 パーソルキャリア株式会社 東京都港区 1989年6月 1,127百万円 人材紹介サービス、求人メディアの運営、 転職・就職支援、採用・経営支援、 副業・兼業・フリーランス支援サービスの提供 7,048名 (有期社員含む グループ会社出向中の者は除く 2025年3月1日時点)

Slide 6

Slide 6 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 6

Slide 7

Slide 7 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 7 はじめに

Slide 8

Slide 8 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 8 おやつは300円まで!を組み合わせ最適化に落とし込んでみました ついでに2種類の言語で計算スピードを比較してみました 楽しんでもらえたら幸いです はじめに

Slide 9

Slide 9 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 9 おやつは300円まで!

Slide 10

Slide 10 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 10 • 遠足に行く子どものおやつを選ぶ • おやつは合計で300円までしか選べない • 出来るだけ合計のカロリーが高くなるようにしたい おやつは300円まで!

Slide 11

Slide 11 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 11 オススメ一覧より一部抜粋 全部で50種類のお菓子をピックアップしている これらのお菓子から • 300円以内になる • カロリーが最大になる 組み合わせを選んでいく お菓子の種類について 駄菓子 お値段[円] カロリー[kcal] ポテトフライ 30 62 うまい棒 12 43 キャベツ太郎 30 81 ベビースターラーメン 33 105 餅太郎 10 32 ビスコ 43 108 チョコバー 60 185 チロルチョコ 23 58 ハイエイトチョコレート 50 63 プチプチ占いチョコ 30 34 ブラックサンダー 35 112 チョコボール 92 162 パインアメ 155 18.7 棒付き水飴 60 123 コンペイトウ 460 190 ボンタンアメ 120 341 キュービィロップ 162 63 餅飴 35 42.2 森永ミルクキャラメル 146 21

Slide 12

Slide 12 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 12 • 0は購入しない, 1は購入する • “101”なら, ポテトフライとキャベツ太郎を購入す るという意味 • 3種類だと, 全部足しても72円(300円以内) • 全部買うのが最適 組み合わせを1つ1つ調べると?3種類で考えてみる 組合せ ポテトフライ うまい棒 キャベツ太郎 合計 1 0 0 0 0kcal/0円 2 0 0 1 81kcal/30円 3 0 1 0 43kcal/12円 4 0 1 1 124kcal/42円 5 1 0 0 62kcal/30円 6 1 0 1 143kcal/60円 7 1 1 0 105kcal/42円 8 1 1 1 186kcal/72円

Slide 13

Slide 13 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 13 組み合わせを1つ1つ調べると?50種類で考えてみる 組み合せ ポテトフライ うまい棒 ... ウメトラ兄弟 合計cal/値段 1 0 0 ... 0 0/0 2 1 0 ... 0 62/30 3 0 1 ... 0 43/12 4 1 1 ... 0 105/42 ... ... ... ... ... ... 250 = 1125899906842620 (1125京8999億 684万2620) 1 1 ... 1 4637.1/3737

Slide 14

Slide 14 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 14 • 組み合わせは2^50≅10^15.05通り • ノートPCの計算能力は, 1秒あたり500回程度 • 計算時間は, ざっくり10^15.05÷500=2.55×10^12秒程度 • 年に直すと, ざっくり7万1404年程度... • 実は, 解くのがとても難しい,組合せ最適化問題である. おやつは300円まで!は難しい問題

Slide 15

Slide 15 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 15 もし, 組み合わせ最適化の効率的な解法を知らなかったら...

Slide 16

Slide 16 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 16 お母さん! 300円以内でカロリー が最大になるように お菓子買って! 7万年くらい かかるから 諦めてね

Slide 17

Slide 17 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 17 ...と, 言うわけにもいかないので, 効率的な解法を試してみます

Slide 18

Slide 18 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 18 試してみた解法

Slide 19

Slide 19 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 19 • 大きく分けて, 2種類の方法がある 近似解法 厳密解法 おやつは300円まで!を2種類の方法で解いてみる 解法:どのような手法が用いられているのか?

Slide 20

Slide 20 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 20 • 貪欲法の考え方 問題の要素ごとに評価値を与える 評価値が高い順で取り込むこと 解を得る • 貪欲法のメリット/デメリット メリット 実装が簡単 多くの問題で多項式時間で終わる デメリット 問題によっては厳密解が得られない 近似解法: 貪欲法

Slide 21

Slide 21 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 21 • コスパを求める • コスパ順でソートする • コスパが高い駄菓子を選ぶ • ナップサックに入れても300円を超えないならナッ プサックに入れる • 全ての駄菓子をチェックし終わったら終了 近似解法: 貪欲法

Slide 22

Slide 22 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 22 チョコバーまでは順番に加えていってOK(207円) 近似解法: 貪欲法

Slide 23

Slide 23 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 23 ミレービスケットは高いのでスキップ(391円になる) 近似解法: 貪欲法

Slide 24

Slide 24 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 24 きびだんごは加えてOK(257円) 近似解法: 貪欲法

Slide 25

Slide 25 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 25 ボンタンアメとたべっ子どうぶつはスキップ 近似解法: 貪欲法

Slide 26

Slide 26 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 26 キャベツ太郎は追加してOK(287円) 近似解法: 貪欲法

Slide 27

Slide 27 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 27 チロルチョコからビッグカツはスキップ 近似解法: 貪欲法

Slide 28

Slide 28 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 28 どんぐりガムは追加してOK(298円) それ以降はスキップ 2円以下のお菓子が存在しない... 近似解法: 貪欲法

Slide 29

Slide 29 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 29 近似解法: 貪欲法の答え 名前 値段[円] カロリー[kcal] ヤングドーナツ 47 195 クッピーラムネ 10 39 うまい棒 12 43 餅太郎 10 32 ブラックサンダー 35 112 ベビースターラーメン 33 105 チョコバー 60 185 きびだんご 50 145 キャベツ太郎 30 81 どんぐりガム 11 20.7 合計 298 957.7

Slide 30

Slide 30 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 30 • 整数計画法の考え方  「〇〇を買う or 買わない」を「1 or 0」で置き換える  制約と最大化(or 最小化)する式をあてはめる • 数理最適化のメリット/デメリット • メリット 厳密に最適解が得られる • デメリット 数理最適化, 特有のソルバによるプログラミングのドメイン知識が必要であるため 実装のハードルが若干高い 計算時間が長くなる可能性がある 厳密解法: 整数計画法

Slide 31

Slide 31 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 31 • 実用的には数理最適化ソルバを使用した方が良い(実装力に自信があるなら話は別) • 実用なソルバは何種類かあるが, 個人的にOR-Toolsがお勧め 厳密解法: 整数計画法

Slide 32

Slide 32 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 32 • 要求を整理して、 厳密解法: 整数計画法

Slide 33

Slide 33 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 33 • 定数、変数を定義して、 厳密解法: 整数計画法

Slide 34

Slide 34 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 34 • 制約式、目的関数を定義して、 厳密解法: 整数計画法

Slide 35

Slide 35 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 35 • コーディングして、 厳密解法: 整数計画法

Slide 36

Slide 36 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 36 厳密解法の答え 名前 値段[円] カロリー[kcal] うまい棒 12 43 ベビースターラーメン 33 105 餅太郎 10 32 ビスコ 43 108 チョコバー 60 185 ブラックサンダー 35 112 クッピーラムネ 10 39 ヤングドーナツ 47 195 きびだんご 50 145 合計 300 964

Slide 37

Slide 37 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 37 近似解法と厳密解法の比較: 解の品質について 名前 値段[円] カロリー[kcal] 名前 値段[円] カロリー[kcal] うまい棒 12 43 うまい棒 12 43 きびだんご 50 145 きびだんご 50 145 キャベツ太郎 30 81 クッピーラムネ 10 39 クッピーラムネ 10 39 チョコバー 60 185 チョコバー 60 185 どんぐりガム 11 20.7 ビスコ 43 108 ブラックサンダー 35 112 ブラックサンダー 35 112 ベビースターラーメン 33 105 ベビースターラーメン 33 105 ヤングドーナツ 47 195 ヤングドーナツ 47 195 餅太郎 10 32 餅太郎 10 32 合計 298 957.7 合計 300 964 0-1整数計画法 貪欲法 • 解の品質は, やはり厳密解法の方が良い • しかし, 良いと言っても0.7%程度

Slide 38

Slide 38 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 38 • 貪欲法 概ねC#の方が早い 純粋に言語の速度が出ている • 整数計画法 概ね同じくらい いずれの言語でもOR-Toolsを呼び出しているだけなので, 速度はほとんど変わりない 近似解法と厳密解法の比較: 速度について

Slide 39

Slide 39 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 39 • 実用的には, そこそこの解(近似解)で充分であることが多い • 問題サイズによっては, 厳密解法でもさほど時間が掛からない場合も多い • ケースバイケースで言語, 手法等を使い分けるのが望ましい 近似解法と厳密解法の比較まとめ 近似解法 厳密解法 計算速度 速い 遅い 最適性 最適解とは限らない 最適解である 使いどころ そこそこの品質の解が 欲しい時 問題のサイズが充分に小さ い時 今回の例での解 957.7kcal 964kcal

Slide 40

Slide 40 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 40 最後に

Slide 41

Slide 41 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 41 • 今回は駄菓子選びを組み合わせ最適化に落とし込み, 解法の比較についてお話しました. • 他にも解法はあるかと思いますが, 代表的で分かりやすい解法を選んできたつもりです. • 最適化, ちょっと面白いかも?と思ってもらえたら幸いです. • 最後ですが, お子様に同じ問題を持ち込まれた際には, お子様の好きな順番でお菓子を買っ てあげて下さい. 最後に

Slide 42

Slide 42 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 42 Appendix

Slide 43

Slide 43 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 43 • OR-Tools • Googleが開発している無料ソルバ • 商用利用可, コードの開示義務ナシ • 対応言語が多い(C++, Python, Java, C#(.NET)) • 無料ソルバにしては結構早い • PuLP • Python専用の数理最適化モデリング言語 • COINというソルバが同梱されており, 普段はCOINを使う • GLPK, CPLEX, GUROBI等の商用ソルバとの連携が可能 • COINだけだとちょっと遅いかも... Appendix:数理最適化の求解ツールについて

Slide 44

Slide 44 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. 44 さまざまなテーマで事例や知見を学ぶ IT・テクノロジー人材のための勉強会コミュニティ 「TECH Street」でも当社の事例を公開しています。 「techtekt(テックテクト)」は、パーソルキャリアのエンジニアブログです。 “みんなの「はたらく」をテックでつくる”をコンセプトに、 技術、組織、学びなど、さまざまな情報を発信しています。

Slide 45

Slide 45 text

Copyright © PERSOL CAREER CO., LTD. All Rights Reserved. ご清聴ありがとうございました 45