Juliaによる数理最適化

Juliaによる数理最適化

オペレーションズ・リサーチを研究している学部生・大学院生・企業の方におすすめ。

ジャンル
発行年月日
2023/05/01
判型
A5
ページ数
208ページ
ISBN
978-4-339-02934-5
Juliaによる数理最適化
在庫あり
2営業日以内に出荷致します。

定価

3,520(本体3,200円+税)

カートに入れる

電子版を購入

購入案内

  • 内容紹介
  • まえがき
  • 目次
  • レビュー
  • 著者紹介
  • 書籍紹介・書評掲載情報
  • 広告掲載情報

【読書対象】
数理最適化を用いていろいろな分野の問題を解きたい方で,パッケージを用いた迅速なモデル構築の方法を学びたい方を読者として想定している。

【書籍の特徴】
科学技術計算で用いられるプログラミング言語であるJuliaでは,数理最適化のための便利なパッケージが利用可能である。本書では,これらのパッケージを用いて,様々なクラスの最適化問題を解く方法を解説する。取り上げたのは,現実に遭遇する問題を解く際に有用な,適用範囲が広く,よく用いられる最適化問題である。

本書では,錐構造を持つ最適化問題として,線形最適化問題(LP)の他に,2次錐最適化問題(SOCP)と半正定値最適化問題(SDP)も扱っている。最近のアルゴリズム研究とその実装技術の進展により,LPと比較して計算量の大きいSOCPとSDPも,手軽に用いることのできる数理最適化問題とみなせるようになってきた。SOCPとSDPはLPよりもモデル化能力が高く,様々な分野の問題の解決に有効であるが,それらをコンピュータを用いて解く方法を扱った書籍は少ない。本書では,Juliaでこれらの問題を解く方法を解説している。また,離散最適化と連続最適化の両方を扱うことで,読者が遭遇する幅広い問題を解く技術が身につけられるように留意した。

本書で取り扱っている数理最適化問題のクラスは,下記の通りである。
- 連続最適化問題
⇒線形最適化問題,2次最適化問題,2次錐最適化問題,半正定値最適化問題
- 離散最適化問題
⇒最短路問題,最大流問題,整数線形最適化問題,整数2次錐最適化問題

そして,これらを用いて解く問題として取り上げたのは,下記の通りである。
- 輸送最適化問題,巡回セールスマン問題,施設配置問題,信号推定問題,多項式最適化問題,最大カット問題の緩和解法,データ分類問題

【著者からのメッセージ】
数理最適化モデルの数式表現を理解すること自体は,四則演算がわかれば可能である。和の記号や行列に慣れれば中学生・高校生にも特に難しいところはないと思う。一方で,コンピュータを用いて数理最適化モデルを表現して解くためには,入口のところでいくらか手引きが必要かもしれない。本書は,そのような手引きとなることを目指した。いったん入口から入ってしまえば,より複雑なモデルに取り組むことはそれほど難しくないと思う。読者の方々が,本書を数理最適化の豊かな世界への入り口にされることを望んでいる。

本書は,プログラミング言語Juliaを用いて数理最適化問題を解く方法を扱うものである。Juliaは科学技術計算で求められる高い計算パフォーマンスと,手軽なプロトタイプ作成環境の両方を実現する言語である。

「数理最適化問題を解く」といっても,本書は問題を解くアルゴリズム,例えば線形最適化問題を解く単体法自体をプログラムとして実現する方法を扱っているのではない。このようなアルゴリズムは既存のパッケージに全面的に頼っている。本書で扱っているのは,解きたい応用上の問題の答えを,これらの既存のパッケージを用いて得る方法である。数理最適化自体の研究ではなく,数理最適化の研究成果を利用して実際の目の前の問題を解くことに興味がある読者を想定している。例えば,新しく読んだ論文に書かれた数理最適化モデルの数値実験を,ささっと目の前のコンピューターで再現できるようになることを想定している。

用いるのは,四則演算と大小比較がほとんどである。行列の記号が出てくるが,本文を読めばわかる通り,実際に行っている演算は積と和である。読者の好みによって線形代数の教科書があれば参考になるかもしれないが,それすら必要ないと思われる。企業で数理最適化を実践されている方々,異動でこれから数理最適化に取り組む必要のある方々,オペレーションズ・リサーチを専門とする学部生・大学院生の方々には便利に使っていただけるはずである。また,意欲的な小中高生にもぜひ読んでいただきたい。ここに書かれていることが自分で実行できるようになれば,数理最適化とオペレーションズ・リサーチの最新の研究の入り口に立ったといえる。その後は,ぜひこの分野の研究者とコンタクトをとり,最新の研究にチャレンジしてみてほしい。

あまり知られてはいないが,数理最適化は,これまでも,そしてこれからも,理工学の基盤を支える大変重要な分野である。最近では機械学習や量子情報理論の基盤技術となっているが,今後も将来にわたってまだ見ないさまざまな分野の基盤となることは確実である。

いまのわれわれが(超)大規模な数理最適化問題を解くことができるのは,高性能なアルゴリズムと,それを実現するソフトウェアが存在するおかげである。数理最適化のユーザーであるわれわれは,このことを決して忘れてはならない。数万の変数,数万の不等式を難なく扱える線形最適化パッケージがなければ,われわれはそもそも実務規模の線形最適化問題は解けない。このような高い性能は,間違いなく数学的な基礎研究・理論研究に基づいている。その意味で筆者は,数理最適化理論の研究者と,その成果をソフトウェアとして実装し,公開している研究者の方々に最大限の敬意を抱いている。これらの方々が,鋭敏な洞察と緻密さで理論を整備し,ソフトウェアの開発・検証をしてくださるおかげで,われわれユーザーは実務規模の数理最適化問題を解くことができる。

プログラミング言語やそのパッケージの使い方を身につけるには,公式ドキュメントにあたることが最も近道であると考えられる。それは,言語やパッケージの開発者は,それらの特徴を最大限に理解してもらえるようにドキュメントを作成しているからである。したがって,本書の執筆においてもJuliaとその数理最適化パッケージJuMPの公式ドキュメントを頻繁に参照し,それらに示されている例を各所で用いた。公式ドキュメントを読み解く以外の王道的な方法は,新しい言語では特に見つかりにくいが,数理最適化に関しては本書がその1つになることを期待している。

2023年2月
小林和博

1.Juliaの利用環境の構築
1.1 Juliaのインストール
1.2 Juliaでのパッケージ管理
1.3 モデラーとソルバー

2.Juliaの基礎知識
2.1 ベクトル
2.2 行列
 2.2.1 密行列の表現
 2.2.2 疎行列の表現
2.3 線形演算
 2.3.1 ベクトルとスカラーの演算
 2.3.2 ベクトル同士の演算
 2.3.3 行列とベクトルの積
 2.3.4 行列同士の積
2.4 反復処理

3.数理最適化の概要
3.1 変数と定数
3.2 目的関数
3.3 制約条件
3.4 数理最適化問題の分類
 3.4.1 凸最適化問題と非凸最適化問題
 3.4.2 線形最適化問題
 3.4.3 2次最適化問題
 3.4.4 整数最適化問題
 3.4.5 半正定値最適化問題

4.線形最適化問題
4.1 問題例:栄養素の問題
4.2 変数と定数
4.3 目的関数
4.4 制約条件
4.5 定式化
4.6 解法
 4.6.1 単体法
 4.6.2 内点法
 4.6.3 プログラムを用いた求解
 4.6.4 実行可能な問題例の生成
4.7 双対問題
4.8 潜在価格
4.9 輸送最適化問題

5.グラフ最適化問題
5.1 グラフの表現
5.2 最短路問題
 5.2.1 整数最適化問題として解く方法
 5.2.2 ダイクストラ法を用いて解く方法
5.3 最大流問題

6.整数最適化問題
6.1 集合分割問題
6.2 巡回セールスマン問題
 6.2.1 不完全な定式化
 6.2.2 完全な定式化
6.3 施設配置問題

7.2次最適化問題
7.1 ソルバーを用いて解く方法
7.2 信号推定問題

8.2次錐最適化問題
8.1 2次錐と2次錐最適化問題
8.2 多項式最適化問題
8.3 信号推定問題のよい定式化

9.半正定値最適化問題
9.1 最大カット問題の緩和解
9.2 データ分類問題
 9.2.1 線形分類
 9.2.2 2次関数による分類

引用・参考文献
索引

読者モニターレビュー【 JunJun100 様(業務内容:ポスト5G情報通信システムの開発) 】

数理最適化でPythonを用いた書籍は複数あるが、Juliaを用いた初めての書籍である。
想定する読者としては、数理最適化の入門は別の書籍で学んでおり、数理最適化のソルバーを使用したことがあること。実際に手を動かしながら学ぶことができる。ただし、サンプルコードの配布はない。
JuliaはPythonに比べて簡潔にモデリングができるのと高速計算ができる。特に疎行列の表現は簡潔である。
2次錐最適化問題として「信号推定問題」を扱っている。
ノイズフィルタリングの手法として使えることを初めて知った。
数理最適化をJuliaで記述するための非常に参考になる書籍であった。

読者モニターレビュー【 yshr10ic 様(業務内容:AI・数理最適化を用いたシ ステム開発および新規サービス開発) 】

Pythonを用いた数理最適化に関する書籍は多く発売されていますが、Juliaを用いた書籍は本書が初めてかと思います。
本書では、連続最適化問題(線形最適化問題、2次最適化問題、2次錐最適化問題、半正定値最適化問題)と離散最適化問題(最短路問題、最大流問題、整数線形最適化問題、整数2次錐最適化問題)と網羅的に紹介されています。
また、ただ単に最適化問題を解くだけではなく、Juliaの簡単な使い方や最適化パッケージであるJuMPの使い方、数理最適化の概要等が簡潔に説明されています。
Juliaを用いて数理最適化を解きたいという方が最初に読むのにおすすめの1冊です。

読者モニターレビュー【 小泉 孝弥 様 インタープリズム株式会社(業務内容:ソフトフェアの受託開発 】

本書は数理最適化のさまざまな問題を Juliaによる実装を通して学ぶことができる書籍である。ただ問題を解くだけでなく、最適化に用いるパッケージの使い方や、最適化の結果の出力の意味など、今後自分で最適化問題を解く上で理解しておいた方が良いことも解説してくれている。
また、私はJuliaをいままで使用したことがなかったが、数理最適化の問題を記述するのに最低限の解説が書かれているため、問題なく本書のプログラムを読むことができた。なので、Juliaに触ったことがなくても数理最適化の実装に興味のある人にはぜひ読んで欲しいと思う。ただ、本書にはアルゴリズムの理論的な解説などはあまり書かれていないため、理論に興味があるひとにはこの本を読んだあと別の書籍を読むことをおすすめしたい。

amazonレビュー

レビュー,書籍紹介・書評掲載情報一覧

小林 和博(コバヤシ カズヒロ)

数理工学,特に数理最適化の理論と応用の両方に興味を持って研究に取り組んでいます。大学院では連続最適化,特に半正定値最適化と二次錐最適化の効率的解法とそのソフトウェア実装の研究に取り組みました。その後,(国研)海上技術安全研究所では船舶を用いた物流の研究に従事しました。特に,船舶による効率的な物資輸送計画のための数理最適化モデルの開発・実装に取り組み,NEDOやその他の研究プロジェクトにおいて,いくつかの物流企業と実証に取り組みました。大学に移ってからは,陸上での配送計画にも取り組んでおり,大手電機メーカーとの共同研究で実配送の基盤となる数理モデルの開発を実施しました。また,連続最適化の研究も再開し,特に最先端の理論的成果をソフトウェアとして利用可能にする技術の開発に興味を持っています。

電子情報通信学会 2024年1月号 掲載日:2024/02/28
「電子情報通信学会誌」107巻,1号,2024/1/1,83頁,copyright(c)2023 IEICE

レビュー,書籍紹介・書評掲載情報一覧

掲載日:2023/09/06

電子情報通信学会2023年ソサイエティ大会プログラム

掲載日:2023/09/05

人工知能学会誌「人工知能」2023年9月号

掲載日:2023/08/17

「数理科学」2023年9月号

掲載日:2023/08/01

電子情報通信学会誌2023年8月号

掲載日:2023/07/07

読売新聞広告掲載(2023年7月7日)

掲載日:2023/07/01

電子情報通信学会誌2023年7月号

掲載日:2023/07/01

日本オペレーションズ・リサーチ学会誌「オペレーションズ・リサーチ」2023年7月号

掲載日:2023/06/30

芸術科学会誌「DiVA」54号

掲載日:2023/05/17

情報処理学会誌「情報処理」2023年6月号広告

掲載日:2023/04/03

電子情報通信学会誌2023年4月号