2024mathorcup妈妈杯数学建模A题B题C题D题思路模型代码思路模型

2024mathorcup妈妈杯数学建模A题B题C题D题思路模型代码思路模型:开赛后第一时间更新,更新见文末名片,下面介绍数学建模最常用的几种算法

层次分析法(Analytic Hierarchy Process,简称AHP)是一种定性和定量相结合的、系统化、层次化的决策分析方法。它把一个复杂问题表示为有序的递阶层次结构,通过人们的判断对决策方案的优劣进行排序。这种方法的特点是在对复杂的决策问题的本质、影响因素及其内在关系等进行深入分析的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法。尤其适合于对决策结果难于直接准确计量的场合。

层次分析法的步骤大致如下:

1. **建立层次结构模型**:将决策的目标、考虑的因素(决策准则)和决策对象按它们之间的相互关系分为最高层、中间层和最低层,绘出层次结构图。

2. **构造判断矩阵**:对从属于上一层的每个因素的同一层诸因素进行两两比较,比较时取1-9尺度。

3. **层次单排序及其一致性检验**:对应于判断矩阵最大特征根λmax的特征向量,经归一化后即为同一层次相应因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。为避免其他因素对结果的影响,需要进行一致性检验。

4. **层次总排序及其一致性检验**:计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。这一过程是从最高层次到最低层次依次进行的。

下面是一个简单的层次分析法的Python源码示例,它使用了NumPy库来计算判断矩阵的特征值和特征向量,并进行一致性检验:

```python

import numpy as np

def calculate_consistency_ratio(ci, n):
    """
    计算一致性比率CR
    ci: 一致性指标
    n: 阶数
    """
    ri = [0, 0, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49]  # 平均随机一致性指标RI
    cr = ci / ri[n]
    return cr

def calculate_consistency_index(A):
    """
    计算一致性指标CI
    A: 判断矩阵
    """
    n = A.shape[0]
    eigenvalues, _ = np.linalg.eig(A)
    lambda_max = max(eigenvalues)
    ci = (lambda_max - n) / (n - 1)
    return ci

def ahp_analysis(A):
    """
    层次分析法主函数
    A: 判断矩阵
    """
    n = A.shape[0]
    # 计算权重向量
    eigenvalues, eigenvectors = np.linalg.eig(A)
    max_eigenvalue_index = np.argmax(eigenvalues)
    max_eigenvector = eigenvectors[:, max_eigenvalue_index]
    weights = max_eigenvector / sum(max_eigenvector)
    
    # 一致性检验
    ci = calculate_consistency_index(A)
    cr = calculate_consistency_ratio(ci, n)
    if cr < 0.1:
        print("一致性检验通过,权重分配合理。")
        print("权重向量:", weights)
    else:
        print("一致性检验未通过,请重新调整判断矩阵。")

# 示例判断矩阵
A = np.array([[1, 3, 5], [1/3, 1, 3], [1/5, 1/3, 1]])

# 进行层次分析
ahp_analysis(A)


```

请注意,这个示例代码仅演示了层次分析法的基本流程和一致性检验的计算方法,实际的层次分析可能涉及更复杂的模型和更多的判断矩阵。在实际应用中,需要根据具体问题构建适当的层次结构模型,并根据专家判断构造合适的判断矩阵。同时,确保在实际操作中正确理解层次分析法的原理和步骤,并考虑其适用性和局限性。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值