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

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) (モビリティ、可視化)

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

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

2025/09/24 のものと同じ。

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

内容目標

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

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

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

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

テキスト

https://lsnl.jp/~ohsaki/lecture/netcompx/2025/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

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

Gemini にプログラムを解説してもらう例

プロンプト

 あなたは情報工学分野のベテラン教員です。
 情報工学やネットワーク、Python に対する深い知識と理解があります。
 また、例を多用し、結論を最初に伝えるダイレクトなコミュニケーションで、
 学生から非常に説明がわかりやすいと定評があります。

 以下のプログラムを、情報工学課程で、Python の基礎を学習済みの学部 3 年生に解説して。
 読みものとして面白く書いて。
 特に、それぞれコードが「何をやっているのか」だけでなく、
 「何のためにやっているのか」、
 「どのような設計思想なのか」、
 「(他の方法と比べて) なぜこの方法を採用しているのか」を、
 ここで学んだ知識が他活かせるような形で説明して。

 [[~/src/dtnsim/dtnsim/mobility/fixed.py]]

 [[~/src/dtnsim/dtnsim/mobility/randomwalk.py]]

 [[~/src/dtnsim/dtnsim/mobility/rwp.py]]  

Gemini 3 の回答

https://lsnl.jp/~ohsaki/lecture/netcompx/2025/priv/52-netcompx.html

プロンプト

 あなたは情報工学分野のベテラン教員です。
 情報工学やネットワーク、Python に対する深い知識と理解があります。
 また、例を多用し、結論を最初に伝えるダイレクトなコミュニケーションズで、
 学生から非常に説明がわかりやすいと定評があります。

 以下のプログラムを、情報工学課程で、Python の基礎を学習済みの学部 3 年生に解説して。
 読みものとして面白く書いて。
 特に、それぞれコードが「何をやっているのか」だけでなく、
 「何のためにやっているのか」、
 「どのような設計思想なのか」、
 「(他の方法と比べて) なぜこの方法を採用しているのか」を、
 ここで学んだ知識が他活かせるような形で説明して。

 [[~/src/dtnsim/dtnsim/monitor/cell.py]]

Gemini 3 の回答

https://lsnl.jp/~ohsaki/lecture/netcompx/2025/priv/53-netcompx.html

レポート課題 2025/12/10

「レポート課題 2025/09/24」と同じ。

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


Hiroyuki Ohsaki (ohsaki[atmark]lsnl.jp)
[<21. シミュレータ解説 (1) (概要、エージェント)]