import random
import sys
import networkx as nx
import ndlib.models.epidemics as ep
import os
import ndlib.models.ModelConfig as mc
import itertools
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
import os.path as op
from SIR_baseline import get_type_top
from utils import load_pickle
def IC_trends(g, indices, k, beta, day_num):
#print("SIR")
model = ep.IndependentCascadesModel(g)
# Model Configuration
config = mc.Configuration()
config.add_model_parameter("fraction_infected", 0.0) # 受感染节点的初始比例
infected_nodes = indices[0:k] # 初始化已经感染节点
print(f'infected_nodes: {infected_nodes}')
for node in g.nodes:
config.add_node_configuration("state", node, 0)
for node in infected_nodes:
config.add_node_configuration('state', node, 1)
# config.add_model_initial_configuration("Infected", infected_nodes)
# Setting node parameters
threshold = beta
for e in g.edges():
config.add_edge_configuration("threshold", e, threshold)
model.set_initial_status(config)
# Simulation execution
iterations = model.iteration_bunch(day_num)
# print('########')
# print(iterations)
trends = model.build_trends(iterations)
# print(model.get_info())
# print(trends[0]['trends']['node_count'][1])
return trends
独立级联模型(IC)暂存
最新推荐文章于 2024-10-01 05:04:32 发布