Skip to content
ohmshaPublic

About

岩永二郎・石原響太・西村直樹・田中一樹 共著『Pythonではじめる数理最適化-ケーススタディでモデリングのスキルを身につけよう-』(オーム社、2021年)のサポートページです。

Resources

Stars

169 stars

Watchers

6 watching

Forks

Repository files navigation

Pythonではじめる数理最適化
〜ケーススタディでモデリングのスキルを身につけよう〜

「Pythonではじめる数理最適化 ケーススタディでモデリングのスキルを身につけよう(オーム社)」のサポートページです。 プログラムの解説は、本書籍を参照してください。

本書について

Pythonで実務に使える数理最適化のスキルを身につけよう!

本書は、Pythonを用いた数理最適化の入門書です。Pythonを使ってさまざまな課題を実際に解いてみることで、数理モデルを実務で使いこなす力を身につけます。
この本の特徴は、数理最適化のアルゴリズム自体ではなく、数理最適化を用いた課題解決に重きを置いている点です。ビジネスなどにおける課題を数理最適化で解く際に現場で発生しうる試行錯誤が多分に盛り込まれており、実務における手順や気をつけるべきポイントを学習することができます。

この本の構成
本書は二部構成です。
第I部はチュートリアルです。中学校で習う連立一次方程式や高校で習う線形計画法を題材として、数理最適化の基礎的な考え方とPythonによる初歩的な実装を学びます。シンプルな課題設定なので、数学的な難しさを感じることなくPythonに集中して基礎を学習することができます。

第II部はケーススタディです。
実際に社会で起こりうる、さまざまな課題を数理最適化によって解いていきます。 学校のクラス編成やサークル活動における学生の乗車グループ分けなどの学生にとっても身近な課題や、キャンペーンの効果最大化や効率のよい配送計画の立案などのビジネスにおいてたびたびぶつかる課題などを解いていくことで、手順や注意点、効率のよい方法などが学べます。

このような方におすすめ
◎ 数理最適化の実務応用について知りたい方
◎ 施策の効果最大化や効率化に取り組むビジネスマン(エンジニア・マーケター・リサーチャーなど)
◎ 情報・経済・経営系などの学部や学科の学生
◎ データサイエンティストを志す方

【重要】PuLPのバージョンについて

2026年9月25日に Python ライブラリ PuLP が3系から4系にメジャーバージョンアップしました。PuLP 4系では本書のサンプルコードをそのまま実行できないことに注意してください。本書では requirements.txt にてPuLP 3.2.2 を推奨しています。

PuLP3系のインストール方法(推奨)

書籍のサンプルコードを実行するため、PuLP 3.2.2 をインストールしてください。PuLP 3.2.2 には Python 3.9 以上が必要です。

pipを利用する場合:

pip install "pulp==3.2.2"

PuLP4系を利用したい場合

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 株式会社)
  • 西村 直樹(株式会社リクルート)
  • 田中 一樹(株式会社ディー・エヌ・エー)

About

岩永二郎・石原響太・西村直樹・田中一樹 共著『Pythonではじめる数理最適化-ケーススタディでモデリングのスキルを身につけよう-』(オーム社、2021年)のサポートページです。

Resources

Stars

169 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages