【无标题】

数学建模

层次分析法python代码

class AHP():
    def text_consistence(self,array):
        [n,m]=array.shape
        array_eig,array_eig_vector=np.linalg.eig(array)
        array_max_eig=np.max(array_eig)
        print("该矩阵的最大特征值为{}".format(array_max_eig))
        CR=array_max_eig-n/(n-1);
        RI=[0, 0, 0.52, 0.89, 1.12, 1.26, 1.36, 1.41, 1.46, 1.49, 1.52, 1.54, 1.56, 1.58,
            1.59]
        CI=CR/RI[n]
        if(CI<0.1):
            print("该矩阵的CI值为{},通过了一致性检验".format(CI))
            return True;
        if(CI>0.1):
            print("该矩阵的CI值为{},未通过一致性检验".format(CI))
            print("请修正判断矩阵")
            return False;
    def text_Positive_Reciprocal_Matrix(self,array):
        [n,m] = array.shape
        array_T=np.transpose(array);
        ones_array = np.ones((n, m))
        if (np.all(array_T*array==ones_array)):
           print("该矩阵为正互反矩阵")
        else:
            print("该矩阵不是正互反矩阵")
            print("请修正判断矩阵")
    def Arithmetic_averaging(self,array):
        [n, m] = array.shape
        sum_col=array.sum(axis=0);
        array=array/sum_col;
        sum_low=array.sum(axis=1);
        finally_array=sum_low/n;
        print("算数平均法所得权重为:");
        print(finally_array)
    def Geometric_averaging(self,array):
        [n, m] = array.shape;
        mul_row=np.prod(array,axis=1);
        mul_row_sqrt=np.power(mul_row,1/n)
        sum_mul_row_sqrt=mul_row_sqrt.sum(axis=0)
        finally_array=mul_row_sqrt/sum_mul_row_sqrt
        print("几何平均法所得权重为:")
        print(finally_array)

    def Eigenvadlue_method(self,array):
         array_eig, array_eig_vector = np.linalg.eig(array)
         max_array_eig_vector= array_eig_vector[:, np.argmax(array_eig)].real
         finally_array=max_array_eig_vector/sum(max_array_eig_vector)
         print("特征值法对应的权重为:")
         print(finally_array)
if __name__ == "__main__":
    b = np.array([[1, 0.5, 4,3,3],
                  [2,1,7,5,5],
                  [0.25,1/7,1,5,5],
                  [1/3,0.2,2,1,1],
                  [1/3,0.2,3,1,1]])
    add=AHP()
    add.text_Positive_Reciprocal_Matrix(b)
    add.text_consistence(b)
    add.Geometric_averaging(b)
    add.Arithmetic_averaging(b)
    add.Eigenvadlue_method(b)`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值