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

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

質問

- 今回の講義では、chmod 666 ← 一般ユーザで書き込めるようにが出てきましたが、この数字の認識は以下のものであっていますかもし、間違っていた場合は正しい知識を教えてくださいr (read) = 4 w (write) = 2 x (execute) = 16 は r + w → 読み書きが可能ユーザー グループ その他がいずれも6よりユーザー グループ その他は読み書きが可能

  もう怖くない!chmod コマンドの徹底解説: ファイル権限の管理
  https://youneedjp.com/%e3%82%82%e3%81%86%e6%80%96%e3%81%8f%e3%81%aa%e3%81%84%ef%bc%81chmod-%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%81%ae%e5%be%b9%e5%ba%95%e8%a7%a3%e8%aa%ac-%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e6%a8%a9/

  間違いとは言えませんが、肝心の「UNIX のパーミッションはユーザ・グループ・そ
  の他で各 3 ビット、だから 8 進数で表現する」ということが書かれていません。

  → 原則: 利用する情報源は、手軽/無料かどうかではなく、信頼できるかどうかで判
  断する (日本語のブログや Wikipedia 等は使用しない)。

  私なら chmod(1) を読みます。

  > A numeric mode is from one to four octal digits (0-7), derived by adding up
  > the bits with values 4, 2, and 1.  Omitted digits are assumed to be leading
  > zeros.  The first digit selects the set user ID (4) and set group ID (2) and
  > restricted deletion or sticky (1) attributes.  The second digit selects
  > permissions for the user who owns the file: read (4), write (2), and execute
  > (1); the third selects permissions for other users in the file's group, with
  > the same values; and the fourth for other users not in the file's group,
  > with the same values.

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