首页  >> 水信息共享平台  >> 资料共享
AHP判断矩阵的一致性检验与权重求解代码
作者 wbadmin   查看 1445   发表时间 2007/6/25 15:07  【论坛浏览】
层次分析法AHP的判断矩阵的一致性检验与特征向量(权重)求解czuslafzex
调试通过但未全面检验,欢迎探讨!czuslafzex
czuslafzex
  代码:
int doAhpWeight(int n, double x[], double w[], double &CR)czuslafzex
{czuslafzex
//本函数根据叶义成教材P86和法算法czuslafzex
//n:判断矩阵维数,输入值czuslafzex
//x:判断矩阵,输入值czuslafzex
//w:特征向量,即权重,返回值czuslafzex
//CR:随机一致性比率CR=CI/RI,返回值czuslafzex
//返回0为正常;返回-1为判断矩阵格式不合要求;返回-2为不满足一致性czuslafzex
const double RI[16] = {0.0, 0.0, 0.0, 0.5149, 0.8931, 1.1185, 1.2494, 1.3450, 1.4200, czuslafzex
1.4616, 1.4874, 1.5156, 1.5405, 1.5583, 1.5779, 1.5894};czuslafzex
int i, j;czuslafzex
double tmpSum1, tmpSum2;czuslafzex
double rMax;czuslafzex
double CI;czuslafzex
double *q;czuslafzex
double *c;czuslafzex
q = new double[n*n];czuslafzex
c = new double[n];czuslafzex
if (n<=1 || n>=16)czuslafzex
return -1;czuslafzex
for (i=0; iczuslafzex
{czuslafzex
if ( fabs(x[i*n+i]-1.0) > 0.00001 )czuslafzex
return -1;czuslafzex
for (j=0; jczuslafzex
{czuslafzex
if (fabs(x[i*n+j]*x[j*n+i]-1.0) > 0.001)czuslafzex
return -1;czuslafzex
}czuslafzex
}czuslafzex
for (j=0; jczuslafzex
{czuslafzex
tmpSum1 = 0.0;czuslafzex
for (i=0; iczuslafzex
{czuslafzex
tmpSum1 = tmpSum1 + x[i*n+j];czuslafzex
}czuslafzex
for (i=0; iczuslafzex
{czuslafzex
q[i*n+j] = x[i*n+j]/tmpSum1;czuslafzex
}czuslafzex
}czuslafzex
for (i=0; iczuslafzex
{czuslafzex
tmpSum1 = 0.0;czuslafzex
for (j=0; jczuslafzex
{czuslafzex
tmpSum1 = tmpSum1 + q[i*n+j];czuslafzex
}czuslafzex
c = tmpSum1;czuslafzex
}czuslafzex
tmpSum1 = 0;czuslafzex
for (i=0; iczuslafzex
{czuslafzex
tmpSum1 = tmpSum1 + c;czuslafzex
}czuslafzex
for (i=0; iczuslafzex
{czuslafzex
w = c/tmpSum1;czuslafzex
}czuslafzex
tmpSum1 = 0;czuslafzex
for (i=0; iczuslafzex
{czuslafzex
tmpSum2 = 0;czuslafzex
for (j=0; jczuslafzex
{czuslafzex
tmpSum2 = tmpSum2 + x[i*n+j]*w[j];czuslafzex
}czuslafzex
tmpSum1 = tmpSum1 +tmpSum2/w;czuslafzex
}czuslafzex
rMax = tmpSum1/n;czuslafzex
CI = (rMax-n)/(n-1);czuslafzex
CR = CI/RI[n];czuslafzex
if (CR>=0.1)czuslafzex
return -2;czuslafzex
delete []q; delete []c;czuslafzex
}
czuslafzex

序号 评论者 共有评论 1   【论坛浏览】  【发表评论】 评论时间
1 yesterday 看不懂 2007/6/25 15:10
 共有评论数 1  每页显示 10
页码 1/1  |<  <<   1   >>  >| 
登录信息  
文章列表  
Powered by DiY-Page 5.1.2 © 2005-2008