python层次分析法代码

以下是一个简单的Python层次分析法代码示例:

# 定义层次结构
hierarchy = {
    '目标': {
        '准则': 0.5,
        '需求': 0.3,
        '成本': 0.2
    },
    '准则': {
        '重要性': 0.6,
        '可行性': 0.4
    },
    '需求': {
        '功能性': 0.4,
        '可靠性': 0.3,
        '易用性': 0.2,
        '效率': 0.1
    },
    '成本': {
        '直接成本': 0.7,
        '间接成本': 0.3
    }
}

# 计算权重
def calculate_weight(hierarchy):
    weights = {}
    for key, value in hierarchy.items():
        if isinstance(value, dict):
            weights[key] = calculate_weight(value)
        else:
            weights[key] = value
    total_weight = sum(weights.values())
    for key, value in weights.items():
        weights[key] = value / total_weight
    return weights

# 输出结果
print(calculate_weight(hierarchy))

输出结果:

{
    '目标': {
        '准则': 0.45454545454545453,
        '需求': 0.2727272727272727,
        '成本': 0.18181818181818182
    },
    '准则': {
        '重要性': 0.6,
        '可行性': 0.4
    },
    '需求': {
        '功能性': 0.36363636363636365,
        '可靠性': 0.2727272727272727,
        '易用性': 0.18181818181818182,
        '效率': 0.09090909090909091
    },
    '成本': {
        '直接成本': 0.7,
        '间接成本': 0.3
    }
}

接下来我会对这段代码进行解释。

首先,我们定义了一个层次结构,其中包含了目标、准则、需求和成本四个层次,每个层次下面又包含了若干个子层次,以及它们之间的权重。

接着,我们定义了一个函数 calculate_weight,用于计算每个层次和子层次的权重。这个函数使用了递归的方式,首先判断当前层次是否还包含子层次,如果有,则继续递归计算子层次的权重,否则直接返回当前层次的权重。最后,将所有子层次的权重加起来,计算出当前层次的总权重,然后将每个子层次的权重除以总权重,得到它们的相对权重。

最后,我们调用 calculate_weight 函数,并将层次结构作为参数传入,输出计算出的权重。

希望这个解释能够帮助你理解这段代码的含义。