层次分析法矩阵权重和,根,特征值法,c语言计算

合集下载

数学建模——层次分析法

数学建模——层次分析法

数学建模——层次分析法层次分析法(Analytic Hierarchy Process,AHP)是一种用于复杂决策和评估问题的定量方法,旨在帮助决策者在多个准则和选项之间进行权衡和选择。

该方法由美国学者Thomas L. Saaty于1970年代初提出,已经广泛应用于管理、工程、经济学、环境科学等领域。

方法步骤:1.建立层次结构:将复杂的决策问题分解为不同层次的因素和准则,形成层次结构。

层次结构包括目标层、准则层和选择层。

2.创建比较矩阵:对每个层次内的准则和选择进行两两比较,确定它们之间的相对重要性。

使用尺度来表示两者之间的相对优先级,通常是1到9之间的数值。

3.计算权重:通过计算比较矩阵的特征向量,得出每个准则和选择的权重。

特征向量反映了每个准则和选择对目标的贡献程度。

4.一致性检验:检查比较矩阵的一致性,确保所做的两两比较是合理的。

如果比较矩阵不够一致,需要进行调整。

5.计算综合得分:将每个选择的权重与其所属准则的权重相乘,得出每个选择的综合得分。

综合得分反映了每个选择在整体目标中的重要性。

6.做出决策:根据综合得分,确定最佳选择。

较高的综合得分通常意味着更优选。

示例:选择旅游目的地假设你想选择一个旅游目的地,考虑了三个因素:景色美丽度、文化体验和交通便利性。

你将这三个因素作为准则,然后列出了三个潜在的旅游目的地:A、B 和C。

步骤:1.建立层次结构:2.目标层:选择最佳旅游目的地3.准则层:景色美丽度、文化体验、交通便利性4.选择层:A、B、C5.创建比较矩阵:比较准则之间的相对重要性,如景色美丽度相对于文化体验的比较,以及文化体验相对于交通便利性的比较。

使用1到9的尺度,表明一个因素比另一个因素重要多少。

6.计算权重:计算每个准则和每个选择的权重,使用特征向量法。

7.一致性检验:检查比较矩阵的一致性。

如果一致性不够,可能需要重新考虑比较。

8.计算综合得分:将每个选择的权重与其所属准则的权重相乘,得出每个选择的综合得分。

层次分析法、权重向量的确定

层次分析法、权重向量的确定

填aij 用 F=1/2 F=1/3 F=1/4 F=1/5 F=1/6 t;W>
矩阵
分数值
0.5
0.333333
0.25
0.2
0.166667 0.142857
判断矩阵 4 A 自建立 1 1 1 1 0.2 0.333333 0.333333 0.333333
阶 5 3 1 1 3 3 1 1
0.090909 )T
*λ 的值
3
计算得 *C.R C.R=C.I/R.I
0
F=1/8
F=1/9
0.125
0.111111
各列单位化 10 0.5 0.3 0.1 0.1 8 0.375 0.375 0.125 0.125 橘黄列和 B各行和 1.644737 1.444737 0.428947 0.481579 4 单位化 0.411184 0.361184 0.107237 0.120395 1
计算得 C.I 0.010946 C.I=(λ -n)/(n-1)
查表得 R.I
0.9
填aij 用 F=1/2 F=1/3 0.333333 F=1/4 0.25 F=1/5 0.2 F=1/6 F=1/7
5*5
步骤 (一)
矩阵
分数值
0.5
0.166667 0.142857
判断矩阵
5

判断矩阵各列单位化
层次分析法:由判断矩阵确定权重向量
计算公式:λ =(AW)1 /n*w1 +(AW)2 /n*w2 +………+(AW)n /n*wn 计算公式:C.I=(λ -n)/(n-1) 填aij 用 F=1/2 F=1/3 0.333333 F=1/4 0.25 C.R=C.I/R.I F=1/5 0.2 F=1/6 R.I查表取得 F=1/7

用层次分析法计算权重

用层次分析法计算权重

用层次分析法计算权重一、本文概述层次分析法(Analytic Hierarchy Process,简称AHP)是一种定性与定量分析相结合的多准则决策方法,由美国运筹学家T.L.Saaty教授于20世纪70年代提出。

该方法通过构建一个层次结构模型,将复杂问题分解为多个组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成一个多层次的分析结构模型。

通过两两比较的方式确定层次中诸因素的相对重要性,然后综合决策者的判断,确定决策方案相对重要性的总的排序。

层次分析法在权重计算中具有广泛的应用,包括项目管理、资源分配、风险评估、产品选择等各个领域。

本文将详细介绍层次分析法的原理、步骤及其在权重计算中的应用,帮助读者更好地理解和应用这一方法。

二、层次分析法基本原理层次分析法(Analytic Hierarchy Process,简称AHP)是一种定性与定量相结合的决策分析方法,由美国运筹学家T.L.Saaty在20世纪70年代初期提出。

这种方法将复杂的问题分解为各个组成因素,并将这些因素按照支配关系分组形成递阶层次结构。

通过两两比较的方式确定层次中诸因素的相对重要性,然后综合决策者的判断,确定决策方案相对重要性的总的排序。

层次分析法适用于存在多目标、多准则、多方案的系统评价、决策、预测等问题,尤其适用于那些难以完全用定量方法解决的复杂问题。

分解原理:将复杂的问题分解为若干个相对简单的子问题,这些子问题称为元素或因素。

每个元素都对应一个具体的评价准则或决策目标。

比较原理:通过两两比较的方式确定元素之间的相对重要性。

比较的结果以数值形式表示,通常使用1-9标度法,其中1表示两个元素同等重要,9表示一个元素比另一个元素极端重要,中间值表示不同等级的重要性。

合成原理:根据元素之间的相对重要性,通过合成运算得到元素的整体重要性排序。

合成运算通常采用加权求和的方法,权重由元素之间的相对重要性决定。

层次分析法

层次分析法

1. 层次分析法(The analytic hierarchy process, 简称AHP)用于解决评价类问题,例如:选择那种方案最好、哪位运动员或者员工表现的更优秀。

评价类问题可以用打分解决。

层次分析法 (The Analytic Hierarchy Process即 AHP)是由美国运筹学家、匹兹堡大学教授T. L. Saaty于20世纪70年代创立的一种系统分析与决策的综合评价方法, 是在充分研究了人类思维过程的基础上提出来的, 它较合理地解决了定性问题定量化的处理过程。

AHP的主要特点是通过建立递阶层次结构, 把人类的判断转化到若干因素两两之间重要度的比较上, 从而把难于量化的定性判断转化为可操作的重要度的比较上面。

在许多情况下, 决策者可以直接使用AHP进行决策, 极大地提高了决策的有效性、可靠性和可行性, 但其本质是一种思维方式, 它把复杂问题分解成多个组成因素, 又将这些因素按支配关系分别形成递阶层次结构, 通过两两比较的方法确定决策方案相对重要度的总排序。

整个过程体现了人类决策思维的基本特征,即分解、判断、综合,克服了其他方法回避决策者主观判断的缺点。

1.1模型介绍1.1.1引例高考结束了,小明该选择华科还是五武大?小明最关心四个方面:学习氛围0.4、就业前景0.3、男女比例0.2、校园景色0.19(权重和为1)(1)学习氛围:经查阅资料查到“学在华工,玩在武大,爱在华师”一句话,因此在学习氛围方面给华科0.7,给武汉大学0.3.(2)就业前景:搜索两所学校就业率差不多,因此在就业前景方面对两所学校均赋予0.5的权重。

(3)男女比例:经查询,华科男女比例2:1,武大1.35:1,因此武大0.7分,华科0.3分(4)校园景色:华科0.25分,武大0.75分整理权重表格:指标权重华科武大学习氛围0.40.70.3就业前景0.30.50.5男女比例0.20.30.7校园景色0.10.250.75华科最终的得分:0.7*0.4+0.5*0.3+0.3*0.2+0.25+*0.1=0.515分武大最终得分:0.3*0.4+0.5*0.3+0.7*0.2+0.75*0.1=0.485分1.1.2 模型1、关键词:打分法、确定评价指标、形成评价体系2、解决评价类问题,首先确定以下三个问题:(1)评价的目标是什么(2)为了达到这个目标有哪几种可选的方案(3)评价的准则或者说指标是什么(我们根据什么东西来评价好坏)。

权重计算公式与8种确定权重的方法

权重计算公式与8种确定权重的方法

权重计算公式与8种确定权重的方法权重计算是一种常用的数学方法,用于确定不同因素对一个问题或数据集的重要性。

在现实世界中,我们经常需要对不同的因素进行权重计算,以便更好地理解和解决问题。

一、权重计算公式W=(V/ΣV)×100其中,W是要计算的因素的权重,V是该因素的值,ΣV是所有因素值的总和。

这个公式的思想是将每个因素的值除以所有因素值的总和,然后将结果乘以100,得到每个因素的权重。

这样计算得到的权重是一个百分比,表示一些因素对整体的相对重要性。

确定权重的方法有很多种,以下是八种常用的方法:1.专家评估法:通过专家的经验和知识来确定各个因素的权重。

专家可以根据自己的判断和经验,给出不同因素的相对重要性。

2.层次分析法:将问题拆分成多个层次,然后通过对每个层次进行判断和评估,计算出每个因素的权重。

这个方法适用于复杂的问题,可以帮助人们更好地理解问题的本质。

3.权重矩阵法:将不同因素之间的相对重要性表示成一个矩阵,然后根据矩阵的特征值和特征向量来确定权重。

这个方法适用于多因素决策问题,可以很好地反映出不同因素之间的关系。

4.反馈循环法:不断循环迭代,将专家给出的权重和实际情况进行比较,利用反馈来调整权重。

这个方法适用于动态变化的问题,可以根据实时的情况来确定权重。

6.数据挖掘法:通过对数据集的分析和建模,确定不同因素之间的关系,并计算出权重。

这个方法适用于大规模的数据集,可以利用机器学习和统计学方法来计算权重。

7.统计方法:通过统计分析的方法,计算不同因素的权重。

例如,可以采用回归分析或者相关分析来计算权重。

8.先验权重法:根据实际情况和主观判断给出不同因素的先验权重。

这个方法适用于缺乏数据和专家意见的情况,可以根据个人的判断和经验来确定权重。

以上八种方法各有优劣,适用于不同的情况。

在实际应用中,可以根据问题的特点和要求选择合适的方法来确定权重。

总结:权重计算是一种重要的数学方法,用于确定不同因素的重要性。

层次分析法解题过程

层次分析法解题过程

根据组合权向量 进行方案…
根据问题的性质和目标, 将问题分解为不同的组成 因素,并根据因素间的相 互关联影响以及隶属关系 将因素按不同的层次聚集 组合,形成一个多层次的 分析结构模型。
对同一层次的各元素关于 上一层次中某一准则的重 要性进行两两比较,构造 两两比较判断矩阵。
通过判断矩阵计算被比较 元素的相对权重,并对判 断矩阵进行一致性检验。
层次分析法解题过程
目录
Contents
• 层次分析法简介 • 建立层次结构 • 构造判断矩阵 • 层次单排序 • 层次总排序 • 层次分析法应用案例
01
层次分析法简介
定义与特点
定义
层次分析法(Analytic Hierarchy Process,AHP)是一种定性与定量相结合的多准则决策 分析方法,主要用于解决结构较为复杂、决策准则较多且不易量化的决策问题。
层次的分析结构模型。
根据专家意见或用户需求, 对同一层次中各因素的相对 重要性进行两两比较,并给 出判断值,形成判断矩阵。
通过一定的计算方法(如特 征根法、和积法等)计算出 判断矩阵的最大特征值对应 的特征向量,即为权向量。
为了确保判断矩阵的一致性,需要进 行一致性检验。通过计算一致性指标 CI和随机一致性指标RI,可以得出一 致性比率CR=CI/RI。如果CR小于0.1, 则认为判断矩阵的一致性可以接受;
定义与特点
所需定量数据信息较少
层次分析法在解决问题时,不需要大量的定量数据信息,只需要对决策因素进 行两两比较和排序即可。
强调决策者的判断和决策能力
层次分析法在解决问题时,需要决策者对决策因素进行两两比较和排序,因此 需要决策者具备一定的判断和决策能力。
应用领域

层次分析法计算公式

层次分析法计算公式

层次分析法计算公式
分层次分析法(Analytic Hierarchy Process,AHP)是一种用来分
析复杂决策问题的技术,它是由美国管理学家Thomas Saaty在1970年末
开发的。

AHP是一种从多个不同的角度对复杂的决策问题进行分解,从而
识别出决策问题中的变量之间的关系,并在此基础上建立优先级的方法。

AHP的基本思想是将复杂的决策问题分解为一系列层次的子问题,将
不同层次的子问题用比较的方法进行比较,从而得出解决问题的一系列优
先级次序。

AHP的计算步骤包括建立层次结构,建立决策矩阵,确定归一
化向量,确定最终的得分和优先级。

1、建立层次结构:AHP的层次结构是分析复杂决策问题的第一步,
它包括三个层次:根层、中间层和叶节点层。

根层描述决策问题的最高一级,负责概括整个决策问题;中间层描述
决策问题在不同的方面,将整个决策问题划分为多个子问题;叶节点层描
述各个子问题的具体内容,它们不再能进行分解,代表最终要解决的问题。

2、建立决策矩阵:决策矩阵是通过对比法,对各决策因素之间进行
比较并用矩阵来表示的。

决策矩阵由三部分组成:行列式、行列式所在的矩阵的行、列分别表
示不同决策因素之间的相对优劣,即矩阵的每个单元表示一种比较关系;。

层次分析法的计算_图文_图文

层次分析法的计算_图文_图文

它们对于元素
的层次单排序权值分别为
(当 与 无关系时, )。此时B层次总 排序权值如表二给出。
层次 A1 A2 ……
a1 a2 ……
B1
b11 b12 ……
B2
b21 b22 ……



Bn
bn1 bn2 ……


Am B层次总排 am 序权重
b1m
w1
b2m
w2


bnm
wn
同样,三个方案对于各个准则的判断矩阵 以及运算所得的结果见三、四、五、六。
0.1818 0.7272 0.0910
表三
A
B
CW
A1
1/4
B4
1
C 1/2 1/8
2 0.1818 8 0.7272 1 0.0910
对准则 (功能强)来说: 即认为判断矩阵具有满意的一致性。
表四
A
B
CW
对准则 (价格低)来说:
A
1
4
1/3 0.2559
B
1/4
1
1/8 0.0733
即C认为判断3矩阵具有8满意的一1 致性0.。6708
解:1、明确问题;2、建立层次结构;先构造层
次结构,如下图所示。
购买一台满意的计算机G
目标层
功能强S1
价格低S2
易维护S3 准则层
A
B
C
方案层
对于三个准则(S1,S2,S3)关于 目标G的优先顺序,根据讨论,该厂在计算 机应用上首先要求功能强,其次要求易维 护,再次才是价格低。其判断矩阵如下表 所示。
例如
由于e4=e3,迭代经过4次中止,权矩阵A的每一列归一化
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
y=tran(N,x,fin,temp);
}*/
y=tran(N,x,fin,temp);
printf("\n最大特征值为:%4.4f",x);
switch(N)
{
case 3: w=(x-3)/2/0.52;break;
case 4: w=(x-4)/3/0.89;break;
case 5: w=(x-5)/4/1.12;break;
m[i]=1;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
m[i]=m[i]*a[i][j];
m[i]=pow(m[i],1/nn);
}
for(k=0;k<N;k++)
{
temp=temp+m[k];
}
for(i=0;i<N;i++)
{
m[i]=m[i]/temp;
printf("%4.4f \n ",m[i]);
}*/
n=tz(N,a);
if(n==1)
{
printf("\n根的方法:\n");
mu(N,a);
printf("\n和的方法:\n");
sum(N,a);
}
printf("\n按回车键结束");
s=getchar();
for(i=0;i<1e100;i++);
}
case 12: w=(x-12)/11/1.54;break;
case 13: w=(x-13)/12/1.56;break;
}
printf("\nCI/RI=%0.2f",w);
if (w<0.1)
{
printf("\n一致性检验通过。");
printf("\n特征值法的方法:\n");
h=0;
int i,j,k;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
sum[i]=sum[i]+a[j][i];
}
for(k=0;k<N;k++)
{
a[k][i]=a[k][i]/sum[i];
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
pro[i]=a[i][j]+pro[i];
for(j=0;j<N;j++)
temp[i][j]=a[i][j];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(i==j)
temp[i][j]-=x;
for (j=0;j<N-1;j++)
{
for (i=j+1;i<N;i++)
{
flag=0;
c=temp[i][j]/temp[j][j];
x=100;
do
{
x0=x;
m=x+s;
y=tran(N,x,fin,temp);
k=(tran(N,m,fin,temp)-y)/s;
x=x0-y/k;
n++;
}while(fabs(x-x0)>1e-10);
//x=x0;y=tran(x,fin,temp);
/*for(;fabs(y-0)>0.1;x=x-0.0001)
//矩阵权重2010.cpp :定义控制台应用程序的入口点。
#include "stdafx.h" //vs2010以上版本有此项
#include"stdio.h"
#include"math.h"
void sum(int N,double a[13][13])
{
double sum[13]={0},pro[13]={0};
}
return 1;
}
else
{
printf("\n一致性检验不通过\n");
return 0;
}
}
void main()
{
int i,n,N=4;//N为方阵介数a为方阵;
chars;
double a[13][13]={
{1,2,3,3},
{0.5,1,2,2},
{0.333333333,0.5,1,1},
}
int tz(int N,double a[13][13])
{
double min,h,w,s,x,x0,k,y,m,temp[13][13],fin[13]={0};
int n=0,i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
temp[i][j]=a[i][j];
s=0.000000000001;
temp[i][n]=temp[i][n]-c*b;
}
}
}
u++;
for(n=0;n<N;n++)
{
sum=sum*temp[n][n];
}
sum=r*sum;
printf("\rtimes %d %4.4f",u,sum);
//for(n=N-1;fabs(temp[n][n])<0.0001;n--)
{0.333333333,0.5,1,1
}
};
/*printf("请输入介数\n");2
scanf("%d",&N);
printf("请输入上对角线元素(不包括主对角线)形如: 22 34 45 56 34 \n");
for( i=0;i<N;i++)
for( j=0;j<N;j++)
{
if(i<j)
}
}
double tran( int N,double x, double *p,double a[13][13] )
{
int i,j,n,k,flag,r;
double lin, c1;
static int u=0;
r=1;
for(i=0;i<N;i++)
min=fabs(fin[0]);
for(n=0;n<N;n++)
{
if(fabs(fin[n])>min)
min=fabs(fin[n]);//h=h+fabs(fin[n]);
}
for(n=0;n<N;n++)
{
h=fabs(fin[n])/min+h;
}
for(n=0;n<N;n++)
{
printf("%4.4f \n ",fabs(fin[n])/min/h);
pro[i]=pro[i]/N;
}
for (i=0;i<N;i++)
printf("%4.4f \n ",pro[i]);
}
void mu(int N,double a[13][13])
{
double m[13]={0}, temp=0.0,nn;
int i,j,k;
nn=double(N);
for (i=0;i<N;i++)
//k=n-1;
k=N-1;
for(i=0;i<N;i++)
{
lin=temp[i][i];
for(j=i;j<N;j++)
{
temp[i][j]=temp[i][j]/lin;
}
}
for(i=0;i<N;i++)
{
q=p+i;
*q=temp[i][N-1];
}
return sum;/*将值返回*/
if(temp[j][j]==0)
{
for (k=j;k<N;k++)
{
if(temp[k][j]!=0)
{
flag=1;
for(n=j;n<N;n++)
{
temp[i][n]=temp[k][n];
}
r=-r;
}
}
if(flag==0)
{
break;
}
}
for(n=j;n<N;n++)
{
b=temp[j][n];
case 6: w=(x-6)/5/1.26;break;
case 7: w=(x-7)/62/1.36;break;
case 8: w=(x-8)/7/1.41;break;
case 9: w=(x-9)/8/1.46;break;
case 10: w=(x-10)/9/1.49;break;
case 11: w=(x-11)/10/1.52;break;
scanf("%fl",&a[i][j]);
else if(i==j)
a[i][j]=1;
相关文档
最新文档