見出し画像

岩永二郎、石原 響太 、西村 直樹 、田中 一樹「Pythonではじめる数理最適化」

🌿どんな本か

数理最適化の基礎から実務での応用までを学ぶことができる入門書。

Python言語を使って具体的な問題を解くプロセスを通じて、数理モデルの構築と最適化技術の実装スキルを身につけることができます。

🌿数理最適化とは?

最も効率的な組み合わせを見つけ、無駄や欠点を最少にする、ということです。

🌿例

簡単に言えば、500円という制約を元にした遠足のお菓子のチョイス問題のこと。

誰もが経験し、必ずオーバーしたことをドヤる生徒がいるアレです。

まず、遠足に持っていくお菓子の候補をリストアップします。

例えば、チョコレート、クッキー、ガム、ポテトチップスなどです。

それぞれのお菓子には価格と満足度があります。満足度は、お菓子を食べたときの幸福感や好みに基づいています。

次に、500円という予算内で、これらのお菓子から最も満足度が高くなるように選びます。

ただし、お菓子は重複して選ばないとします。

例えば、チョコレートが100円で満足度が50、クッキーが150円で満足度が60、ガムが50円で満足度が10、ポテトチップスが200円で満足度が90だとします。

この場合、500円の予算で最も満足度が高くなる組み合わせを選ぶと、チョコレート、クッキー、ポテトチップスを選ぶと合計450円で満足度は200になります。

ガムを加えても予算内ですが、満足度は210となり、満足度が最大になります。

このように、数理最適化は、与えられた制約(この場合は予算)のもとで、目的(満足度の最大化)を達成するための最良の選択を見つける手法です。

🌿本書では

・割引クーポンキャンペーンの効果最大化

・輸送車両の配送計画

・乗車グループ分け問題のAPIとWebアプリ作成

・学校のクラス編成

・商品推薦のためのスコアリング

が取り上げられています。

🌿学校のクラス編成とは?

生徒をバランス良く振り分けるのが正解とされています。

一般的に目立つ子や、成績の良い子たちだけで固めるという方法は取られていません。

ですので、いくつかの条件を作り、それら全てが成り立つパターンを見つけたいわけです。

これは人間よりも、コンピューター計算の方が得意な分野です。

本書ではクラス編成問題に以下の条件が出てきます。

①全生徒をそれぞれ1クラスに割り当てる

②318人の生徒がいて、8クラスにしたい。であるため、各クラスは39人以上、40以下にしたい。

③各クラスの平均点は、学年平均±10にしたい。

④リーダー気質の生徒は17人いるので、各クラスに2人以上割り当てたい。

⑤特別な支援が必要な生徒が4人いるため、各クラスに1人以下にしたい。

⑥双子などの特定ペアの生徒を同一クラスにしない。

という6つの条件をクリアするパターンの解を求めるのが数理最適化の一例です。

🌿得られるもの

まだ数理最適化のビジネスへの普及はマイナーですが、ドライバー不足を抱える物流業界や運送業者は急務と言えるかもしれません。

例えば、ムダのない最適な経路を数学的に見つける、ということです。

また、人員配置にも使えます。

例えば、スタッフ100人を抱える工場で、全員がA、B、Cという3つのスキルを持っているとします。

そしてそれぞれに生産性データがあるとします。

この条件で、最適な配置を見つけるということです。

🌿工場の人員配置の最適化問題

以下の例は私が考えた架空の物です。

工場にはスタッフが10人おり、それぞれが、

「製品の組み立て」
「品質検査」
「機械のメンテナンス」

という3つのスキルを持っています。

スタッフの名前はアルファベット、

スキルレベルは1〜9とします。

| 名前 | 製品の組み立て | 品質検査 | 機械のメンテ |

| A | 5 | 3 | 7 |
| B | 6 | 7 | 4 |
| C | 2 | 8 | 6 |
| D | 9 | 5 | 3 |
| E | 4 | 6 | 8 |
| F | 7 | 2 | 5 |
| G | 3 | 9 | 2 |
| H | 8 | 4 | 1 |
| I | 1 | 5 | 9 |
| J | 4 | 6 | 7 |

工場の目標は、1日8時間の労働で、製品を1000個生産し、全ての製品を検査し、15台の機械をメンテナンスすることです。

スキルレベルに応じて、各スタッフの1時間あたりの生産性は以下のようになります。

・製品の組み立て: スキルレベル × 10個
・品質検査: スキルレベル × 15個
・ 機械のメンテナンス: スキルレベル × 2台

これらのデータを基に、各スタッフを最適な作業に割り当てます。

例えば、スタッフAは機械のメンテナンスのスキルレベルが最も高いので、その作業に割り当てると効率的です。

しかし、大切なのは全体の最大値が最も高くなる組み合わせを見つけることなので、レベル9のスキルがあっても、レベル7の人に作業を渡すこともありえます。

数理最適化は「全体の最大値」を求める手法だからです。

お菓子の例と同じですね。

※コストカットなら全体の最小値を求めます

🌿リカレント教育と生涯学習にどう活かせるか

問題解決のための数理的アプローチを学ぶことは、特別なスキルとして、特にデータサイエンティストの必須スキルになると思われます。

また、Excelのソルバーでも可能なので、データサイエンティストでなくても人員配置などの業務で使い、効率化に強い人材はキャリアアップにも繋がる可能性があると思われますので、覚えて損のないスキルだと言えます。

※Excel数理最適化の本も近々UPします


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?