声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4719|回复: 25

[计算数学] 求助应用层次分析法用MATLAB软件做出这道题的程序

[复制链接]
发表于 2007-6-4 15:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
某大学将毕业就业,有三个单位可供选择,假设该生选择职业时主要考虑如下因素:(1)进一步深造条件;(2)单位今后发展前景;(3)本人的兴趣和爱好;(4)单位所处的地域;(5)单位的声誉;(6)单位的经济效益,工资与福利待遇。


使用MATLAB软件 做  希望如果有人会马上回复 谢谢了 我急用  网上找了找不到的

[ 本帖最后由 xinyuxf 于 2007-6-5 10:18 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-6-4 16:00 | 显示全部楼层
没有期望值?
把问题说明白,你说的太简单了
发表于 2007-6-4 16:01 | 显示全部楼层
上面的问题怎么量化?
 楼主| 发表于 2007-6-4 16:07 | 显示全部楼层
disp('请输入判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while  k>p
  i=i+1;
  x(:,i)=A*y(:,i-1);
  m(i)=max(x(:,i));
  y(:,i)=x(:,i)/m(i);
  k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp(w);disp(t);
         %以下是一致性检验
CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if CR<0.10
    disp('此矩阵的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
end
 楼主| 发表于 2007-6-4 16:08 | 显示全部楼层
就是套这个程序来做 可是我根本都不会 我们实习的论文 可是没实习 就是直接让交论文 而且我这段时间也没去上课 所以不会
还需要什么资料我这都有

[ 本帖最后由 mjhzhjg 于 2007-6-5 10:27 编辑 ]
 楼主| 发表于 2007-6-4 16:15 | 显示全部楼层
目标层       选择工作单位 A

               深造条件B1
               发展前途B2
               兴趣爱好B3
准则层       单位地域B4
               单位声誉B5
               工资福利B6

               单位C1
方案层       单位C2
               单位C3

该生分析上述个因素,构造个因素成对比阵为

              B1     B2    B3    B4     B5     B6
B1           1        1     1       4      1       1/2
B2           1        1     2       4      1       1/2
B3           1        1/2   1      5      3       1/2
B4          1/4     1/4    1/5    1     1/3      1/3
B5           1        1      1/3    3      1        1
B6           2        2       2      3      1        1



就这么建立模型 然后再计算出权向量之类的  还有对比阵 但是我不知道具体怎么编到程序里
发表于 2007-6-4 16:28 | 显示全部楼层
disp('请输入判断矩阵A(n阶)');
A=[1        1     1       4      1       1/2
1        1     2       4      1       1/2
     1        1/2   1      5      3       1/2
   1/4     1/4    1/5    1     1/3      1/3
       1        1      1/3    3      1        1
       2        2       2      3      1        1];

[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while  k>p
  i=i+1;
  x(:,i)=A*y(:,i-1);
  m(i)=max(x(:,i));
  y(:,i)=x(:,i)/m(i);
  k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp(w);disp(t);
         %以下是一致性检验
CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if CR<0.10
    disp('此矩阵的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
end
 楼主| 发表于 2007-6-4 16:32 | 显示全部楼层
让带中文吗? 直接这么写就可以吗? 可是那个RI矩阵不是还得换吗?

[ 本帖最后由 mjhzhjg 于 2007-6-5 10:28 编辑 ]
发表于 2007-6-4 16:35 | 显示全部楼层
RI矩阵?那个?不就是那个期望值矩阵吗?7楼给的那个?不是吗?
matlab里面可以有中文,没关系,不想要你自己删掉
 楼主| 发表于 2007-6-4 16:41 | 显示全部楼层
不是那个 那个不是A矩阵吗 后面最后不是还有个RI矩阵吗 那个矩阵怎么可能和给的源程序是一个呢  不是要换数吗?

[ 本帖最后由 mjhzhjg 于 2007-6-5 10:29 编辑 ]
发表于 2007-6-4 16:47 | 显示全部楼层
RI矩阵具体含义如何?不好意思,刚才没看清楚
如果猜测实话应该是矩阵A各列之和组成
 楼主| 发表于 2007-6-4 16:56 | 显示全部楼层
解题时求出了个权向量(0。17   0。19   0。22  0。05   0。15   0。22)的转置
然后t=6.46    CI=0.092
  CR=CI/RI=0.092/1.24=0.07<0.1

然后就是几个比较阵了  还有这个程序中间的那些m  n值都不需要换成具体数吗?
发表于 2007-6-4 17:02 | 显示全部楼层
那RI就是等于[0.17   0.19   0.22  0.05   0.15   0.22]
m,n不用赋值,n是矩阵维数,系统根据矩阵A判断,m根据前面条件系统决定
disp('请输入判断矩阵A(n阶)');
A=[1        1     1       4      1       1/2
1        1     2       4      1       1/2
     1        1/2   1      5      3       1/2
   1/4     1/4    1/5    1     1/3      1/3
       1        1      1/3    3      1        1
       2        2       2      3      1        1];

[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while  k>p
  i=i+1;
  x(:,i)=A*y(:,i-1);
  m(i)=max(x(:,i));
  y(:,i)=x(:,i)/m(i);
  k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp(w);disp(t);
         %以下是一致性检验
CI=(t-n)/(n-1);RI=[0.17   0.19   0.22  0.05   0.15   0.22];
CR=CI/RI(n);
if CR<0.10
    disp('此矩阵的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
end
 楼主| 发表于 2007-6-4 17:05 | 显示全部楼层
%以下是一致性检验
这句也需要打上吗? 这句什么意思啊? 能输出吗? 我这里没安MATLAB软件 所以不好意思再问一句  谢谢拉
发表于 2007-6-4 17:11 | 显示全部楼层
可以写可以不写,这是注释语句,写上就是为了知道程序的那一部分是什么功能
注释语句是不会有输出的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-30 11:38 , Processed in 0.064875 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表