G1法步骤详解及MATLAB代码实现

1. 研究背景

在实际决策中,决策者在决策时会参考多个评价指标,而这些指标因重要程度不同,会被赋予不同的权重。通常而言,决策者采取的是客观赋权的方式,即完全根据决策矩阵内的数据信息决定评价指标的重要程度。例如非常经典的熵权法,它根据数据的熵值对评价指标进行重要度排序。如果某个指标的信息熵越小,就表明其指标值的变异程度越大,提供的信息量越大,在综合评价中所起的作用越大,则其权重也应越大。虽然这种方法可以完全做到公正,非常适用于类似绩效评估等领域。然而,客观赋权法减少了决策者的参与,忽视了决策者的有限理性。这是什么意思?举个例子,比如自己想买一款游戏,首先是看它好不好玩,游戏性强不强。其次再看这个游戏的画质如何,角色烧不烧,剧情是否吸引人。这是你的想法。但如果交给熵权法来搞,它可能根据数据之间的离散程度将游戏角色烧不烧作为最重要的评价指标。靠,这是不是很不合理?因此,在某些时候,主观赋权同样很重要。那主观赋权全是凭决策者臆想吗,决策者想对权重怎样配比就怎样配比?答案可以解释为是,但并不全是。我们可以这样简单理解主观赋权法:主观赋权法是指考虑决策者有限理性的同时,根据一定的逻辑并通过模型计算来确定权重的方法。所以在一般情况下,决策者会同时使用主观赋权法和客观赋权法,以保证赋权的科学性。

G1法作为经典的主观赋权法,通过指标与指标之间的重要程度确定其权重。决策者首先会确定一个最重要的指标,比如游戏性。在这之后,决策者会确定第二重要的指标,比如游戏画质,并说明最重要的指标(游戏性)比第二重要的指标(画质)究竟重要多少,游戏性相比画质是稍显重要还是极其重要。以此类推,将所有的指标通通比个遍,得到一个重要性排序的序关系。最后根据这个序关系,决策者应用相对应的公式就能求解得到所有指标的权重。G1法的优点在于逻辑清晰,计算简单,得出的权重具有充分的有效性。

2. 基础概念

2.1 定义

G1法也称序关系分析法,是一种由层次分析法(Analytic hierarchy process, AHP)改进而来的主观赋权方法。G1法以决策者在不同指标间建立的序关系为标准对指标进行赋权,不仅在计算上比AHP方法简便,其结果也充满了主观性。

2.2 方法步骤

Step.1 确定属性间的序关系

假设共有n个属性,分别为C_{1},C_{2},\cdots ,C_{n}。决策者根据自身判断将属性按照重要性程度从高到低排序,得到属性序关系\tilde{C_1}\succ\tilde{C_2}\succ\cdots\succ\tilde{C_n}

Step.2 确定序关系相邻属性间的重要程度

对于任意两个相邻属性\tilde{C}_{j}\tilde{C}_{j-1},则决策者赋予的相对重要程度可表示为r_{\beta}=\frac{\omega_{\beta-1}}{\omega_{\beta}}。其中 \beta=n,n-1,\cdots,2r_{\beta}越大则属性\tilde{C}_{j-1}相比\tilde{C}_{j}属性重要程度越大。r_{\beta}的取值参考下表:

Step 3. 计算各属性权重

根据决策者确定的r_{\beta}值,可以通过下式得到各属性的主观权重。

\omega_{n}^{s}=\left(1+\sum_{\beta=2}^{n}\prod_{j=\beta}^{n}r_{j}\right)^{-1}

\omega_{\beta-1}=\omega_{\beta}r_{\beta}

其中\beta=n,n-1,\cdots,2,且\sum_{j=1}^{n}\omega_{j}^{s}=1

3. 算例分析

为提高供应链运营的稳定性和质量,某公司的风险评估专家总结了5个风险指标,分别为物流风险、环境风险、管理风险、生产风险以及信息风险。该专家给出了风险的重要性排序:环境风险>管理风险>信息风险>物流风险>生产风险,并给出了相对重要性,如下表所示。

C1C2C3C4C5
风险指标物流风险环境风险管理风险生产风险信息风险
重要性排序4th1st2nd5th3rd
排序结果C2C3C5C1C4
相对重要性1.21.41.21.6-

根据表格,r_{5}=1.2r_{4}=1.4r_{3}=1.2r_{2}= 1.6,则\sum_{\beta=2}^5\prod_{j=\beta}^5r_j=8.12。因此,最小的权重 \omega_5=(1+8.12)^{-1}=0.11

有了最小的权重,可以求比它重要性高一级别的权重。将\omega_5乘以r_{5}得到\omega_4=0.13。以此类推,\omega_1=\omega_2\cdot r_2=0.35。但这个不是最终结果,需要把这些权重分配给排序前对应的指标。最终结果为:

C1C2C3C4C5合计
ω0.130.350.220.110.181.00

恭喜你,你已经学会了G1主观赋权法,奖励你MATLAB代码一套(仅供参考)。

clear;
clc;
Matrix_Column=5;
% Determine the importance of indicators.
IoI=[2 3 5 1 4];
% Specify the relative ratio of importance between adjacent indicators.
r=[0 1.6 1.2 1.4 1.2];
% Calculate weight coefficient.
for Beta=(2:length(IoI))
    Prod_r(Beta)=prod(r((Beta:length(IoI))));
end
display(Prod_r)
% Obtain the weight of the worst attribute which experts specified.
Omega_n=(1+sum(Prod_r))^(-1);  
display(Omega_n)
% Compute the weight vector sorted from largest to smallest.
for j=(1:Matrix_Column)
    Subjective_Omega_Token(j)=Omega_n*prod(r(j+1:Matrix_Column));
end
display(Subjective_Omega_Token)
% Obtain the subjective weights.
[Sorted_IoI,I]=sort(IoI);
Subjective_Omega=Subjective_Omega_Token(I);
display(Subjective_Omega)

4. 参考文献

[1] 王学军, 郭亚军. 基于G1法的判断矩阵的一致性分析[J]. 中国管理科学, 2006, 14(3): 65-70.

[2] Zhao H, Wang Y, Liu X. The evaluation of smart city construction readiness in China using CRITIC-G1 method and the Bonferroni operator[J]. IEEE Access, 2021, 9: 70024-70038.

[3] Tong J, Srivastava G. A decision-making method of intelligent distance online education based on cloud computing[J]. Mobile Networks and Applications, 2022, 27(3): 1151-1161.

感谢您的阅读,祝您科研有成、收获丰硕。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 增广拉格朗日乘子是一种求解约束条件下优化问题的方。在使用增广拉格朗日乘子求解问题时,需要首先建立拉格朗日函数,然后通过求解这个函数的驻点来得到问题的最优解。 以下是一个用MATLAB编写的增广拉格朗日乘子的简单代码示例: ```matlab % 定义问题的目标函数 f = @(x) x(1)^2 + x(2)^2; % 定义约束条件函数 g1 = @(x) x(1) + x(2) - 1; % 定义拉格朗日函数 lambda为拉格朗日乘子 L = @(x, lambda) f(x) + lambda * g1(x); % 初始化优化变量和拉格朗日乘子 x0 = [0, 0]; lambda0 = 0; % 定义优化函数 opt_func = @(x, lambda) L(x, lambda); % 使用增广拉格朗日乘子进行优化 [x_opt, lambda_opt] = fmincon(@(x) opt_func(x, lambda0), x0, [], [], [], [], [], [], @(x) g1(x)); % 输出最优解和最优拉格朗日乘子 disp('最优解:'); disp(x_opt); disp('最优拉格朗日乘子:'); disp(lambda_opt); ``` 以上代码通过MATLAB的`fmincon`函数实现了增广拉格朗日乘子的优化过程。在这个示例中,我们以极小化函数`x(1)^2 + x(2)^2`为目标,约束条件为`x(1) + x(2) - 1=0`。代码将给出最优解和最优拉格朗日乘子的值。 需要注意的是,以上代码只是增广拉格朗日乘子的一个简单示例,实际使用时需要根据具体的问题进行相应的修改和调整。 ### 回答2: 增广拉格朗日乘子(Augmented Lagrangian Method)是一种优化算,用于求解约束最优化问题。以下是一个使用Matlab编写的增广拉格朗日乘子的示例代码。 ```matlab function [x, fval] = augmentedLagrangianMethod(f, A, b, x0, lambda0, rho, epsilon) % 初始化变量 x = x0; lambda = lambda0; convergence = false; % 定义增广拉格朗日函数 augmentedLagrangian = @(x, lambda) f(x) + lambda' * (A * x - b) + (rho/2) * norm(A * x - b)^2; % 迭代优化 while ~convergence % 计算增广拉格朗日函数在当前x和lambda下的梯度 grad_x = gradient(f, x); grad_lambda = A * x - b; % 更新x和lambda x = x - grad_x; lambda = lambda + rho * grad_lambda; % 判断是否达到收敛条件 if norm(grad_x) < epsilon && norm(grad_lambda) < epsilon convergence = true; end end % 计算最终结果 fval = f(x); end ``` 以上代码中,输入参数包括目标函数f、约束矩阵A和约束向量b、初始点x0、初始拉格朗日乘子向量lambda0、惩罚参数rho和收敛阈值epsilon。函数中使用了Matlab的gradient函数来计算目标函数的梯度。在每次迭代中,更新x和lambda,直到满足收敛条件。 注意,以上代码仅为示例,具体使用时需要根据实际问题进行修改和调整。 ### 回答3: 增广拉格朗日乘子是一种优化问题的求解方,它通过引入拉格朗日乘子来将约束条件融入目标函数中,从而将约束问题转化为无约束问题。 下面是使用MATLAB实现增广拉格朗日乘子代码示例: ```matlab function [x, lambda] = augmentedLagrangeMethod(f, g, h, x0, lambda0, alpha, epsilon) % f: 目标函数 % g: 不等式约束函数组 % h: 等式约束函数组 % x0: 初始解 % lambda0: 初始拉格朗日乘子 % alpha: 更新拉格朗日乘子的步长 % epsilon: 收敛条件 x = x0; lambda = lambda0; while true % 计算目标函数的梯度 grad_f = gradient(f); % 计算约束函数的梯度 grad_g = gradient(g); grad_h = gradient(h); % 更新拉格朗日乘子 lambda = lambda + alpha * (g(x) + h(x)); % 计算增广拉格朗日函数的梯度 grad_lag = grad_f - lambda * grad_g - lambda * grad_h; % 检查停止条件 if norm(grad_lag) < epsilon break; end % 更新解 x = x - grad_lag; end end ``` 在这段代码中,函数`augmentedLagrangeMethod`为增广拉格朗日乘子实现函数。该函数通过传入目标函数`f`、不等式约束函数组`g`、等式约束函数组`h`、初始解`x0`、初始拉格朗日乘子`lambda0`、更新步长`alpha`和收敛条件`epsilon`来求解优化问题。 在循环中,首先计算目标函数的梯度`grad_f`和约束函数的梯度`grad_g`和`grad_h`。然后根据增广拉格朗日函数的梯度公式更新拉格朗日乘子`lambda`。最后,根据更新后的拉格朗日乘子计算增广拉格朗日函数的梯度,并利用梯度下降更新解`x`。 循环中的停止条件是增广拉格朗日函数的梯度`grad_lag`的2范数小于收敛条件`epsilon`。 希望这个回答能对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值