跳到主要内容

VIKOR 法

一、直观理解:在“群体效用”与“最大遗憾”之间找妥协解​

VIKOR(VlseKriterijumska Optimizacija I Kompromisno Resenje)面向多准则妥协排序:既希望整体加权绩效好(群体效用 SS 小),又希望最差的那项指标别太惨(个体遗憾 RR 小)。用参数 vv 折中二者,得到 QQ 值排序,并检验稳定条件,给出妥协解集。

像谈判:不能只看总分,也不能只盯着最不满的人;VIKOR 找大家都能接受的折中方案。

二、适用场景与优缺点​

类型说明
适用场景冲突准则;需要妥协解;权重已知;与 TOPSIS 对照。
核心优点明确处理冲突;有 S,R,QS,R,Q 三重信息;有可接受优势/稳定条件。
局限与缺点vv 主观;条件不满足时妥协集扩大;计算依赖正负理想。

三、核心原理​

正向化后,正理想 fj∗f_j^*、负理想 fj−f_j^-。

Si=∑jwjfj∗−fijfj∗−fj−,Ri=max⁡jwjfj∗−fijfj∗−fj−S_i=\sum_j w_j\frac{f_j^*-f_{ij}}{f_j^*-f_j^-},\quad R_i=\max_j w_j\frac{f_j^*-f_{ij}}{f_j^*-f_j^-} Qi=vSi−S∗S−−S∗+(1−v)Ri−R∗R−−R∗Q_i=v\frac{S_i-S^*}{S^--S^*}+(1-v)\frac{R_i-R^*}{R^--R^*}

其中 S∗=min⁡SS^*=\min S,S−=max⁡SS^-=\max S,R∗,R−R^*,R^- 类似。vv 常用 0.5。

QQ 越小越好。设按 QQ 排序第一为 A′A',第二 A′′A'':

  • 条件 C1:可接受优势 Q(A′′)−Q(A′)≥1/(n−1)Q(A'')-Q(A')\ge 1/(n-1);
  • 条件 C2:A′A' 在 SS 或 RR 上也最好。

都满足则 A′A' 唯一最优;否则给出妥协解集合。

四、关键决策​

决策点建议
vv0.5 默认;0–1 敏感分析
权重组合赋权
理想点样本最优或绝对理想
报告S,R,QS,R,Q 与 C1/C2
对照TOPSIS 贴近度

五、MATLAB 示例​

X = [
80 70 90;
75 88 70;
90 65 85;
70 90 75
];
w = [0.4 0.3 0.3]; w = w/sum(w);
% 极大型
fstar = max(X); fminus = min(X);
den = fstar - fminus; den(den==0)=eps;

[n, m] = size(X);
S = zeros(n,1); R = zeros(n,1);
for i = 1:n
t = w .* (fstar - X(i,:)) ./ den;
S(i) = sum(t);
R(i) = max(t);
end

v = 0.5;
Sstar = min(S); Sminus = max(S);
Rstar = min(R); Rminus = max(R);
Q = v*(S - Sstar)/(Sminus - Sstar + eps) + ...
(1-v)*(R - Rstar)/(Rminus - Rstar + eps);

T = table((1:n)', S, R, Q, "VariableNames", {"方案","S","R","Q"});
T = sortrows(T, "Q", "ascend");
disp(T);

% 条件检验
nAlt = n;
DQ = 1/(nAlt-1);
A1 = T.方案(1); A2 = T.方案(2);
okC1 = (T.Q(2) - T.Q(1)) >= DQ - 1e-12;
% C2: A1 在 S 或 R 最优
okC2 = (S(A1) <= min(S)+1e-12) || (R(A1) <= min(R)+1e-12);
fprintf("C1=%d, C2=%d\n", okC1, okC2);
if okC1 && okC2
fprintf("唯一妥协解:方案 %d\n", A1);
else
disp("妥协解集需扩大,请按 VIKOR 规则纳入后续方案");
end

六、如何解释结果​

  1. SS 小=整体好,RR 小=最大短板可控;
  2. vv 含义:偏群体还是偏遗憾;
  3. C1/C2 是否成立;
  4. 妥协解集;
  5. 与 TOPSIS 异同(VIKOR 更强调遗憾)。

七、常见误区​

1. 只按 QQ 排序不检验条件​

可能夸大唯一最优。

2. 指标方向错误​

S,RS,R 全反。

3. vv 调参凑结论​

应敏感分析公开。

4. 与 TOPSIS 公式混用​

理想距离 vs S/R/QS/R/Q 不同。

5. 权重未归一​

RR 的 max 项尺度乱。

附:建模论文中的写法要点​

  1. 问题对应:用一两句话说明为何该方法匹配题目数据结构与目标(分类/分群/排序/效率)。
  2. 符号与步骤:按“输入 → 预处理 → 核心计算 → 输出指标”列出编号步骤,公式与代码变量名一致。
  3. 参数表:列出全部可调参数、取值、选取依据(CV、信息准则、业务约束或灵敏度)。
  4. 结果呈现:主结果用表格;辅以 1–2 张图(边界、树状图、得分条形图、效率分解等)。
  5. 稳健性:至少做一种扰动——删点、换权重、换距离、换初值或换阈值,观察结论是否保持。
  6. 局限:主动写明假设(球状簇、线性可分、CRS、完全补偿等)及适用边界,避免被质询时被动。

若主方法结论与合理基线(如 K-means 对 GMM、加权和对 TOPSIS、CCR 对 BCC)严重冲突,应回到数据质量与指标方向检查,而不是只报告“更好看”的一种结果。

附:计算检查清单​

在提交结果前,建议按下列清单快速自检:

  1. 输入矩阵:行/列含义是否与正文一致,有无缺失、重复行、单位混用。
  2. 方向与尺度:极小型是否已正向化;聚类/距离类是否已标准化;评价类权重是否归一。
  3. 参数来源:所有阈值、簇数、核宽、理想解定义能否在正文找到依据。
  4. 数值稳定:协方差/相关是否接近奇异;DEA 线性规划是否全部求解成功;对数/除零是否加保护。
  5. 随机性:涉及随机初值的算法是否固定种子并报告多次结果的稳定性。
  6. 验证协议:分类任务是否严格隔离测试集;重采样/SMOTE 是否仅用于训练折。
  7. 图表编号:主结论表与图在正文中被引用,而不是只放附录。
  8. 可复现:给出软件版本(如 MATLAB R20xx)与关键函数名,使读者能重跑最小示例。

不满足清单中任一项时,优先修正流程,再讨论“方法先进性”。对综合评价题,额外检查:更换一种合理权重后,前三名是否大体稳定;若剧烈跳动,应降低对精细名次的措辞强度。

八、小结​

VIKOR 在群体效用与最大遗憾之间构造 QQ 值,并通过优势与稳定条件给出妥协解,适合冲突型多准则决策。

当“不能让最差指标太差”是刚性关切时,VIKOR 比单纯加权和更贴切。