matlab
by lqx
评价模型
数据包络分析法DEA模型
% 定义输入和输出矩阵
X = [10 5; 8 3; 6 2; 9 4; 12 6]; % 输入指标矩阵
Y = [50 100; 40 80; 30 60; 45 90; 55 110]; % 输出指标矩阵
% 标准化数据
X_norm = zscore(X);
Y_norm = zscore(Y);
% 求解权重向量
[m, n] = size(X_norm); % 决策单元个数和输入指标个数
lb = zeros(n, 1); % 下界设置为0
options = optimset('Display', 'off'); % 关闭显示迭代过程
[w, ~] = fmincon(@(w) -sum(w), ones(n,1), [], [], [], [], lb, [], [], options); % 最大化加权和等价于最小化其相反数
% 计算各决策单元的效率得分
efficiency = zeros(m, 1);
for i = 1:m
efficiency(i) = sum(w' * X_norm(i,:)') / sum(Y_norm(i,:));
end
% 显示效率得分和最有效的单位
disp('效率得分:')
disp(efficiency)
[~, maxIndex] = max(efficiency);
disp(['最有效的单位是第', num2str(maxIndex), '家单位。'])
%结果展示
效率得分:
1.0e+19 *
4.3341
6.5011
4.4843
0
5.7073
最有效的单位是第2家单位。
% 定义输入和输出矩阵
X = [100 50 200; 80 40 180; 70 35 160; 90 45 190; 120 60 220]; % 输入指标矩阵
Y = [85 80; 75 70; 70 65; 80 75; 90 85]; % 输出指标矩阵
% 标准化数据
X_norm = zscore(X);
Y_norm = zscore(Y);
% 求解权重向量
[m, n] = size(X_norm); % 决策单元个数和输入指标个数
lb = zeros(n, 1); % 下界设置为0
options = optimset('Display', 'off'); % 关闭显示迭代过程
[w, ~] = fmincon(@(w) -sum(w), ones(n,1), [], [], [], [], lb, [], [], options); % 最大化加权和等价于最小化其相反数
% 计算各决策单元的效率得分
efficiency = zeros(m, 1);
for i = 1:m
efficiency(i) = sum(w' * X_norm(i,:)') / sum(Y_norm(i,:));
end
% 显示效率得分和最有效的学校
disp('效率得分:')
disp(efficiency)
[~, maxIndex] = max(efficiency);
disp(['最有效的学校是第', num2str(maxIndex), '所学校。'])
%结果展示
效率得分:
1.0e+19 *
3.5385
4.6891
5.0201
-Inf
5.8831
最有效的学校是第5所学校。