読んだ: 最適化問題入門 錐最適化・整数最適化・ネットワークモデルの組合せによる(Pythonによる問題解決シリーズ 第2巻)

出版社のWebサイト

www.kindaikagaku.co.jp

より詳細な目次(PR記事)

prtimes.jp
公開していい情報なら出版社のWebサイトにも置いてほしいな……

感想

正直なところ私が求めていたものとは違ったな……というのが感想です。ほぼ流し読みだったので誤り等あればご容赦ください。

とにかく数式(と行列)が多い

導入に近い第2章で問題の分類が説明されているのですが、ここで数式上の定義を網羅することを徹底していたため圧倒されました。また、本書の全体を通しての方法がPythonで数式をモデリングし、ソルバで解を求めるという方法である以上、実際の問題を解くサンプルにおいても数式が多用されています。(もっとも、このような最適化問題を解くのであればこの程度の数式と行列は扱えなければならない、ということであれば否定はできません)

解を求める部分がソルバに投げられており、コードはモデリングに終始している

私が求めていたものと違った部分の1つです。本書では

  1. Pythonで問題のモデリング
  2. ソルバで解く

の2段階で問題を解くため、実コードはほぼほぼモデリングのみで解を求める部分は言ってしまえばブラックボックスとなっております。そのため、他言語で実装しなおすということが難しいです。(より正確に言えば、ソルバのInputとして対応している言語でしか実装しなおせないです)何を目的として本書を読むかにもよりますが、人によっては2章以外は流し読みでもよさそうな内容になってしまっています。(私がそうでした)
また、ナップサック問題のようなある種最適化問題以外のコンテキストで出てくる問題もソルバを用いて解を求めるようになっており、その部分についてはソルバを用いない解に慣れている私には冗長な解法となっているように感じました。(そしてナップサック問題アルゴリズムだけ何故かPythonコードではなく擬似コードなんですよね……汎用アルゴリズムとして記載しているからだとは思いますが)

近似解を求める方法は記載されていない

私が求めていたものと違った部分のもう1つです。本文中ではメタ解法として現実的な時間で近似解を求める方法があることは提示されていますが、そこに関してより具体的な方法は提示されていなかったように思います。もしかしたらソルバ実行時のパラメータにあるのかもしれませんが。ヒューリスティックな解法の実装をある種期待していたので、そこは肩透かしな部分でした。

錐最適化の使いどころがいまいちわからなかった

線形最適化の変形問題として扱えられそうなのですが、これの使いどころがいまいちわかりませんでした。実問題例との対応も正直なところ十分とは思えない感じでしたので……

組み合わせどこ……?

問題を組み合わせることが強調されていますが、どこにあるか分かりませんでした。(流し読みだったため読み落とした可能性は否定できません)