SlideShare a Scribd company logo
1 of 15
病気の流行
テ ー マ 1
難 易 度 : ★ ★ ★ ☆ ☆
目次
1. 準備作業1:空間の作成と変数の設定 → Jump!
2. 準備作業2:エージェントの作成と変数の設定 → Jump!
3. 準備作業3:マップ出力の設定 → Jump!
4. 準備作業4:コントロールパネルの設定 → Jump!
5. プログラム1:Univ_Initのプログラム → Jump!
6. 実行してみよう1:マップ出力によるエージェントの初期配置の確認 → Jump!
7. プログラム2:Agt_Stepのプログラム → Jump!
8. 実行してみよう2:マップ出力による感染の様子の確認 → Jump!
9. プログラム3:Univ_Step_Endのプログラム → Jump!
10. 準備作業5:時系列グラフの出力設定 → Jump!
11. 実行してみよう3:時系列グラフによる病人の割合の確認 → Jump!
12. 発展課題(研究のヒント)→ Jump!
準備作業1
• Universeの下に作成する
– 「空間」
• 空間名:society →『社会』
• 空間種別:連続空間
• 空間の大きさ:X=50, Y=50
• ループする:チェック
– 「変数」
• 変数名:pop →『人口数』
準備作業2
• societyの下に作成する
– 「エージェント」
• エージェント型名:person →『人』
• personの下に作成する
– 「変数」
• 変数名:condition →『健康状態』
準備作業3
• 出力設定(マップ出力)を行う
①何でもOK
③何でもOK
④変数指定に
conditionを設定
②マップ要素
を追加する
⑤
• コントロールパネル設定(人口数の表示)を行う
• 完了したら「infection_00」という名前で保存する
準備作業4
①
②種類、設定対象、
コントロール名を設定
③値の型、初期値、範囲、
目盛り間隔を設定
④
伝染病,感染症
プログラム1
def univ_init(self):
for i in range(Universe.pop):
one = create_agt(Universe.society.person) # エージェントを生成する
if rand() < 0.01: # 1%の確率で
one.condition = COLOR_RED # エージェント健康状態:発熱(赤色)
else:
one.condition = COLOR_CYAN # エージェント健康状態:健康(水色)
people = make_agtset(Universe.society.person) # 全エージェントをpeopleに代入
random_put_agtset(people) # people集合をランダムに配置
実行してみよう1
• 再生ボタンを押して,マップ出力を確認する
• 完了したら「infection_01」という名前で保存する
personエージェン
トが変数pop (人
口数)の数だけ生
成されているか?
1%の割合で赤色
(健康状態の悪い)
エージェントが生
成されているか?
人口数をスライド
させて,マップ出
力の変化を観察し
てみよう
再生ボタン
プログラム2
def agt_step(self):
if self.condition == COLOR_CYAN: # 自分が健康であれば
neighbor = self.make_agtset_around_own(2, False)
# 変数neighborからエージェントを
# 一人ずつ取り出して変数oneに格納する
for one in neighbor:
if one.condition == COLOR_RED:
if rand() < 0.3: # 30%の確率で
self.condition = COLOR_RED
① ②
self.make_agtset_around_ow
n
・連続空間上で指定した視野の範囲
内にいるエージェントの集合を返す
①視野の広さ
②Falseのときエージェント集合に自
分を含まず、Trueのとき含む
実行してみよう2
• 再生ボタンを押して,マップ出力を確認する
• 完了したら「infection_02」という名前で保存する
再生ボタン
人口数をスライド
させて,病気が伝
染する様子を観察
してみよう
プログラム3
def univ_step_end(self):
Universe.number = 0
# Universe.society空間にいる全エージェントをpeopleに格納する
people = make_agtset(Universe.society.person)
# peopleからエージェントを一人ずつ取り出してoneに格納する
for one in people:
if one.condition == COLOR_RED: # もしエージェントが病気であれば
Universe.number += 1 # numberを1ずつ増やす
追加しておく
準備作業5
• 出力設定(時系列グラフ)を行う
①時系列グラフを選択して追加
②グラフ名の設定
③グラフ要素の追加
④要素名の設定
⑤出力値の設定
100 * Universe.number / Universe.pop
⑥
実行してみよう3
• 再生ボタンを押して,時系列グラフを確認する
• 完了したら「infection_03」という名前で保存する
横軸:Step数
縦軸:100 * Universe.number / Universe.pop
再生ボタン
人口数をスライド
させて,病人の割
合の変化の様子を
観察してみよう
発展問題(研究のヒント)
1. 風邪をひいても7ステップ経つと健康になるようにする →「infection_ex01」
– personにステップをカウントするための変数cure(整数型)を追加する
– 風邪をひいている場合は,変数cureをカウントさせる(7カウントすれば元に戻る)
2. すべてのpersonエージェントが動き回るようにする →「infection_ex02」
– 風邪をひいている人,風邪をひいていない人もすべて
– 風邪をひいていない人は早く動くなどのアレンジを加えてもよい
– direction,self.turn(),self.forward(),rand()などの活用
3. 初期状態の感染率を操作できるようにする →「infection_ex03」
– Universeに変数initratioを追加する
– コントロールパネルで変数initratioを設定する(範囲:0~0.1,目盛り間隔:0.01)
発展問題(研究のヒント)
4. いったん風邪が治れば,しばらくは風邪をひかないようにする(抗体をもつ)
→「infection_ex04」
– 例えば「いったん風邪が治れば14ステップの間は風邪をひかない」など
– 新しい変数は不要 → 変数cure(整数型)を再利用しよう
5. 病気にかかっている間は一定の確率で死亡し,死亡したら動かないようにする
→「infection_ex05」
– 死亡したら色が変えて分かるようにしよう(例えば,Color_Blackなど)
– 死亡者数を時系列グラフとして出力させよう
6. 人口数と感染率にはどのような関係があるだろうか
→「infection_ex06」
– コントロールパネルで変数値を変化させ,出力結果を観察する
– この他にも,死亡率やステップ数などさまざまな観点から観察してみよう

More Related Content

More from Masaki Tamada

第1回 artisoc Cloud勉強会
第1回 artisoc Cloud勉強会第1回 artisoc Cloud勉強会
第1回 artisoc Cloud勉強会Masaki Tamada
 
10. artisocレシピブック a star探索アルゴリズムを使って、最短経路を自動的に探索しよう
10. artisocレシピブック a star探索アルゴリズムを使って、最短経路を自動的に探索しよう10. artisocレシピブック a star探索アルゴリズムを使って、最短経路を自動的に探索しよう
10. artisocレシピブック a star探索アルゴリズムを使って、最短経路を自動的に探索しようMasaki Tamada
 
09. artisocレシピブック 3Dモデルを作成しよう
09. artisocレシピブック 3Dモデルを作成しよう09. artisocレシピブック 3Dモデルを作成しよう
09. artisocレシピブック 3Dモデルを作成しようMasaki Tamada
 
08. artisocレシピブック ダイクストラ法を高速化しよう
08. artisocレシピブック ダイクストラ法を高速化しよう08. artisocレシピブック ダイクストラ法を高速化しよう
08. artisocレシピブック ダイクストラ法を高速化しようMasaki Tamada
 
07. artisocレシピブック ポテンシャル法を高速化しよう
07. artisocレシピブック ポテンシャル法を高速化しよう07. artisocレシピブック ポテンシャル法を高速化しよう
07. artisocレシピブック ポテンシャル法を高速化しようMasaki Tamada
 
06. artisocレシピブック ポテンシャル法を使って、買い回り行動を再現しよう
06. artisocレシピブック ポテンシャル法を使って、買い回り行動を再現しよう06. artisocレシピブック ポテンシャル法を使って、買い回り行動を再現しよう
06. artisocレシピブック ポテンシャル法を使って、買い回り行動を再現しようMasaki Tamada
 
05. artisocレシピブック 通れなくなった道路を迂回しよう
05. artisocレシピブック 通れなくなった道路を迂回しよう05. artisocレシピブック 通れなくなった道路を迂回しよう
05. artisocレシピブック 通れなくなった道路を迂回しようMasaki Tamada
 
04. artisocレシピブック open streetmapから道路情報を取得しよう
04. artisocレシピブック open streetmapから道路情報を取得しよう04. artisocレシピブック open streetmapから道路情報を取得しよう
04. artisocレシピブック open streetmapから道路情報を取得しようMasaki Tamada
 
03. artisocレシピブック ダイクストラ法を使って、最短経路を自動的に探索しよう
03. artisocレシピブック ダイクストラ法を使って、最短経路を自動的に探索しよう03. artisocレシピブック ダイクストラ法を使って、最短経路を自動的に探索しよう
03. artisocレシピブック ダイクストラ法を使って、最短経路を自動的に探索しようMasaki Tamada
 
02. artisocレシピブック 描画ツールを使って道路を作成し、歩くモデルをつくろう
02. artisocレシピブック 描画ツールを使って道路を作成し、歩くモデルをつくろう02. artisocレシピブック 描画ツールを使って道路を作成し、歩くモデルをつくろう
02. artisocレシピブック 描画ツールを使って道路を作成し、歩くモデルをつくろうMasaki Tamada
 
01. artisocレシピブック 基本的な操作について学び、モデルを動かそう
01. artisocレシピブック 基本的な操作について学び、モデルを動かそう01. artisocレシピブック 基本的な操作について学び、モデルを動かそう
01. artisocレシピブック 基本的な操作について学び、モデルを動かそうMasaki Tamada
 

More from Masaki Tamada (11)

第1回 artisoc Cloud勉強会
第1回 artisoc Cloud勉強会第1回 artisoc Cloud勉強会
第1回 artisoc Cloud勉強会
 
10. artisocレシピブック a star探索アルゴリズムを使って、最短経路を自動的に探索しよう
10. artisocレシピブック a star探索アルゴリズムを使って、最短経路を自動的に探索しよう10. artisocレシピブック a star探索アルゴリズムを使って、最短経路を自動的に探索しよう
10. artisocレシピブック a star探索アルゴリズムを使って、最短経路を自動的に探索しよう
 
09. artisocレシピブック 3Dモデルを作成しよう
09. artisocレシピブック 3Dモデルを作成しよう09. artisocレシピブック 3Dモデルを作成しよう
09. artisocレシピブック 3Dモデルを作成しよう
 
08. artisocレシピブック ダイクストラ法を高速化しよう
08. artisocレシピブック ダイクストラ法を高速化しよう08. artisocレシピブック ダイクストラ法を高速化しよう
08. artisocレシピブック ダイクストラ法を高速化しよう
 
07. artisocレシピブック ポテンシャル法を高速化しよう
07. artisocレシピブック ポテンシャル法を高速化しよう07. artisocレシピブック ポテンシャル法を高速化しよう
07. artisocレシピブック ポテンシャル法を高速化しよう
 
06. artisocレシピブック ポテンシャル法を使って、買い回り行動を再現しよう
06. artisocレシピブック ポテンシャル法を使って、買い回り行動を再現しよう06. artisocレシピブック ポテンシャル法を使って、買い回り行動を再現しよう
06. artisocレシピブック ポテンシャル法を使って、買い回り行動を再現しよう
 
05. artisocレシピブック 通れなくなった道路を迂回しよう
05. artisocレシピブック 通れなくなった道路を迂回しよう05. artisocレシピブック 通れなくなった道路を迂回しよう
05. artisocレシピブック 通れなくなった道路を迂回しよう
 
04. artisocレシピブック open streetmapから道路情報を取得しよう
04. artisocレシピブック open streetmapから道路情報を取得しよう04. artisocレシピブック open streetmapから道路情報を取得しよう
04. artisocレシピブック open streetmapから道路情報を取得しよう
 
03. artisocレシピブック ダイクストラ法を使って、最短経路を自動的に探索しよう
03. artisocレシピブック ダイクストラ法を使って、最短経路を自動的に探索しよう03. artisocレシピブック ダイクストラ法を使って、最短経路を自動的に探索しよう
03. artisocレシピブック ダイクストラ法を使って、最短経路を自動的に探索しよう
 
02. artisocレシピブック 描画ツールを使って道路を作成し、歩くモデルをつくろう
02. artisocレシピブック 描画ツールを使って道路を作成し、歩くモデルをつくろう02. artisocレシピブック 描画ツールを使って道路を作成し、歩くモデルをつくろう
02. artisocレシピブック 描画ツールを使って道路を作成し、歩くモデルをつくろう
 
01. artisocレシピブック 基本的な操作について学び、モデルを動かそう
01. artisocレシピブック 基本的な操作について学び、モデルを動かそう01. artisocレシピブック 基本的な操作について学び、モデルを動かそう
01. artisocレシピブック 基本的な操作について学び、モデルを動かそう
 

【MASの教材】病気の流行