数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
楼主: turing_123

层次分析法的程序?

[复制链接]
发表于 2003-8-5 09:11:25 | 显示全部楼层
可以用在很多地方。
发表于 2003-8-6 01:57:32 | 显示全部楼层
《数学建模》姜启源的书上有详细的内容。
比如2002年B题用层次分析法可以解决,你可以找一下网站上给的优秀论文。
 楼主| 发表于 2003-8-6 06:17:45 | 显示全部楼层

 楼主| 发表于 2003-8-6 06:21:02 | 显示全部楼层
#incldue<math.h>
float t;   /*the whole variable*/
main()
{int n,k=1;
float cr,matrix_a[11][11],mat_w[11];      /*The dimension of*/
float insert(float matrix_b[][],int p1);  /*a feasible matrix<11*/
float samplify(float matrix_c[][],float mat_w1[],int p2)
folat judge(matrix_d[][],mat_w2[],int p3)
while(k)
{ printf("The matrix's dimension n=");
scanf("%d",&n);
if(n>11||n<=1)
prinf("The matrix is unfeasible\n");
else
printf("please Input the matrix\n");
   insert(matrix_a,n);
   samplify(matrix_a,mat_w,n);
  cr=judge(matrix_a,mat_w,n);

  if(cr<0.1)
    { k=0;
printf("The matrix have passed inspection\n");
   }
}
for(i=0;i<n;i++)
  for(j=0;j<n;j++)
   printf("The matrix:%f\n",matrix_a[j]);
   printf("\n");
for(i=0;i<n;i++)
  printf("w=%-10.5f",mat_w);
printf("%-10.6f",t);
   }
void insert(float matrix_b[][],int n)
{ int i,j,n=3;
for(i=0;i<n;i++)
   for(j=0;j<n;j++)
   scanf("%f",&matrix_b[j]
}
void samplify(float matrix_c[][],float mat_w1[],int n)
{int i,j;
  float matrix_p[11][11],
  float sum_1[11]={0.0,0........},sum_2[11]={0.0.....},sum_3=0.0;
for(i=0;i<n;i++)
  for(j=0,j<n;j++)
{ sum_1=matrix_c[j]+sum_1;
   matrix_p[j]= matrix_c[j]/sum_1; /*this is row's samplify*/
     }
for(i=0;i<n;i++)
   for(j=0;j<n;j++)
sum_2=matrix_p[j]+sum_2;
  for(i=0;i<n;i++)
sum_3=sum_2+sum_3;
  for(i=0;j<nj++)
mat_w1=sum_2/sum_3;
  return;
  }
void judge(float matrix_d[][],float mat_w2[],int n)
{int i,j;
float mat_ri[]={0,0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49,1.51};
float ci,cr,sum_4=0.0,matrix_p[11]={0.0.........};
for(i=0;i<n;i++)
  for(j=0;j<n;j++)
  matrix_p=matrix_d[j]*mat_w1[j]+matrix_p;
   for(i=0;i<n;i++)
  sum_4=matrix_p/mat_w2+sum_4;
  t=sum_4/n;
   ci=(t-n)/(n-1);
   cr=ci/ri[n];
   return(cr);
  }


发表于 2003-8-6 09:05:39 | 显示全部楼层
高手们能否告知以上程序是解决哪类问题的呀?
发表于 2003-8-6 21:29:37 | 显示全部楼层
佩服佩服,好程序。我试了,可以通过运行,结果正确!
发表于 2003-8-7 01:33:44 | 显示全部楼层
一致性检验用不着大段程序吧
 楼主| 发表于 2003-8-7 03:22:41 | 显示全部楼层
#incldue<math.h>
float t;   /*the whole variable*/
main()
{int n,k=1;
float cr,matrix_a[11][11],mat_w[11];      /*The dimension of*/
float insert(float matrix_b[][],int p1);  /*a feasible matrix<11*/
float samplify(float matrix_c[][],float mat_w1[],int p2)
folat judge(matrix_d[][],mat_w2[],int p3)
while(k)
{ printf("The matrix's dimension n=");
scanf("%d",&n);
if(n>11||n<=1)
prinf("The matrix is unfeasible\n");
else
printf("please Input the matrix\n");
   insert(matrix_a,n);
   samplify(matrix_a,mat_w,n);
  cr=judge(matrix_a,mat_w,n);

  if(cr<0.1)
    { k=0;
printf("The matrix have passed inspection\n");
   }
}
for(i=0;i<n;i++)
  for(j=0;j<n;j++)
   printf("The matrix:%f\n",matrix_a[j]);
   printf("\n");
for(i=0;i<n;i++)
  printf("w=%-10.5f",mat_w);
printf("%-10.6f",t);
   }
void insert(float matrix_b[][],int n)
{ int i,j;
for(i=0;i<n;i++)
   for(j=0;j<n;j++)
   scanf("%f",&matrix_b[j]);
   }
void samplify(float matrix_c[][],float mat_w1[],int n)
{int i,j;
  float matrix_p1[11][11],
  float sum_1[11]={0.0,0........},sum_2[11]={0.0.....},sum_3=0.0;
for(i=0;i<n;i++)
  for(j=0,j<n;j++)
{ sum_1=matrix_c[j]+sum_1;
   matrix_p1[j]= matrix_c[j]/sum_1; /*this is row's samplify*/
     }
for(i=0;i<n;i++)
   for(j=0;j<n;j++)
sum_2=matrix_p1[j]+sum_2;
  for(i=0;i<n;i++)
sum_3=sum_2+sum_3;
  for(i=0;j<nj++)
mat_w1=sum_2/sum_3;
  return;
  }

void judge(float matrix_d[][],float mat_w2[],int n)
{int i,j;
float mat_ri[]={0,0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49,1.51};
float ci,cr,sum_4=0.0,matrix_p2[11]={0.0.........};
for(i=0;i<n;i++)
  for(j=0;j<n;j++)
  matrix_p2=matrix_d[j]*mat_w1[j]+matrix_p;
   for(i=0;i<n;i++)
  sum_4=matrix_p2/mat_w2+sum_4;
  t=sum_4/n;
   ci=(t-n)/(n-1);
   cr=ci/ri[n];
   return(cr);
  }

 楼主| 发表于 2003-8-7 03:23:17 | 显示全部楼层
#incldue<math.h>
float t;   /*the whole variable*/
main()
{int n,k=1;
float cr,matrix_a[11][11],mat_w[11];      /*The dimension of*/
float insert(float matrix_b[][],int p1);  /*a feasible matrix<11*/
float samplify(float matrix_c[][],float mat_w1[],int p2)
folat judge(matrix_d[][],mat_w2[],int p3)
while(k)
{ printf("The matrix's dimension n=");
scanf("%d",&n);
if(n>11||n<=1)
prinf("The matrix is unfeasible\n");
else
printf("please Input the matrix\n");
   insert(matrix_a,n);
   samplify(matrix_a,mat_w,n);
  cr=judge(matrix_a,mat_w,n);

  if(cr<0.1)
    { k=0;
printf("The matrix have passed inspection\n");
   }
}
for(i=0;i<n;i++)
  for(j=0;j<n;j++)
   printf("The matrix:%f\n",matrix_a[j]);
   printf("\n");
for(i=0;i<n;i++)
  printf("w=%-10.5f",mat_w);
printf("%-10.6f",t);
   }
void insert(float matrix_b[][],int n)
{ int i,j;
for(i=0;i<n;i++)
   for(j=0;j<n;j++)
   scanf("%f",&matrix_b[j]);
   }
void samplify(float matrix_c[][],float mat_w1[],int n)
{int i,j;
  float matrix_p1[11][11],
  float sum_1[11]={0.0,0........},sum_2[11]={0.0.....},sum_3=0.0;
for(i=0;i<n;i++)
  for(j=0,j<n;j++)
{ sum_1=matrix_c[j]+sum_1;
   matrix_p1[j]= matrix_c[j]/sum_1; /*this is row's samplify*/
     }
for(i=0;i<n;i++)
   for(j=0;j<n;j++)
sum_2=matrix_p1[j]+sum_2;
  for(i=0;i<n;i++)
sum_3=sum_2+sum_3;
  for(i=0;j<nj++)
mat_w1=sum_2/sum_3;
  return;
  }

void judge(float matrix_d[][],float mat_w2[],int n)
{int i,j;
float mat_ri[]={0,0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49,1.51};
float ci,cr,sum_4=0.0,matrix_p2[11]={0.0.........};
for(i=0;i<n;i++)
  for(j=0;j<n;j++)
  matrix_p2=matrix_d[j]*mat_w1[j]+matrix_p;
   for(i=0;i<n;i++)
  sum_4=matrix_p2/mat_w2+sum_4;
  t=sum_4/n;
   ci=(t-n)/(n-1);
   cr=ci/ri[n];
   return(cr);
  }

发表于 2003-8-8 02:39:48 | 显示全部楼层
大家可以参考一下我的程序,昨天发的,给点意见
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2019-10-20 15:15 , Processed in 0.057472 second(s), 12 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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