Skip to content

Commit 021deb0

Browse files
committed
fix
1 parent 93bd1b4 commit 021deb0

File tree

2 files changed

+29
-29
lines changed

2 files changed

+29
-29
lines changed

docs/source/tutorial/agent/agent_control.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,34 @@
44

55
## エージェントの制御について
66

7-
RRSの災害救助エージェントは3種類あり、種類毎にそれぞれ異なるプログラムを書く必要があります。しかし、初めから全てのプログラムを書くことは困難です。ここではまず初めに、消防隊エージェントを操作するプログラムの一部を書いてみましょう
7+
RRSの災害救助エージェントは3種類あり、種類毎にそれぞれ異なるプログラムを書く必要があります。しかし、初めから全てのプログラムを書くことは困難です。ここではまず初めに、消防隊エージェントを操作するプログラムの一部を書いてみましょう
88

99
```{note}
10-
エージェントを操作するプログラムはエージェントの種類毎に同一です プログラムは各エージェントに配られそのエージェントのみの操作を担います 消防隊エージェントを操作するプログラムを書けばそれがすべての消防隊エージェント上でそれぞれ動作します
10+
エージェントを操作するプログラムはエージェントの種類毎に同一です プログラムは各エージェントに配られそのエージェントのみの操作を担います 消防隊エージェントを操作するプログラムを書けばそれがすべての消防隊エージェント上でそれぞれ動作します
1111
```
1212

1313
![消防隊エージェント](./../../images/agent_control.jpg)
1414

1515
## エージェントの動作フロー
1616

17-
エージェントの動作を決めているのはTacticsというプログラムです
17+
エージェントの動作を決めているのはTacticsというプログラムです
1818

19-
消防隊の思考ルーチンは下の図の通りにおおよそおこなわれます 消防隊の動作としてはまず救助対象の市民を捜索し(`Human Detector`)見つかった市民を救助します(`Action Rescue`) 救助対象の市民が見つからない場合は探索場所を変更して市民を捜索するため次の捜索場所を決定して(`Search`)移動します(`Action Ext move`) なおエージェントは1ステップ内で移動と救助活動を同時におこなうことが出来ませんつまりステップごとに更新される自身の周辺情報を確認して動作の対象と動作内容を決定していくということになります これらそれぞれの機能がモジュールと呼ばれるプログラムとして分割して表現されています
19+
消防隊の思考ルーチンは下の図の通りにおおよそおこなわれます 消防隊の動作としてはまず救助対象の市民を捜索し(`Human Detector`)見つかった市民を救助します(`Action Rescue`) 救助対象の市民が見つからない場合は探索場所を変更して市民を捜索するため次の捜索場所を決定して(`Search`)移動します(`Action Ext move`) なおエージェントは1ステップ内で移動と救助活動を同時におこなうことが出来ませんつまりステップごとに更新される自身の周辺情報を確認して動作の対象と動作内容を決定していくということになります これらそれぞれの機能がモジュールと呼ばれるプログラムとして分割して表現されています
2020

21-
今回はこの中で救助(掘り起こし)対象を決定する `Human Detector` モジュールを開発します
21+
今回はこの中で救助(掘り起こし)対象を決定する `Human Detector` モジュールを開発します
2222

2323
![消防隊エージェントの動作フロー](./../../images/agent_flow.png)
2424

2525
## `Human Detector` モジュールの実装の準備
2626

27-
まず、`Human Detector` モジュールを記述するためのファイルを作成します
27+
まず、`Human Detector` モジュールを記述するためのファイルを作成します
2828

2929
```bash
3030
cd WORKING_DIR/<your_team_name>
3131
touch src/<your_team_name>/module/complex/fire_brigade_human_detector.py
3232
```
3333

34-
次に、`Human Detector` モジュールの雛形の実装を行います 以下のコードを`fire_brigade_human_detector.py` に記述してください
34+
次に、`Human Detector` モジュールの雛形の実装を行います 以下のコードを`fire_brigade_human_detector.py` に記述してください
3535

3636
```python
3737
from typing import Optional
@@ -91,62 +91,62 @@ class FireBrigadeHumanDetector(HumanDetector):
9191

9292
## モジュールの登録
9393

94-
次に、作成したモジュールを登録します
94+
次に、作成したモジュールを登録します
9595

96-
`WORKING_DIR/<your_team_name>/config/module.yaml` ファイルを開き以下の部分を
96+
`WORKING_DIR/<your_team_name>/config/module.yaml` ファイルを開き以下の部分を
9797

9898
```yaml
9999
DefaultTacticsFireBrigade:
100100
HumanDetector: src.<your_team_name>.module.complex.sample_human_detector.SampleHumanDetector
101101
```
102102
103-
以下のように変更してください
103+
以下のように変更してください
104104
105105
```yaml
106106
DefaultTacticsFireBrigade:
107107
HumanDetector: src.<your_team_name>.module.complex.fire_brigade_human_detector.FireBrigadeHumanDetector
108108
```
109109
110-
シミュレーションサーバーを起動し、エージェントを実行してみましょう
110+
シミュレーションサーバーを起動し、エージェントを実行してみましょう
111111
112112
```bash
113113
cd WORKING_DIR/<your_team_name>
114114
python main.py
115115
```
116116

117-
標準出力に `Calculate FireBrigadeHumanDetector` と表示されれば成功です
117+
標準出力に `Calculate FireBrigadeHumanDetector` と表示されれば成功です
118118

119119
## `Human Detector` モジュールの設計
120120

121-
救助対象選択プログラムの中身を書き消防隊エージェントが救助活動をおこなえるように修正します
121+
救助対象選択プログラムの中身を書き消防隊エージェントが救助活動をおこなえるように修正します
122122

123-
消防隊エージェントの救助対象を最も簡単に選択する方法は埋没している市民の中で最も自身に近い市民を選択する方法です 今回はこの方法を採用した消防隊エージェントの行動対象決定モジュールを書いてみましょう
123+
消防隊エージェントの救助対象を最も簡単に選択する方法は埋没している市民の中で最も自身に近い市民を選択する方法です 今回はこの方法を採用した消防隊エージェントの行動対象決定モジュールを書いてみましょう
124124

125-
埋没している市民の中で最も自身に近い市民を救助対象として選択する方法はフローチャートで表すと下図のようになります
125+
埋没している市民の中で最も自身に近い市民を救助対象として選択する方法はフローチャートで表すと下図のようになります
126126

127127
![救助対象選択フローチャート](./../../images/human_detector_flow.png)
128128

129-
このフローチャート中の各処理を次小節で紹介する各クラス・メソッド等で置き換えたものを`fire_brigade_human_detector.py` に記述していくことで救助対象選択プログラムを完成させます
129+
このフローチャート中の各処理を次小節で紹介する各クラス・メソッド等で置き換えたものを`fire_brigade_human_detector.py` に記述していくことで救助対象選択プログラムを完成させます
130130

131131
## `Human Detector` モジュールの実装で使用するクラス・メソッド
132132

133133
### Entity
134134

135-
`Entity` クラスはエンティティの基底クラスです このクラスはエンティティの基本情報を保持します
135+
`Entity` クラスはエンティティの基底クラスです このクラスはエンティティの基本情報を保持します
136136

137-
RRS上のエンティティは下図のように `Entity` を継承したクラスで表現されています 赤枠で囲まれたクラスはクラスの意味がそのままRRSの直接的な構成要素を表しています
137+
RRS上のエンティティは下図のように `Entity` を継承したクラスで表現されています 赤枠で囲まれたクラスはクラスの意味がそのままRRSの直接的な構成要素を表しています
138138

139-
例: Road クラスのインスタンスの中には Hydrant クラスを継承してない通常の道路を表すものも存在しています
139+
例: Road クラスのインスタンスの中には Hydrant クラスを継承してない通常の道路を表すものも存在しています
140140

141141
![エンティティの継承関係](./../../images/entity.png)
142142

143143
### EntityID
144144

145-
`EntityID` クラスは全てのエージェント/オブジェクトを一意に識別するためのID(識別子)を表すクラスです RRSではエージェントとオブジェクトをまとめてエンティティと呼んでいます
145+
`EntityID` クラスは全てのエージェント/オブジェクトを一意に識別するためのID(識別子)を表すクラスです RRSではエージェントとオブジェクトをまとめてエンティティと呼んでいます
146146

147147
### Civilian
148148

149-
`Civilian` クラスは市民を表すクラスですこのクラスからはエージェントの位置や負傷の進行状況を取得することができます
149+
`Civilian` クラスは市民を表すクラスですこのクラスからはエージェントの位置や負傷の進行状況を取得することができます
150150

151151
- `entity` が市民であるかどうかを判定する
152152

@@ -178,9 +178,9 @@ if buriedness is None or buriedness <= 0:
178178

179179
### WorldInfo
180180

181-
`WorldInfo` クラスはエージェントが把握している情報とそれに関する操作をおこなうメソッドをもったクラスです エージェントはこのクラスのインスタンスを通して他のエージェントやオブジェクトの状態を確認します
181+
`WorldInfo` クラスはエージェントが把握している情報とそれに関する操作をおこなうメソッドをもったクラスです エージェントはこのクラスのインスタンスを通して他のエージェントやオブジェクトの状態を確認します
182182

183-
モジュール内では`WorldInfo` クラスのインスタンスを `self._world_info` として保持しています
183+
モジュール内では`WorldInfo` クラスのインスタンスを `self._world_info` として保持しています
184184

185185
- エンティティIDからエンティティを取得する
186186

@@ -204,9 +204,9 @@ self._world_info.get_distance(me, civilian.get_id())
204204

205205
### AgentInfo
206206

207-
`AgentInfo` クラスはエージェント自身の情報とそれに関する操作をおこなうメソッドをもったクラスです エージェントはこのクラスのインスタンスを通してエージェント自身の状態を取得します
207+
`AgentInfo` クラスはエージェント自身の情報とそれに関する操作をおこなうメソッドをもったクラスです エージェントはこのクラスのインスタンスを通してエージェント自身の状態を取得します
208208

209-
モジュール内では`AgentInfo` クラスのインスタンスを `self._agent_info` として保持しています
209+
モジュール内では`AgentInfo` クラスのインスタンスを `self._agent_info` として保持しています
210210

211211
- 自分自身のエンティティIDを取得する
212212

@@ -218,7 +218,7 @@ self._agent_info.get_entity_id()
218218

219219
## `Human Detector` モジュールの実装
220220

221-
`Human Detector` モジュールの実装を行います
221+
`Human Detector` モジュールの実装を行います
222222
以下のコードを`fire_brigade_human_detector.py` に記述してください。
223223

224224
```python
@@ -305,11 +305,11 @@ class SampleHumanDetector(HumanDetector):
305305
return self._result
306306
```
307307

308-
シミュレーションサーバーを起動しエージェントを実行してみましょう
308+
シミュレーションサーバーを起動しエージェントを実行してみましょう
309309

310310
```bash
311311
cd WORKING_DIR/<your_team_name>
312312
python main.py
313313
```
314314

315-
埋没している市民を消防隊エージェントが救出できるようになっていれば成功です
315+
埋没している市民を消防隊エージェントが救出できるようになっていれば成功です

docs/source/tutorial/module/module.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ adf-core-pythonでは、以下のモジュールが提供されています。
8282
| DynamicClustering | シミュレーションの進行によってクラスタが変化するクラスタリング |
8383
| StaticClustering | シミュレーション開始時にクラスタが定まるクラスタリング |
8484
| ExtAction | 活動対象決定後のエージェントの動作決定 |
85-
| MessageCoordinator | 通信でメッセージ(情報)を送信する経路であるチャンネルへのメッセージの分配 |
85+
| MessageCoordinator | 通信でメッセージ(情報)を送信する経路であるチャンネルへのメッセージの分配 |
8686
| ChannelSubscriber | 通信によってメッセージを受け取るチャンネルの選択 |
8787

8888
自分で上記の役割以外のモジュールを作成する際は、`AbstractModule` を継承してください。

0 commit comments

Comments
 (0)