数理最適化の入門知識まとめ(1)
数理最適化とは
- 与えられた制約条件の中で与えられた目的を最小化または最大化するもの
ここで,制約条件と目的関数は数式を用いて表現できるものである(例えば,人の感覚値に基づいた定性的な評価は数式を用いて表現できない)
数理最適化の構成要素
数理最適化は以下の構成要素により成り立つ。これらについて以降で説明する。
- 問題を把握する(ヒアリング,データ分析)
- 数理モデルとして定式化
- 定式化した数理モデルを解く
- 得られた解を現実のオペレーションに落とし込む
数理モデルの定式化
- 解くべき問題において,決定する事柄を決定
- 決定する事柄=決定変数
- 数理最適化の目的は,決定変数の最適な値を求めること
- 決定変数を用いて,制約条件を数式(=制約式)で表す
- 制約条件は**パラメータ(定数)**を用いて表す
- 決定変数を用いて,目的関数を数式で表す
- 数理最適化の目的は,目的関数の最小化または最大化
数理最適化の一般系
- 決定変数:
※n次元の実数ベクトルx=(x_1, x_2, ...,x_n) - 目的関数:
f(x) - 制約条件:
g_i(x)≤0 \quad i=1,2...,p h_j(x)=0 \quad j=p+1,p+2,...p+q
数理最適化問題は,これらの
関数
線形計画問題と整数計画問題
- 線形計画問題: 目的関数が線形関数,制約式がすべて線形等式・線形不等式である数理最適化問題(線形と言いつつ様々な問題を定式化できる)
- 整数計画問題: 決定変数のうちいくつかに「整数でなければならない」という条件のついた線形計画問題
線形計画問題
- 目的関数:
\sum_{j=1}^{n}c_{j}x_{j} - 制約条件:
\sum_{j=1}^{n}a_{kj}x_{j}≤b_k \quad k=1,2,...,p \sum_{j=1}^{n}a_{lj}x_{j}=b_l \quad k=p+1,...,p+q x_1≧0,x_2≧0,...,x_n≧0
※整数計画問題: いくつかの変数
典型問題
集合分割問題
集合分割問題は、与えられた集合を複数の部分集合に分割する問題。目標は、各部分集合が特定の制約を満たすようにすること。
選択する候補の部分集合にはそれぞれコストがつけられており,その和を最小にするような部分集合を選ぶ。
例:
つまり,以下のような候補の部分集合と書く部分集合にコストがつけられたときに,実行可能解(例えば
数学的に表すと:
- 集合
をS 個の部分集合k に分割するS_1, S_2, ..., S_k - 各部分集合
の合計ができるだけ均等になるようにするS_i
目的関数:
制約:
ナップサック問題
ナップサック問題は、容量制限のあるナップサックに入れる物の組み合わせを最適化する問題。
つまり,容量制限を超えないように価値の合計が最大となる物の組み合わせを選ぶ。
例: 重さと価値がそれぞれ
目的関数:
制約:
ネットワーク最適化問題
ネットワーク最適化問題には、最短経路問題と最大流問題が含まれる。
ネットワークとは,点(ノード)の集合と2つの点を繋ぐ枝(エッジ)の集合により定められる。
- 有向ネットワーク:枝に向きがある(矢印になっている)ネットワーク ※(A,B)のように表される
- 無向ネットワーク:枝に向きがないネットワーク ※{A,B}のように表される
ネットワークにおいて,隣あう点AとBは点が隣接すると表現される。
枝には重み(コスト)が割り当てられる。
最短経路問題:
最短経路問題は、グラフの2つのノード間の最短経路を見つける問題。
-
例: グラフ
で、各エッジに重みG = (V, E) が与えられている。ノードw(e) からノードs への最短経路を求める。t
目的関数:
最大流問題:
最大流問題は、ネットワーク内のソース(スタート地点のノード)からシンク(ゴール地点のノード)への最大流量を求める問題。
エッジには容量が関連付けられ,流す量は容量を超えてはいけない。
-
例: 有向グラフ
において、各エッジG = (V, E) に容量e がある。ソースc(e) からシンクs への最大流量を求める。t
目的関数:
制約:
巡回セールスマン問題
巡回セールスマン問題は、全ての都市を一度だけ訪れて出発点に戻る最短経路を求める問題。
巡回路の移動距離はエッジの距離の総和で求められる。
都市数が少ない場合は,全パターンの移動距離を計算して求める方法をとることができるが,都市数が増えるとそれは難しい。
昨今は,整数計画問題として定式化する方法が洗練されており,かなりの数の都市があっても許容可能な時間で解ける。
例:
目的関数:
制約:
配送計画問題
配送計画問題は、複数の配送車が複数の顧客に複数の商品を届ける最適なルート(移動距離が最小となるルート)を求める問題。
どの顧客をどの配送者に割り当てるか,割り当てられた顧客をどの順序で訪問するか等を最適化する。
例:
目的関数:
制約:
これらの問題は、それぞれ異なるアプローチで最適化が行われ、現実世界のさまざまな応用に役立つ。
Discussion