• 大小: 10KB
    文件类型: .cs
    金币: 2
    下载: 1 次
    发布日期: 2021-09-07
  • 语言: C#
  • 标签: c#  编程  

资源简介

关于层次分析法和c#结合,一个很好的例子,可以参考下,对编程和系统开发很有帮助,

资源截图

代码片段和文件信息

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
  

/*数据表的结构*/
public struct TGrid{           
public int m;
    public int n;
    public int[] tag; /*关联标记*/
    public float[] GArray; /*用于存放读入的判断矩阵的数据*/
};

/*用于保存特征向量与权值的数据结构*/
public struct TProperty{
    public float CR;   /*一次性比率*/
    public float CI; /*一致性指标*/
    public float RI;   /*随机一致性指标*/
    public float max; /*最大特征值λmax*/
    public float[] W; /*用来存放权值ω的数组(最多20行或列)*/
    public int n;
};
/// 
/// CJudgeMatrix 的摘要说明
/// 

public class CJudgeMatrix
{
    public int MAXSIZE=20;
    public int TOTALGRIDNUM=30; /*最多可以有30个表即A+C<=30*/
    public double eps=0.000001; /*Similar 0*/
    /*存放不同的随机一致性指标RI*/
    public float[] valueRI=new float[]{0 0 0.52f0.89f 1.12f 1.24f 1.32f1.41f 1.45f1.49f1.52f1.54f1.56f1.58f1.59f };
   
public CJudgeMatrix()
{
//
// TODO: 在此处添加构造函数逻辑
//        
}

    /****************************************和积法***************************************/
    public TProperty SumMethod1(TGrid tempG)
    {
        int ij;
    float[] tArr=new float[MAXSIZEMAXSIZE];
    float tempSSumWCIRICR;
    float[] s=new float[MAXSIZE];
        float[] b=new float[MAXSIZE];
        TProperty p;
        p.W = new float[MAXSIZE];

    /*按列归一化*/
    for(j=0;j     {
            s[j]=0;
    for(i=0;i     s[j]=s[j]+tempG.GArray[ij];

    for(i=0;i     tArr[ij]=tempG.GArray[ij]/s[j];
    }

    /*按行求和*/
    for(i=0;i     { b[i]=0;
    for(j=0;j b[i]=b[i]+tArr[ij];
    }

    SumW=0;
    for(i=0;i     SumW=SumW+b[i];

    /*求ω*/
    for(i=0;i     {
            b[i]=b[i]/SumW;
            p.W[i]=b[i];
    }

    /*求矩阵的最大特征根λmax*/
    for(tempS=0i=0;i     {
            for(SumW=0 j=0;j SumW=SumW+tempG.GArray[ij]*b[j];
    SumW=SumW/b[i];
    tempS=tempS+SumW;
    }
    tempS=tempS/tempG.m;
        p.max = tempS;

   /* for(i=0j=0;i     {
            if (tempG.tag[i]==1) p.W[i] = b[j++];
            else p.W[i] = 0;
    }*/
        p.CI=(tempS-tempG.m)/(tempG.m-1);
    p.RI=valueRI[tempG.m-1];
    p.CR=(float)(p.CI/(p.RI==0?CCommonFunc.eps:p.RI));/*防止除数为0*/
    p.n=tempG.n;
    return p;
    }
    /***************************************和法***************************************/
    /// 
    /// 求特征向量、精度指标_和法
    /// 

    /// 
    /// 
    public TProperty SumMethod(TGrid tempG)
    {
        int i j;
        float[] tArr = new float[MAXSIZE MAXSIZE];
        

评论

共有 条评论