「日常生活シナリオ」の場合、新規感染者は再度増加に転じ日間数万人の感染者となる可能性がある。
日常生活シナリオには、マスクをつけずに繁華街や電車等で見知らぬ人とすれ違うケースも含まれていることから、引き続きStay with your communityで見知らぬ多数の人とすれ違う場所での感染症対策は必要と思われる。「日常生活シナリオ」の場合、新規感染者は再度増加に転じ日間数万人の感染者となる可能性がある。
日常生活シナリオには、マスクをつけずに繁華街や電車等で見知らぬ人とすれ違うケースも含まれていることから、引き続きStay with your communityで見知らぬ多数の人とすれ違う場所での感染症対策は必要と思われる。
・生成ロジック (擬似コード)
df_sampled["ind_segment"] =
[f'{str(ind_id)}_{str(int(np.ceil(random.random() * smax)))}' if (ind_id is not None) & (smax is not None) else ""
for smax, ind_id in zip(df_sampled["SegMax"], df_sampled["industry_type_id"])]
for i in np.arange(len(ind_seg_sampled)):
ind_seg = ind_seg_sampled[i]
if len(ind_seg) > 0:
H = G.subgraph([node for node, node_attr in G.nodes(data=True) if node_attr['ind_segment'] == ind_seg]).copy()
G.add_edges_from(nx.complete_graph(H.nodes).edges(), layer='industry_collegue')
・生成ロジック (擬似コード)
df_sampled["ind_segment"] =
[f'{str(ind_id)}_{str(int(np.ceil(random.random() * smax)))}' if (ind_id is not None) & (smax is not None) else ""
for smax, ind_id in zip(df_sampled["SegMax"], df_sampled["industry_type_id"])]
for node_i in {ノードの集合(ノード番号で昇順)}:
for node_j in {node_iと同じindustry_type_idであるノードから、node_iを除いた集合 (ランダム順)}:
if industry_degree(node_j) <= industry_W - industry_m_0:
{エッジの集合}.append((node_i, node_j))
break if {appendしたエッジ数} >= industry_m_0
学校(同じクラスの仲良しグループ)
・概要
◦同一地区(住所コード上7桁が同一)で同い年の児童内でクリークを形成するレイヤー
・パラメータ
◦Town_code[:7]
◦age
・生成ロジック (擬似コード)
df_sampled["town_age"] = [f'{tc[:7]}_{str(age)}' for tc, age in zip(df_sampled["town_code"],
df_sampled["age"])]
for i in np.arange(len(town_age_sampled)):
town_age = town_age_sampled[i]
H = G.subgraph([node for node, node_attr in G.nodes(data=True) if node_attr['town_age'] == town_age]).copy()
G.add_edges_from(nx.complete_graph(H.nodes).edges(), layer='school_classmate')
・生成ロジック (擬似コード)
for node_i in {年齢15歳以下のノードの集合(ノード番号で昇順)}:
for node_j in {node_iと同じ年齢かつ同じ地区であるノードから、node_iを除いた集合 (ランダム順)}:
if school_degree(node_j) <= school_W - school_m_0:
{エッジの集合}.append((node_i, node_j))
break if {appendしたエッジ数} >= shcool_m_0
・生成ロジック (擬似コード)
for node_i in {ノードの集合(ノード番号で昇順)}:
for node_j in {node_i以外のノードの集合 (ランダム順)}:
if distance_degree(node_j) <= distance_W - distance_m_0:
if 1/(ε + distance(node_i, node_j)) >= random(0, 1):
{エッジの集合}.append((node_i, node_j))
break if {appendしたエッジ数} >= distance_m_0
ランダム
・概要
◦ランダムグラフから成るレイヤー
・パラメータ
◦p: エッジを選択する確率
・生成ロジック (擬似コード)
n(n - 1) / 2 通りのエッジから確率 p で採用するエッジを決定しグラフを生成