资源简介
刚接触AHP时编写的C++实现代码,内附注释及实例说明。
代码片段和文件信息
//-----------------------------------------------------------------
//三层结构的层次分析法实现程序AHP.cpp(nuaaxuyp 2010.5.7)
//层次结构的特征:(方案层的方案个数)=(Bi准则对应方案矩阵的阶数)
//此程序中判断矩阵由键盘输入(也可以从文件读入)
#include
#include
double* eigen(double *pint n){ //使用和法求矩阵特征根和特征向量
double *A1*A2*sum1*sum2*W;
A1=new double[n*n];
A2=new double[n];
sum1=new double[n];
sum2=new double[n];
W=new double[n+1];
double sum3sum4lambda;
sum3=sum4=0.0;
int ij;
for(i=0;i sum1[i]=0.0;
for(j=0;j sum1[i]+=p[j*n+i];
for(j=0;j A1[j*n+i]=p[j*n+i]/sum1[i];
}
for(i=0;i sum2[i]=0.0;
for(j=0;j sum2[i]+=A1[i*n+j];
}
for(i=0;i sum3=sum3+sum2[i];
for(i=0;i W[i]=sum2[i]/sum3;
for(i=0;i A2[i]=0.0;
for(j=0;j A2[i]+=p[i*n+j]*W[j];
}
for(i=0;i sum4+=A2[i]/W[i];
lambda=sum4/n;
W[n]=lambda;
return W;
delete []A1;
delete []A2;
delete []sum1;
delete []sum2;
delete []W;
}
void main(){
int mnij;
double CICR*p*q*A;
double RI[11]={000.580.901.121.241.321.411.451.491.51};
cout<<“请输入准则个数:“; //求目标A的准则层判断矩阵的特征向量
cin>>n;
m=n;
p=new double[n*n];
cout<<“请输入准则层对目标层的判断矩阵:“< for(i=0;i cin>>p[i];
}
q=eigen(pn); //求准则层判断矩阵的特征根及特征向量
A=q;
CI=(q[n]-n)/(n-1); //一致性检验
CR=CI/RI[n-1];
if(CR<0.1){
cout.setf(ios::fixedios::floatfield);
cout.precision(4);
cout<<“准则层判断矩阵CR=“< }
else{
cout.setf(ios::fixedios::floatfield);
cout.precision(4);
cout<<“准则层判断矩阵CR=“< }
cout<<“准则层对目标层权向量为:“< for(i=0;i cout.setf(ios::leftios::adjustfield); //设置输出为左对齐
cout.setf(ios::fixedios::floatfield); //设置以定点数格式输出
cout.precision(4); //设置精度
cout< }
cout< delete p;
double *B[10]*C[10]*W1*W2;
cout<<“请输入方案个数:“;
cin>>n;
W1=new double[m*n];
W2=new double[n];
cout<<“请输入方案层对准则层的各判断矩阵:“< for(j=0;j cout<<“B“< p=new double[n*n];
for(i=0;i cin>>p[i];
}
B[j]=p;
}
for(j=0;j q=eigen(B[j]n);
C[j]=q;
CI=(q[n]-n)/(n-1); //一致性检验
CR=CI/RI[n-1];
if(CR<0.1){
cout.setf(ios::fixedios::floatfield);
cout.precision(4);
cout<<“准则B“< }
else{
cout.setf(ios::fixedios::floatfield);
cout.precision(4);
cout<<“准则B“< }
}
for(j=0;j for(i=0;i W1[m*i+j]=C[j][i];
cout<<“方案层对准则层权向量为:“< for(j=0;j cout.setf(ios::leftios::adjustfield); //设置输出为左对齐
cout.setf(ios::fixedi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 96768 2010-05-07 16:08 AHP的C++代码\实例说明及程序执行结果.doc
文件 3962 2010-05-07 16:09 AHP的C++代码\层次分析法(AHP)C++代码\AHP.cpp
文件 3365 2010-05-07 15:58 AHP的C++代码\层次分析法(AHP)C++代码\AHP.dsp
文件 531 2010-05-07 16:09 AHP的C++代码\层次分析法(AHP)C++代码\AHP.dsw
文件 41984 2010-05-07 16:09 AHP的C++代码\层次分析法(AHP)C++代码\AHP.ncb
文件 48640 2010-05-07 16:09 AHP的C++代码\层次分析法(AHP)C++代码\AHP.opt
文件 1153 2010-05-07 15:59 AHP的C++代码\层次分析法(AHP)C++代码\AHP.plg
文件 233553 2010-05-07 15:59 AHP的C++代码\层次分析法(AHP)C++代码\Debug\AHP.exe
文件 268744 2010-05-07 15:59 AHP的C++代码\层次分析法(AHP)C++代码\Debug\AHP.ilk
文件 17520 2010-05-07 15:58 AHP的C++代码\层次分析法(AHP)C++代码\Debug\AHP.obj
文件 260832 2010-05-07 15:58 AHP的C++代码\层次分析法(AHP)C++代码\Debug\AHP.pch
文件 558080 2010-05-07 15:59 AHP的C++代码\层次分析法(AHP)C++代码\Debug\AHP.pdb
文件 41984 2010-05-07 15:59 AHP的C++代码\层次分析法(AHP)C++代码\Debug\vc60.idb
文件 61440 2010-05-07 15:58 AHP的C++代码\层次分析法(AHP)C++代码\Debug\vc60.pdb
目录 0 2010-05-07 15:58 AHP的C++代码\层次分析法(AHP)C++代码\Debug
目录 0 2010-05-07 16:09 AHP的C++代码\层次分析法(AHP)C++代码
目录 0 2010-05-07 16:09 AHP的C++代码
----------- --------- ---------- ----- ----
1638556 17
- 上一篇:下行法求故障树最小割集
- 下一篇:回溯算法的N皇后
相关资源
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- c++ 简易贪吃蛇源码
- 高精度加法(c++代码)
- C++调用百度地图案例
- 北京化工大学计算方法(C/C++)讲义
- 基于VC++的SolidWorks二次开发SolidWorks
- c++ 模拟鼠标按键
- OFD编辑器
- Beginning C++17 From Novice to Professional
- C++ STL实现
- opencv手部轮廓识别以及轨迹识别
- 百度C++编码规范
- C++ sql2008 WebServer通讯.docx
- c++ 定时关机程序源码
- 基于VSCode和CMake实现C++开发
- c++语法查询工具
- c++ 账务系统源码
- GBT 28169-2011 嵌入式软件 C语言编码规范
- c++ 猜拳小游戏
- XUnZip Zip解压缩.rar
评论
共有 条评论