汇丰游戏网-游戏玩家聚集地

汇丰游戏网-游戏玩家聚集地

如何用matlab软件求权重

59

在MATLAB中求权重的方法有多种,具体选择哪种方法取决于你的需求和问题的性质。以下是一些常见的方法及其对应的MATLAB代码示例:

遗传算法求解权重

使用遗传算法优化目标函数,以最小化误差平方和,得到各权重的全局最优解和估计值。

```matlab

MODEL: SETS: TIME/1..14/:Y,Y_ESTIMATE; COL/1..3/:SIGMA; LINK(COL,TIME):X; ENDSETS

DATA: Y=555,134,282,497,292,200,64,125,252,417,406,330,350,447; ENDDATA

MIN=@SUM(TIME(J):(Y(J)-@SUM(COL(I):SIGMA(I)*X(I,J)))^2); @SUM(COL(I):SIGMA(I))=1; @FOR(TIME(J):Y_ESTIMATE(J)=@SUM(COL(I):SIGMA(I)*X(I,J))); END

```

熵权法求权重

根据熵权法理论,编写MATLAB程序求指标权重。

```matlab

function weights = EntropyWeight(R)

[rows,cols]=size(R);

k=1/log(rows);

f=zeros(rows,cols);

sumBycols=sum(R,1);

for i=1:rows

for j=1:cols

f(i,j)=R(i,j)./sumBycols(1,j);

end

end

lnfij=zeros(rows,cols);

for i=1:rows

for j=1:cols

if f(i,j)==0

lnfij(i,j)=0;

else

lnfij(i,j)=log(f(i,j));

end

end

end

Hj=-k*(sum(f.*lnfij,1));

weights=(1-Hj)/(cols-sum(Hj));

end

```

层次分析法(AHP)求权重

通过层次分析法计算权重,并进行一致性检验。

```matlab

clc;clear all;

A=[1 2 6;1/2 1 4;1/6 1/4 1];

[n,n]=size(A);

[v,d]=eig(A);

r=d(1,1);

CI=(r-n)/(n-1);

RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.52 1.54 1.56 1.58 1.59];

CR=CI/RI(n);

if(CR<0.10)

CR_RESULT='通过';

else

CR_RESULT='不通过';

end

w=v(:,1)/sum(v(:,1));

w=w';

disp(['该判断矩阵权向量计算报告:']);

disp(['一致性指标:' num2str(CI)]);

disp(['一致性比例:' num2str(CR)]);

disp(['一致性检验结果:' CR_RESULT]);

disp(['特征值:' num2str(r)]);

disp(['特征向量:' num2str(w)]);

```

变异系数法求权重

通过变异系数法计算权重。