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∞ ノルム)。最悪の基準での後悔を評価します
そして、パラメータ (0〜1)でこれらを線形結合し、妥協指標 を算出します。
S だけで順位を決めると、ほかの目的が良ければ 1 つの目的だけが極端に悪い解も上位に来てしまいます。 R を併せて評価することで、そうした弱点の大きい解を上位から外せます。
アルゴリズム
入力
| 変数 | 説明 |
|---|---|
| 試行 の目的 の値 | |
| 目的 の重み(正規化済み、 ) | |
| 戦略的重み(デフォルト 0.5) |
重みの正規化: と は を前提に定義しているため、合計が 1 でない重みを設定した場合は、合計が正の有限値であれば合計で割って正規化します。 合計が 0 以下や非有限(NaN 等)の場合は、重みとして意味をなさないので一様な重みが使われます。
Step 1: 最適値・最劣値の決定
各目的 について、全試行中のベスト(最適値)とワースト(最劣値)を求めます。
- 最小化目的: ,
- 最大化目的: ,
最適値と最劣値は、次のステップで各目的のギャップを [0, 1] に正規化するための基準になります。 目的ごとに値域が違っても、この正規化によって重みだけで比重を決められるようになります。
Step 2: S 値と R 値の計算
各試行 について:
- 効用指標 (Utility measure):全目的の重み付きギャップの総和です。小さいほど理想に近くなります。
- 最大後悔 (Regret measure):全目的中で最大のギャップです。小さいほど「最悪の基準」でも優れています。 が 個のギャップをすべて足すのに対し、$R_i$ は最大のギャップだけを見ます。 そのため同じデータでも の順位と の順位は一致しないことがあり、その食い違いこそが で調整する対象になります。
ゼロ除算ガード: の場合、その目的の寄与は 0 とします(全試行が同一値なら差がないため)。
Step 3: S*、S-、R*、R- の計算
Step 4: Q 値の計算
各試行 について:
パラメータ の意味:
| の値 | 重み付け | 意味 |
|---|---|---|
| 重視 | 全体的な効用性を優先(max-consensus) | |
| 均等 | 効用と後悔のバランス | |
| 重視 | 個別の最悪ケースを優先(min-regret) | |
| をどこに置くかは手法が決めてくれるものではなく、どちらのリスクを重く見るかという設計上の判断です。 | ||
| たとえば「平均的には良いが、ある条件で極端に性能が落ちる解は避けたい」という場面では、$v$ | ||
| を 0.5 より小さくして を重視します。 |
ゼロ除算ガード: の場合、第 1 項は 0 とします。 の場合、第 2 項は 0 とします。
Step 5: Q 値によるランキング
の昇順(小さい順)に試行を並べます。 Q 値が小さいほど妥協解に近く、良い解です。 UI では見やすさのため 1 − Q を表示するので、チャート上では逆に高いほど良いという向きになります。
Step 6: 妥協解の受容条件(C1/C2)
値最小の解 が単独の妥協解として採用可能かを、Opricovic & Tzeng (2004) の 2 条件で判定します。 が僅差で 1 位になっただけの解を唯一の答えとして示すと、実際には差がないことが伝わらないためです。
C1(受容可能な優位性 / Acceptable advantage):
ここで は有効(全目的が有限値の)試行数です。 1 位と 2 位の Q の差が十分に大きいことを確認します。
C2(意思決定の安定性 / Acceptable stability in decision making): が または のランキングでも 1 位(同率を含む)であること。
妥協解集合の決定:
- C1・C2 とも成立 → が唯一の妥協解
- C2 のみ不成立 → と が妥協解
- C1 不成立 → を満たす すべてが妥協解
エッジケース: の場合は唯一の有効試行が妥協解、$J = 0$ の場合は空集合です。
Tunny Dashboard では、妥協解集合は MCDM Scatter Chart 2D / 3D ウィジェットで ★ マーク付きで表示されます(クリック詳細モーダルにも表示)。
妥協解が複数返るのは手法の失敗ではなく、そのデータでは 1 つに絞れるだけの差がないという情報です。 ★ が複数付いた場合は、その中から別の観点で選ぶことになります。
TOPSIS との比較
VIKOR と TOPSIS はどちらも理想解を基準にしますが、ギャップの測り方とランキングの向きが異なります。
| 項目 | TOPSIS | VIKOR |
|---|---|---|
| 距離測度 | ユークリッド距離(L2) | マンハッタン(L1)+ チェビシェフ(L∞) |
| 理想解へのアプローチ | 正・負の理想解との距離比 | 重み付きギャップの線形結合 |
| ランキング方向 | 降順(スコア高いほど良い) | 昇順(Q 小さいほど良い) |
| 戦略パラメータ | なし | (効用 vs 後悔) |
| ゼロ除算処理 | スコア = 0.5 | 寄与 = 0 |
| 適用場面 | 全体的な類似性を重視 | 妥協点・バランスを重視 |
TOPSIS がギャップをユークリッド距離 1 本にまとめるのに対し、VIKOR は と を分けて出力します。 分けて出すことで、「全体としての悪さ」と「もっとも悪い目的での悪さ」を切り分けて読めるようになります。
数値例
問題設定
3 試行 × 2 目的、両方最小化、重み 、$v = 0.5$
| 試行 | 目的1 | 目的2 |
|---|---|---|
| 0 | 1 | 2 |
| 1 | 3 | 1 |
| 2 | 2 | 2 |
Step 1: 最適値・最劣値
目的1: , , range = 2 目的2: , , range = 1
Step 2: S と R の計算
| 試行 | contrib1 | contrib2 | S | R |
|---|---|---|---|---|
| 0 | 0.5 | 0.5 | ||
| 1 | 0.5 | 0.5 | ||
| 2 | 0.75 | 0.5 |
Step 3: S*, S-, R*, R-
, , , (同順)
Step 4: Q 値
なので term2 = 0:
Step 5: ランキング
となり、試行 0 と 1 が同率 1 位、試行 2 が最下位です。 試行 0 と 1 は、2 つの目的のどちらを取るかが正反対の解です。 ですが、重みが均等なため も も同じ値になり、優劣が付きません。 このように同率が出た場合は、重みを見直すか、別の評価基準を追加して判断することになります。
計算量
O(m × n + m log m) です。 50,000 トライアル × 4 目的関数で 100 ms 未満です。 ペアワイズ比較を行わないため、PROMETHEE のようにトライアル数の二乗で計算時間が効いてくることはありません。
使用場面の目安
特定の目的の最悪ケースを抑えたい(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.