「Pythonではじめる数理最適化 ケーススタディでモデリングのスキルを身につけよう(オーム社)」のサポートページです。 プログラムの解説は、本書籍を参照してください。
Pythonで実務に使える数理最適化のスキルを身につけよう!
本書は、Pythonを用いた数理最適化の入門書です。Pythonを使ってさまざまな課題を実際に解いてみることで、数理モデルを実務で使いこなす力を身につけます。
この本の特徴は、数理最適化のアルゴリズム自体ではなく、数理最適化を用いた課題解決に重きを置いている点です。ビジネスなどにおける課題を数理最適化で解く際に現場で発生しうる試行錯誤が多分に盛り込まれており、実務における手順や気をつけるべきポイントを学習することができます。この本の構成
本書は二部構成です。
第I部はチュートリアルです。中学校で習う連立一次方程式や高校で習う線形計画法を題材として、数理最適化の基礎的な考え方とPythonによる初歩的な実装を学びます。シンプルな課題設定なので、数学的な難しさを感じることなくPythonに集中して基礎を学習することができます。第II部はケーススタディです。
実際に社会で起こりうる、さまざまな課題を数理最適化によって解いていきます。 学校のクラス編成やサークル活動における学生の乗車グループ分けなどの学生にとっても身近な課題や、キャンペーンの効果最大化や効率のよい配送計画の立案などのビジネスにおいてたびたびぶつかる課題などを解いていくことで、手順や注意点、効率のよい方法などが学べます。このような方におすすめ
◎ 数理最適化の実務応用について知りたい方
◎ 施策の効果最大化や効率化に取り組むビジネスマン(エンジニア・マーケター・リサーチャーなど)
◎ 情報・経済・経営系などの学部や学科の学生
◎ データサイエンティストを志す方
2026年9月25日に Python ライブラリ PuLP が3系から4系にメジャーバージョンアップしました。PuLP 4系では本書のサンプルコードをそのまま実行できないことに注意してください。本書では requirements.txt にてPuLP 3.2.2 を推奨しています。
書籍のサンプルコードを実行するため、PuLP 3.2.2 をインストールしてください。PuLP 3.2.2 には Python 3.9 以上が必要です。
pipを利用する場合:
pip install "pulp==3.2.2"PuLP 4系はPython 3.12 以上が必要です。また、PuLP 4系では ソルバーのインストール や コードの修正 が必要です。主な変更点を以下の①〜④に示します。 その他の変更点については、PuLP公式の移行ガイドをご確認ください。
PuLP 4系ではCBCソルバーが標準で同梱されなくなったため、別途インストールが必要となる場合があります。
pipを利用してCBCソルバーをインストールする場合は、ターミナルで次のコマンドを実行してください。
python -m pip install "pulp[cbc]"PuLP 3系:
prob = pulp.LpProblem("problem")
x = pulp.LpVariable("x", cat="Integer")PuLP 4系:
prob = pulp.LpProblem("problem")
x = prob.add_variable("x", cat="Integer")PuLP 3系:
status = prob.solve()
print(pulp.LpStatus[status])PuLP 4系:
stats = prob.solve()
print(stats.status_str)PuLP 4系では PULP_CBC_CMD が廃止されたため、代わりに COIN_CMD を利用してください(本書第5章)。
PuLP 3系:
solver = pulp.PULP_CBC_CMD(msg=False)
prob.solve(solver)PuLP 4系:
solver = pulp.COIN_CMD(msg=False)
prob.solve(solver)- 初版の正誤表はこちらのリンクをご覧ください。
- 第二版の正誤表はこちらのリンクをご覧ください。
書籍の誤植を発見された方はIssueを登録して頂けますと幸いです > こちらから登録できます
PuLP 3.2.2 に合わせて、以下のバージョンで動作確認しています。
| 分類 | パッケージ名など | バージョン |
|---|---|---|
| プログラミング言語 | Python3 | 3.9 |
| 対話型実行環境 | jupyter | 1.0.0 |
| 対話型実行環境 | ipython | 7.22.0 |
| 対話型実行環境 | notebook | 6.3.0 |
| データ処理 | pandas | 1.3.0 |
| 数理最適化 | cvxopt | 1.2.6 |
| 数理最適化 | pulp | 3.2.2 |
| 並列処理 | joblib | 0.17.0 |
| データ可視化 | matplotlib | 3.3.4 |
| データ可視化 | seaborn | 0.11.1 |
| 科学技術計算 | numpy | 1.20.1 |
| WEBフレームワーク | flask | 2.0.1 |
| WEBフレームワーク | fastapi | 0.81.0 |
| アプリケーションフレームワーク | streamlit | 1.27.1 |
| HTMLの処理 | lxml | 4.6.3 |
| HTTPリクエスト | requests | 2.27.1 |
- 岩永 二郎(株式会社エルデシュ)
- 石原 響太(ALGORITHMIC NITROUS 株式会社)
- 西村 直樹(株式会社リクルート)
- 田中 一樹(株式会社ディー・エヌ・エー)
