最適化一口話

仕事として数理最適化を実践している立場から、その中身や可能性について概説しております。

「最適化」のち「数理計画法」再び「最適化」

「最適化」という言葉を Web で探すと

スマホ最適化、ディスク最適化、画像最適化・・

といった感じのものがひっかかってきます。 「今よりも良い状態」を実現する手段といったニュアンスですね。 じつは学術的な数理最適化の分野の「最適」はもっと杓子定規に定義されているのをご存知でしょうか。研究論文とかでは、制約を満たすだけの答は「実行可能解」という格下の名前で呼ばれ、今得られているよりも目的関数値を良くする実行可能解が存在しないことを「証明」できて初めて最適解に昇格するのです(だからでしょうか、最適解は x* とか星を付けて「偉さ」を示すのが慣例)。 ですので、厳密解法という、いつかは最適解を出力することを謳っているアルゴリズムではそれよりも良い実行可能解が存在しない証明にかなりの労力をかけます。 その意義はここに示した通りですが、難しい問題だと答は見つかってるのに延々と「証明」を続けてメモリを使いつくしてしまったりする。それではあまりに悲しいし、とにかく制約を満たす方法だけ知りたい場合もあります。

そんな融通の効かないこと言ってないでそこそこ良い解を速く出そうよ

という発想が「近似解法」という、厳密解法に対置される一つの解法の流れを進化させてゆきました。 じつはこちらの方が「最適化」という言葉の一般の意味に近いとも言えます。

実務に数理最適化を応用しようとする中、我々がお客さまと話す中で気づいたのは

「最適」は一つに定まらない

という悟りです。世の中には各人が自分の好きに解釈できる程度に曖昧なので、 なんとなく意思の疎通が取れたような気になってしまう言葉がありますが、 実は「最適化」はその代表格。「最適化しよう!」という点では仲良くしてたのに何を優先するかの各論に入ると途端に対立して話がまとまらなかったりする担当者の方々が居たり。 まあまあ、まずは今より良くしましょうよ、という感じでスパイラルに話を進めるのが我々の数理最適化の実務における常套的プロセスになっております。

一時期のことですが私、「最適化」という言葉の曖昧さが嫌で「数理計画法」という言葉を好んで使っていた時期があります。この時期に私が書いた資料のタイトルが、

 「最適化読本」-数理計画法って何なのさ-

となんだかわけがわからなくなっているのはそんなわけです。 「数理計画法」なら数理的なルールをモデルで抽象化して表現して何らかの答を見出す手法をあまねく指す言葉ですから、曖昧さがない。 ただ、なんだかとっつきにくいし、一回聞いただけでは頭に入りにくい。

近似解法を使ってシフトスケジュールなんかを求めているのは、 じつは学術的な最適化ではなく、「スマホやディスクの最適化」に近いんだから、 名実共に我々は一般の意味の「最適化」をやっていると言ってもよいのではないかな、と今は考えています。