Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

VIKOR

概要

VIKOR 法は、1998 年に Serafim Opricovic によって提案され、Opricovic & Tzeng (2004) の比較研究で広く知られるようになった多基準意思決定(MCDM: Multi-Criteria Decision Making)手法です。 セルビア語で「複数基準最適化と妥協解」を意味する名称であり、複数の評価基準(目的関数)が競合する問題で、理想解に最も近い妥協解(compromise solution)を選択します。

Tunny Dashboard では、各トライアルについて次の情報が得られます:

出力 説明
効用指標 S 理想からの全体的なギャップ(小さいほど良い)
後悔指標 R 最悪の目的関数でのギャップ(小さいほど良い)
妥協指標 Q S と R を統合した指標(小さいほど良い妥協解)
表示スコア 1 − Q。高いほど良い(UI では見やすさのためこちらを表示)
ランキング Q の小さい順(妥協解に近い順)に並べたトライアルの順位
最適値・最劣値 各目的関数の、有効トライアル中の最良値と最悪値
妥協解集合 受容条件(C1/C2)を満たす妥協解の集合

基本思想

VIKOR は以下の2つの距離測度を用いて妥協解を求めます。

  • S:重み付きマンハッタン距離(L1 ノルム)。全体的な効用性を評価します
  • R:重み付きチェビシェフ距離(L∞ ノルム)。最悪の基準での後悔を評価します

そして、パラメータ vv(0〜1)でこれらを線形結合し、妥協指標 QQ を算出します。

アルゴリズム

入力

変数 説明
fijf_{ij} 試行 ii の目的 jj の値
wjw_j 目的 jj の重み(正規化済み、 wj=1\sum w_j = 1
vv 戦略的重み(デフォルト 0.5)

重みの正規化: 合計が 1 でない重みを設定した場合、合計が正の有限値であれば合計で割って正規化します。合計が 0 以下や非有限(NaN 等)の場合は一様な重みが使われます。

Step 1: 最適値・最劣値の決定

各目的 jj について、全試行中のベスト(最適値)とワースト(最劣値)を求めます。

fj=besti(fij),fj=worsti(fij)f_j^* = \text{best}i(f{ij}), \quad f_j^- = \text{worst}i(f{ij})

  • 最小化目的: best=min\text{best} = \min, worst=max\text{worst} = \max
  • 最大化目的: best=max\text{best} = \max, worst=min\text{worst} = \min

Step 2: S 値と R 値の計算

各試行 ii について:

Si=j=1nwjfjfijfjfjS_i = \sum_{j=1}^{n} w_j \cdot \frac{f_j^* - f_{ij}}{f_j^* - f_j^-}

Ri=maxj(wjfjfijfjfj)R_i = \max_{j} \left( w_j \cdot \frac{f_j^* - f_{ij}}{f_j^* - f_j^-} \right)

  • 効用指標 SiS_i(Utility measure):全目的の重み付きギャップの総和です。小さいほど理想に近くなります。
  • 最大後悔 RiR_i(Regret measure):全目的中で最大のギャップです。小さいほど「最悪の基準」でも優れています。

ゼロ除算ガード: fj=fjf_j^* = f_j^- の場合、その目的の寄与は 0 とします(全試行が同一値なら差がないため)。

Step 3: S*、S-、R*、R- の計算

S=mini(Si),S=maxi(Si)S^* = \min_i(S_i), \quad S^- = \max_i(S_i)

R=mini(Ri),R=maxi(Ri)R^* = \min_i(R_i), \quad R^- = \max_i(R_i)

Step 4: Q 値の計算

各試行 ii について:

Qi=vSiSSS+(1v)RiRRRQ_i = v \cdot \frac{S_i - S^}{S^- - S^} + (1 - v) \cdot \frac{R_i - R^}{R^- - R^}

パラメータ vv の意味:

vv の値 重み付け 意味
v>0.5v > 0.5 SS 重視 全体的な効用性を優先(max-consensus)
v=0.5v = 0.5 均等 効用と後悔のバランス
v<0.5v < 0.5 RR 重視 個別の最悪ケースを優先(min-regret)

ゼロ除算ガード: S=SS^- = S^ の場合、第1項は 0 とします。 R=RR^- = R^ の場合、第2項は 0 とします。

Step 5: Q 値によるランキング

QiQ_i の昇順(小さい順)に試行を並べます。 Q 値が小さいほど妥協解に近く、良い解です。

Step 6: 妥協解の受容条件(C1/C2)

QQ 値最小の解 A(1)A^{(1)} が単独の妥協解として採用可能かを、Opricovic & Tzeng (2004) の 2 条件で判定します。

C1(受容可能な優位性 / Acceptable advantage):

Q(A(2))Q(A(1))DQ,DQ=1J1Q(A^{(2)}) - Q(A^{(1)}) \geq DQ, \qquad DQ = \frac{1}{J - 1}

ここで JJ は有効(全目的が有限値の)試行数です。 1 位と 2 位の Q の差が十分に大きいことを確認します。

C2(意思決定の安定性 / Acceptable stability in decision making): A(1)A^{(1)}SS または RR のランキングでも1位(同率を含む)であること。

妥協解集合の決定:

  • C1・C2 とも成立 → A(1)A^{(1)} が唯一の妥協解
  • C2 のみ不成立 → A(1)A^{(1)}A(2)A^{(2)} が妥協解
  • C1 不成立 → Q(A(k))Q(A(1))<DQQ(A^{(k)}) - Q(A^{(1)}) < DQ を満たす A(1),,A(k)A^{(1)}, \dots, A^{(k)} すべてが妥協解

エッジケース: J=1J = 1 の場合は唯一の有効試行が妥協解、 J=0J = 0 の場合は空集合です。

Tunny Dashboard では、妥協解集合は MCDM Scatter Chart 2D / 3D ウィジェットで ★ マーク付きで表示されます(クリック詳細モーダルにも表示)。

TOPSIS との比較

項目 TOPSIS VIKOR
距離測度 ユークリッド距離(L2) マンハッタン(L1)+ チェビシェフ(L∞)
理想解へのアプローチ 正・負の理想解との距離比 重み付きギャップの線形結合
ランキング方向 降順(スコア高いほど良い) 昇順(Q 小さいほど良い)
戦略パラメータ なし vv(効用 vs 後悔)
ゼロ除算処理 スコア = 0.5 寄与 = 0
適用場面 全体的な類似性を重視 妥協点・バランスを重視

数値例

問題設定

3試行 × 2目的、両方最小化、重み w=[0.5,0.5]w = [0.5, 0.5]v=0.5v = 0.5

試行 目的1 目的2
0 1 2
1 3 1
2 2 2

Step 1: 最適値・最劣値

目的1: f1=1f_1^* = 1, f1=3f_1^- = 3, range = 2 目的2: f2=1f_2^* = 1, f2=2f_2^- = 2, range = 1

Step 2: S と R の計算

試行 contrib1 contrib2 S R
0 0.5×(11)/2=00.5 \times (1-1)/2 = 0 0.5×(12)/1=0.50.5 \times (1-2)/1 = 0.5 0.5 0.5
1 0.5×(31)/2=0.50.5 \times (3-1)/2 = 0.5 0.5×(11)/1=00.5 \times (1-1)/1 = 0 0.5 0.5
2 0.5×(21)/2=0.250.5 \times (2-1)/2 = 0.25 0.5×(12)/1=0.50.5 \times (1-2)/1 = 0.5 0.75 0.5

Step 3: S*, S-, R*, R-

S=0.5S^* = 0.5, S=0.75S^- = 0.75, R=0.5R^* = 0.5, R=0.5R^- = 0.5(同順)

Step 4: Q 値

R=RR^* = R^- なので term2 = 0:

  • Q0=0.5×(0.50.5)/0.25+0.5×0=0Q_0 = 0.5 \times (0.5 - 0.5)/0.25 + 0.5 \times 0 = 0
  • Q1=0.5×(0.50.5)/0.25+0.5×0=0Q_1 = 0.5 \times (0.5 - 0.5)/0.25 + 0.5 \times 0 = 0
  • Q2=0.5×(0.750.5)/0.25+0.5×0=0.5Q_2 = 0.5 \times (0.75 - 0.5)/0.25 + 0.5 \times 0 = 0.5

Step 5: ランキング

Q=[0,0,0.5]Q = [0, 0, 0.5] となり、試行 0 と 1 が同率 1 位、試行 2 が最下位です。

計算量

O(m × n + m log m) です。 50,000 トライアル × 4 目的関数で 100ms 未満です。

使用場面の目安

特定の目的の最悪ケースを抑えたい(max-regret)?   → v < 0.5 の VIKOR
目的関数全体の合意度を最大化したい?               → v > 0.5 の VIKOR
パラメータ不要で直感的な [0,1] スコアが欲しい?    → TOPSIS

参考文献

  • Opricovic, S., & Tzeng, G.-H. (2004). Compromise solution by MCDM methods: A comparative analysis of VIKOR and TOPSIS. European Journal of Operational Research, 156(2), 445–455. https://doi.org/10.1016/S0377-2217(03)00020-1
  • Opricovic, S. (1998). Multicriteria Optimization of Civil Engineering Systems. Faculty of Civil Engineering, Belgrade.