Python 错误修复:TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

抱歉,我之前的代码存在错误。错误发生在尝试打印最大概率和最佳方案时,因为找不到最佳方案导致 max_solution 的值为 None,而在尝试执行 max_solution+1 时产生类型错误。

为了修复这个错误,我们可以添加一个条件来检查是否找到了最佳方案。请尝试以下修改后的代码:

import numpy as np
import pandas as pd
from collections import deque
import heapq

# 读取网络数据
logicalNetwork = pd.read_excel('逻辑网络1.xls', header=None).to_numpy()
physicalNetwork = pd.read_excel('物理网络1.xls', header=None).to_numpy()

# 获取网络的节点数
num_nodes = logicalNetwork.shape[0]

# 用于存储已经存在的路径
existing_paths = set()

# 随机删除6条物理路径
np.random.seed(0)
deleted_paths = np.random.choice(np.where(physicalNetwork > 0)[0], size=6, replace=False)
for path in deleted_paths:
    physicalNetwork[np.unravel_index(path, physicalNetwork.shape)] = 0

# 计算两个节点在物理网络上的连接概率
def calculate_connection_probability(logical_node, physical_node):
    if logical_node == physical_node:
        return 1.0
    elif logicalNetwork[logical_node, logical_node] == 0:
        return 0.0
    else:
        paths = [bfs(logical_node, physical_node)]
        for i in range(num_nodes):
            if i != logical_node and i != physical_node and logicalNetwork[logical_node, i] > 0:
                paths.append(bfs(logical_node, i) + bfs(i, physical_node)[1:])
        min_loads = [min(physicalNetwork[p[i]-1, p[i+1]-1] for i in range(len(p)-1)) for p in paths]
        return sum(1 for load in min_loads if load >= 10) / len(min_loads)

# 网管节点与其他节点可以通过物理网络联通的概率最大的方案
max_probability = 0.0
max_solution = None

# 遍历所有逻辑网络中的节点
for i in range(num_nodes):
    if i != 25:  # 排除网管节点
        probability = calculate_connection_probability(25, i)
        if probability > max_probability:
            max_probability = probability
            max_solution = i

# 打印最大概率和最佳方案
if max_solution is not None:
    print(f'The maximum probability is {max_probability:.4f} for the solution where the management node connects to node {max_solution+1}.')
else:
    print('No solution found.')

这次修改后的代码会检查 max_solution 是否为 None,如果是,则打印 'No solution found.'。希望这次能够顺利运行,并正确输出结果!

Python 错误修复:TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

原文地址: https://www.cveoy.top/t/topic/Urs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录