• 大小: 278KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-07-07
  • 语言: C/C++
  • 标签: C++  

资源简介

刚接触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


评论

共有 条评论