Nagiさんのブログ(仮)

元文系の理系学生による理系学生のためのブログ(仮)

最適化(数理計画)のおすすめ教科書と勉強法

1. 最適化(数理計画)のおすすめ教科書!

何かの縁で最適化にであったのはいいけれど、どんな本で勉強したらいいか分からないという方に向けて、僕自身が実際に読んだ本の中からおすすめを紹介します。

また、最適化をサラッと知りたいとか、数式なしで知りたいというような方はネットで検索するのが一番良いと思います。

ここでは、しっかりと理論の基礎を学びたいという方向けに書きますので、よろしくお願いします。

 

 

1. 最適化と変分法(寒野 善博・土谷 隆 / 丸善)

 

基礎系 数学 最適化と変分法 (東京大学工学教程)

基礎系 数学 最適化と変分法 (東京大学工学教程)

 

 

僕は圧倒的にこの本をおすすめします!

大学の教科書としてはかなり新しい部類になりますが、とても素晴らしい本です。

個人的にこの本の良い点はバランスの良さだと思います。

最適化において知っておくべき基礎を網羅し、なおかつ丁寧に書かれています(簡単という意味ではありません)。

最適化を学んでいる、あるいはこれから学ぶという方は必携だと思います。

 

 

注意事項としては、数学的知識の面です。微分積分(2変数関数も)、線形代数偏微分は必要です。したがって、文系の方で数学が苦手な方はまず上記の数学を勉強をしてから(あるいはしながら)でないとかなり厳しいと思います。もちろん理系の方でも数学が苦手なのであれば復習が必要です。

また、連続最適化のことのみ書かれています。離散のほうは、同シリーズの離散数学の方に書かれています(が、そっちは読んでいません)。

 

 

個人的にはこの本を軸に勉強することがおすすめです。ですので、以下は副読本としておすすめなものを挙げさせていただきます。

 

 

2.  最適化の数学(茨木 俊秀 / 共立出版株式会社)

 

最適化の数学 (共立講座 21世紀の数学 13)

最適化の数学 (共立講座 21世紀の数学 13)

  • 作者:茨木 俊秀
  • 発売日: 2011/06/23
  • メディア: 単行本
 

 

この本は非線形計画のところで特にお世話になりました。

1の本では書いてないことや、1の本よりも噛み砕いた表現で書かれていることがあるので持っていても良いかもしれません。僕の大学の小さな図書館にも置いてあったので、きっと多くの大学図書館で置いてあると思います。

 

 

 

3. 最適化法(田村 明久・村松 正和 / 共立出版株式会社)

 

最適化法 (工系数学講座 17)

最適化法 (工系数学講座 17)

 

 

この本にも何度も助けられました。個人的には1の本の双対理論(Farkasの補題)で苦しんでるときに助けてもらいました。

具体例が多いので、わからないところを参照すると理解が進むかもしれません。

 

 

4. 最適化とその応用(矢部 博 / 数理工学社)

 

工学基礎 最適化とその応用 (新・工科系の数学)

工学基礎 最適化とその応用 (新・工科系の数学)

  • 作者:矢部 博
  • 発売日: 2006/04/01
  • メディア: 単行本
 

 

これは割と最適化では定番な本のようですが、サラッと読んだ感じ僕には合わなかったので副読本として使いました。この本も1の本のわからないところを調べるのに使うと良いともいます。個人的には双対ギャップのところで助けられました。

 

 

2. おすすめの勉強法

これは最適化に限った話ではないですが、おすすめの勉強法を紹介します。

特に1の本で勉強する際に意識するといいことを2つ紹介します。

 

 

 

1. 具体例を書く

 

これはとても大切です。例えば定理などで任意のxについて~とかよく出てきます。こういう一般的な議論の場合、抽象的過ぎたり、式が難しかったりでイメージができないことがよくあります。このときは、とりあえず簡単な数や、簡単な関数で本当に定理等が成り立っているか?を確認すると理解が進む場合があります。逆に、これをしないでいるともやもやしたまま次に進むことになるのでいつか行き詰ってしまい、またそこまで戻って勉強ってことにもなりかねません。

とりあえず「わかんないときは簡単な具体例で書く!」ことがとても重要です。

 

(ちなみにこれは大学の担当教員の先生から教わったアドバイスで、実際非常に役立ちました。先生、本当にありがとうございます。)

 

 

簡単な具体例を書いてもわからないときはおそらく「計算ができない」ことが大半だと思います。このときはいったん最適化の本を閉じて、数学の本を開きましょう。

 

 

 

2. プログラミングで確認してみる

 

個人的には難易度が高いことだと思うので必須と言わけではありませんが、プログラミングができる人は例えば「最急降下法」や「ニュートン法」や「準ニュートン」など、紹介されているアルゴリズムを自分で書いてみましょう。理論で学んだものがちゃんと現実で動くことがわかると感動するし、これからの勉強のモチベーションにも繋がります。

 

 

 

 

3. 最後に

ここまで読んでくださってありがとうございました。この記事がこれから最適化を勉強する方の助けになれば幸いです。また、あくまで個人的な意見ですので自分に合ったやり方があれば、それが一番良いと思います、

Twitterやコメントで感想などを私に書いていただけると嬉しいです。

また、amazonのリンクが張ってますが私には1円も入らない(収益化のやり方知らなし面倒くさい)ので、ここのリンクから購入しなくても大丈夫です。

 

それでは、また!