4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【多目的最適化入門】多目的最適化とは?①

4
Last updated at Posted at 2026-05-29

この記事について

数理最適化をしていると、よく出てくる話が「目的が複数あってどれを優先したらいいかわからない」という話です。
「コストを下げたいけど品質も上げたい」「配送時間を短くしたいけど燃費も良くしたい」みたいな。
これ、一つの目的だけ追えばいいなら普通の最適化問題なのですが、複数の目的を同時に追おうとすると途端に難しくなるんですよね。。。

この記事シリーズでは、そんな多目的最適化について、できるだけ直感的に理解できるように説明していこうと思います。

シリーズは全4記事の予定で、以下の内容を扱います。

記事 内容
①(本記事) 多目的最適化とは?基礎概念
NSGA-IIの説明
MOEA/Dの説明
ベンチマーク問題の説明

概要:そもそも「多目的」って何が難しいの?

まず、普通の(単目的)最適化を振り返ってみましょう。

例えば「コストを最小化したい」という問題があったとして、答えは基本的に「一番コストが低い解」です。比較が簡単ですよね。

でも「コストを最小化したい、かつ、品質を最大化したい」という問題はどうでしょうか?

コストが低い解がいくつかあったとして、その中で品質が高いものはどれか?を考えると、たいてい 「コストを下げると品質も下がる」というトレードオフが存在します。

これが多目的最適化を難しくする本質です。

多目的最適化問題の定義

多目的最適化問題は、一般的に以下のように定式化されます。

\text{Minimize} \quad \mathbf{f}(\mathbf{x}) = (f_1(\mathbf{x}), f_2(\mathbf{x}), \ldots, f_m(\mathbf{x}))
\text{subject to} \quad \mathbf{x} \in X

ここで、

  • $\mathbf{x}$ は決定変数ベクトル
  • $X$ は決定変数空間(実行可能領域)
  • $f_i(\mathbf{x})$ は $i$ 番目の目的関数
  • $m$ は目的関数の数

を示します。

今回は最小化問題として統一しますが、最大化問題も符号を反転させれば最小化に変換できます。

パレート支配(Pareto Dominance)

多目的最適化では「どの解が良い解か?」を判断するために、パレート支配という概念を使います。

定義

2つの解 $\mathbf{x}$, $\mathbf{y}$ があったとき、 $\mathbf{x}$ が $\mathbf{y}$ を支配する($\mathbf{x} \prec \mathbf{y}$)とは、以下の2条件を同時に満たすことを言います。

\forall i \in \{1, \ldots, m\}: f_i(\mathbf{x}) \leq f_i(\mathbf{y})
\exists j \in \{1, \ldots, m\}: f_j(\mathbf{x}) < f_j(\mathbf{y})

平たく言うと、

  • すべての目的関数で $\mathbf{x}$ は $\mathbf{y}$ より悪くない
  • 少なくとも1つの目的関数で $\mathbf{x}$ は $\mathbf{y}$ より明確に良い

ということです。

具体例

2目的問題($f_1$ と $f_2$ を最小化)で考えてみましょう。

$f_1$ $f_2$ 解説
A 1.0 3.0 -
B 2.0 2.0 -
C 1.5 4.0 Aに支配される
D 0.5 2.5 Aを支配する
  • D は A を支配する($f_1$: 0.5 < 1.0、$f_2$: 2.5 < 3.0 →両方で良い)
  • D は B を支配しない($f_1$: 0.5 < 2.0、$f_2$: 2.5 > 2.0 →$f_2$で悪いのでは?)

Dは$f_2$でBより悪いですよね。なので D は B を支配しません。
「すべての目的で悪くない」という条件を満たしていないのでアウトです。

  • A と B は互いに支配しない($f_1$: AがBより良いが、$f_2$: BがAより良い → トレードオフ)

このようにトレードオフの関係にある解同士は、どちらが「より良い」とは一概に言えないわけです。

パレート最適解(Pareto Optimal Solution)

どの解にも支配されない解のことをパレート最適解と言います。

上の例だと、解 A と B はお互いにトレードオフの関係にあり、どちらが良いとは言い切れません。この場合、AもBも「パレート最適解」の候補となります。

パレート最適解の集合をパレート最適解集合と呼び、その目的関数空間における像をパレートフロント(Pareto Front)と呼びます。

パレートフロントのイメージを図にすると以下のようになります。

pareto_front.png

上図は2目的問題($f_1$, $f_2$ を最小化)のパレートフロントのイメージです。
青い曲線がパレートフロントで、赤い点が支配される解(パレートフロントより右上にある解)を示しています。

上図を生成したコードは以下のとおりです。

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Yu Gothic'  # 日本語フォント設定

# 中心(4,4)・半径4の円弧(θ: π→3π/2 で (0,4)→(4,0) の弧)
theta = np.linspace(np.pi, 3 * np.pi / 2, 100)
f1 = 4 + 4 * np.cos(theta)
f2 = 4 + 4 * np.sin(theta)

# 非パレート最適な点(支配される点):表のA, B, C, D
dominated_f1 = [1.0, 2.0, 1.5, 0.5]
dominated_f2 = [3.0, 2.0, 4.0, 2.5]

fig, ax = plt.subplots(figsize=(6, 5))
ax.plot(f1, f2, 'b-', linewidth=2, label='パレートフロント')
ax.scatter(dominated_f1, dominated_f2, c='red', s=100, label='支配される解', zorder=5)

# 各点にラベルを付ける
for label, x, y in zip(['A', 'B', 'C', 'D'], dominated_f1, dominated_f2):
    ax.annotate(label, (x, y), textcoords='offset points', xytext=(8, 4), fontsize=11)

ax.set_xlabel('f₁ (最小化)', fontsize=12)  # Unicode下付き文字を使用
ax.set_ylabel('f₂ (最小化)', fontsize=12)
ax.set_title('パレートフロントのイメージ(2目的)')
ax.set_xlim(0, 4.5)
ax.set_ylim(0, 4.5)
ax.legend()
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('pareto_front.png', dpi=150)
plt.show()

上記コードを実行すると、パレートフロント(青線)と支配される解(赤点)の関係がわかるかと思います。
パレートフロントより右上の点はすべて「パレートフロント上のどこかの点に支配される」ということになります。

多目的最適化の目標

単目的最適化では「最良の解を1つ見つける」ことがゴールでしたが、多目的最適化では少し違います。

多目的最適化の目標は 「パレートフロントを近似する多様な解の集合を求めること」 です。

なぜ「1つ」じゃないのかというと、「コストと品質のどちらを重視するか」という最終的な判断は、最適化後に人間(意思決定者)が行うべきだからです。
最適化アルゴリズムはあくまで「トレードオフの全体像」を提示してくれるわけです。

良い多目的最適化アルゴリズムに求められる性質は主に2つあります。

  1. 収束性(Convergence):解の集合がパレートフロントに近いこと
  2. 多様性(Diversity):解の集合がパレートフロントを広くカバーしていること

この2つを同時に満たすことが難しい、というのが多目的最適化の面白いところです。

なぜ進化型アルゴリズムが使われるのか?

多目的最適化を解く方法としてよく使われるのが 進化型多目的最適化(EMO: Evolutionary Multi-objective Optimization) です。

遺伝的アルゴリズム(GA)などの進化型アルゴリズムが多目的最適化に向いている理由は、一度の実行で複数の解(集団)を扱えるからです。

単目的最適化のように「一番良い解を一つ探す」のではなく、「多様でパレートフロントに近い解の集団を進化させていく」というアプローチが自然に取れまる。

代表的な手法として、

  • NSGA-II:非劣解ソートとクラウディングディスタンスを使う手法
  • MOEA/D:問題を複数の単目的問題に分解して解く手法

などがあります。次回以降でこれらを詳しく説明していきます。

まとめ

今回は多目的最適化の基礎概念を説明しました。

  • 複数の目的を同時に最適化する問題が多目的最適化問題
  • パレート支配:全目的で悪くなく少なくとも1目的で良い関係
  • どの解にも支配されない解がパレート最適解
  • パレート最適解の目的関数空間での像がパレートフロント
  • 多目的最適化のゴールはパレートフロントの近似解集合を求めること

次回はNSGA-IIの説明をしていきます。

参考にした記事や本、論文等

  • K. Deb, A. Pratap, S. Agarwal, and T. Meyarivan, "A fast and elitist multiobjective genetic algorithm: NSGA-II," IEEE Trans. on Evolutionary Computation, vol. 6, no. 2, pp. 182-197, 2002.
  • 多目的最適化 - Wikipedia
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?