ネットワークコンピューティング実習

1. URL
2. 担当教員
3. TA (ティーチングアシスタント)
4. ネットワークに関する疑問
5. 講義目的: 到達目標
6. 授業方法
7. 成績評価
8. スケジュール
9. 大崎が担当する科目に共通の連絡事項・アドバイス
10. Debian GNU/Linux のインストール
11. UNIX (UNIX とは、ユーザ権限、パッケージ管理)
12. Debian GNU/Linux セットアップ〜パッケージ管理
13. シェル (ファイル操作、リダイレクト、パイプ)
14. X ウィンドウシステム & ウィンドウマネージャ
15. エディタ (Emacs チュートリアル)
16. シミュレータ導入 (インストール、実行、可視化)
17. Python 言語 (1) (名前、変数、式)
18. Python 言語 (2) (文、スコープ、サブルーチン)
19. Python 言語 (3) (オブジェクト指向プログラミング)
20. 最終レポート課題 (実施報告書)
21. シミュレータ解説 (1) (概要、エージェント)
22. シミュレータ解説 (2) (モビリティ、可視化)
23. ソフトウェア設計・実装

シミュレータ解説 (2) (モビリティ、可視化)

実習の流れ・チーム分けの方針・態度目標

2024/09/25 のものと同じ。

https://lsnl.jp/~ohsaki/lecture/netcompx/2024/#10-1

内容目標

- 乱数のシードを変化させて dtnsim を実行できるようになる。

- mobility.Fixed クラスのコードが読めるようになる。

- mobility.RandomWalk クラスのコードが読めるようになる。

- エージェントの移動モデルに簡単な変更が加えられるようになる。

テキスト

https://lsnl.jp/~ohsaki/lecture/netcompx/2024/priv/09.pdf

課題

課題 1

dtnsim を以下の条件で実行せよ。 (1) エージェント数は 1、 (2) 移動モデルは Fixed、 (3) 経路制約なし、 (4) エージェントは CarryOnly。 乱数のシード (種) を変化させて何度か実行し、 乱数のシードによってエージェントの初期位置が変化することを確認せよ。

課題 2

テキストの 8.2 節を読み mobility/fixed.py のコードを理解せよ。 その後、 mobility/fixed.py を変更し、 エージェントが右下方向に等速度 (1 [m/s]) で移動するようにせよ。

課題 3

課題 1 において、移動モデルを RandomWalk に変更せよ。

課題 4

テキストの 8.3 節を読み mobility/randomwalk.py のコードを理解せよ。 その後、 mobility/randomwalk.py を変更し、 エージェントが水平方向にのみランダムウォークする (つまり一次元ランダムウォークする) ようにせよ。

課題

課題 1

> dtnsim -s 1 -n 1 -m Fixed -p NONE -a CarryOnly | cellx -L30
> dtnsim -s 2 -n 1 -m Fixed -p NONE -a CarryOnly | cellx -L30
> dtnsim -s 3 -n 1 -m Fixed -p NONE -a CarryOnly | cellx -L30

-s の引数がシード。シードの値によって生成される乱数の系列が変化する。

課題 2

--- mobility/fixed.py.orig      2021-08-23 12:00:54.498395785 +0900
+++ mobility/fixed.py   2021-12-06 21:48:28.322397148 +0900
@@ -51,4 +51,4 @@

     def move(self, delta):
         """Move the agent for the duration of DELTA."""
-        pass
+        self.current += V(delta, delta)

> dtnsim -s 1 -n 1 -m Fixed -p NONE -a CarryOnly | cellx -L30
> dtnsim -s 2 -n 1 -m Fixed -p NONE -a CarryOnly | cellx -L30
> dtnsim -s 3 -n 1 -m Fixed -p NONE -a CarryOnly | cellx -L30

初期状態から右下に等速移動するようになる (その後フィールドから出てゆく)。

課題 3

> dtnsim -s 1 -n 1 -m RandomWalk -p NONE -a CarryOnly | cellx -L30
> dtnsim -s 2 -n 1 -m RandomWalk -p NONE -a CarryOnly | cellx -L30
> dtnsim -s 3 -n 1 -m RandomWalk -p NONE -a CarryOnly | cellx -L30

課題 4

--- mobility/randomwalk.py.orig 2021-08-23 12:00:54.502395716 +0900
+++ mobility/randomwalk.py      2021-12-06 22:02:25.411949205 +0900
@@ -36,8 +36,10 @@
     def update_velocity(self):
         """Update agent's velocity using the velocity function."""
         vel = self.vel_func()
-        theta = random.uniform(0, 2 * math.pi)
-        self.velocity = vel * V(math.cos(theta), math.sin(theta))
+        if random.uniform(0, 1) <= .5:
+            self.velocity = V(vel, 0)
+        else:
+            self.velocity = V(-vel, 0)
         self.wait = False

     def move(self, delta):

> dtnsim -s 1 -n 1 -m RandomWalk -p NONE -a CarryOnly | cellx -L30
> dtnsim -s 2 -n 1 -m RandomWalk -p NONE -a CarryOnly | cellx -L30
> dtnsim -s 3 -n 1 -m RandomWalk -p NONE -a CarryOnly | cellx -L30

初期状態を中心とし、 水平方向にのみランダムウォークするようになる。

レポート課題 2024/12/11

「レポート課題 2024/09/25」と同じ。

https://lsnl.jp/~ohsaki/lecture/netcompx/2024/#10-7

[<21. シミュレータ解説 (1) (概要、エージェント)] [>23. ソフトウェア設計・実装]