【Python】使用列表模拟的双层耦合网络信息传播模型

本文介绍了一种使用Python编程实现的双层耦合网络信息传播模型,详细探讨了如何通过列表结构来模拟网络中的信息传播过程。
摘要由CSDN通过智能技术生成

上学期Python的大作业,刚刚被整理出来,就当是个备份了

import random
import time
import matplotlib.pyplot as plt

"""
耦合网络传播模型
"""


# 定义Node
class Node(object):
    nodeName = None
    # 存储点的地址
    linkedNodes = None
    # 存储点的名称
    linkedNodesDemo = None
    # 存储点的数量
    linkedNodesAmount = 0
    # 点的状态
    nodeState = None

    def __init__(self, name):

        if self.nodeName is None:
            self.nodeName = ""
        if self.linkedNodes is None:
            self.linkedNodes = []
        if self.linkedNodesDemo is None:
            self.linkedNodesDemo = []
        if self.nodeState is None:
            self.nodeState = "S"
        self.nodeName = name

    def add(self, node):
        str1 = "".join(node.nodeName)
        str2 = "".join(self.nodeName)

        self.linkedNodes.append(node)
        self.linkedNodesDemo.append(str1)
        self.linkedNodesAmount += 1
        node.linkedNodes.append(self)
        node.linkedNodesDemo.append(str2)
        node.linkedNodesAmount += 1


# 返回某个网络的所有节点的度总和
def allDegree(list):
    sum = 0
    for w in range(0, len(list)):
        sum = sum + list[w].linkedNodesAmount
    return sum


def main():
    startTime = time.time()
    """
    重要变量
    """
    N = 1000  # 每个网络N个节点
    p = 0.006  # ER网络:每对节点以概率 p 被选择,进行连边
    m0 = 3  # BA网络:初始时网络有m0个节点被感染
    m = 3  # BA网络:每个循环,一个新节点加入这个网络,并从已存在的网络中选择m个节点与之相连
    B = 0.2  # SIR模型:S节点与I节点接触时的感染概率
    Y = 0.5  # SIR模型:I节点自愈为R节点的概率
    recursionTime = 50  # 循环感染次数
    averageTime = 100  # 总体平均求值次数

    """
    建立ER网络
    """
    ERNodeList = []

    # 初始化一列节点(ER)
    for i in range(0, N):
        nodeName = "A" + str(i)
        ERNodeList.append(Node(nodeName))

    # ER列内部随机连边
    for i in range(0, N):
        for j in range(i + 1, N):
            r
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值