平成 5年 度
修 士論文
汎 用 人 間 行動 シ ミュ レー シ ョ ンの 枠 組 み とその 開発 ― 建築総合支援 システムヘの応用 一
指導 :渡 辺仁 史 教授
早稲田大学大学院理工学研究科 龍野洋 幸
は じめに
利用者 の立場 に立 った建築計画 を行 うことが重 要 であることは、 い まさら言 うまで もない。 このた めには、建築空間におけ る人間の行動 をあ らゆる段階 で評価 し、その 結果 を計画 にフイー ドバ ック してい くことが必要 であ る。 建 築計画におけ る人間行動 シミュ レー シ ョンは、人間行動 モ デル、空 間モ デルの 2 つ のモデル を基 に成 り立 ってい る。 これは、人間が行動す るときの くせや習性 を調査 な どによって解析 した人間行動 モ デルを基 に、 コンピュー タの中に作 りだ した仮想人 間を、評価空間 を コンピュー タ上 で表現す るためのモデル (空 間モ デル)の 枠組 みに 従 って動 かす とい うことで あ る。 また、人間は環境 によって、その行動 に影響 を与 え られ る。 このた め、空間内 の風 や、 光、温度、煙 などの挙動 を扱 う環境 シ ミュ レー シ ョンを、人 間行動 シミュ レーションと同時 に行 うことが理想的 で ある。
人間行動 シミュレー ション
環 境 シミュ レー シ ョン
影響
図 :シ ミュ レー ションとモデル との関係
今 回 の人間行動 シミュレー シ ョンの プ ロ トタイプにお い て、火災時 に発生す る煙 の 挙動 を環境 シミュ レーシ ョンとして再現 し、人の避難行動 に影響 を及 ぼす ようなシス テ ム を開発 した。 しか し、環境 モ デルで扱 う要素 はその挙動 が複雑 で、解明 されてい ない部分 も多 く、 さらに人 間 の行動 との相関関係 につい ては、 まだ現実 の使用 にたえ る理論が確立 していない。そ のため、 ここでは環境 の影響 を考 えず、人間行動 シミュ レー ションの枠組 みのみを追 求 してい く。
究極 の人間行動 シミュ レー シ ョンは、本物 の人間を調査 す る空間に連 れてい き行動 させ ることで あ る。 しか し、ほとんどの場合、そのような ことは不可能 であ る。そ こ で、 コンピュー タの中の仮想 の空間で、仮想 の人間 を行動 させ るのである。 この仮想 の人間に、限 りな く本物 の人間に近 い行動 を再現 させ ることがで きれば、仮想空間に この仮想人間を発生 させ ることで、対象 とす る空間 の人 間行動 シミュ レー シ ョンを行 うことがで きる。 筆者 は この よ うな立場 か ら、主 に空 間内 の人 間 の流動 を評価す る人 間行動 シ ミュ レーシ ョンの研究 を行 ってい る。 このため、 これか ら述 べ る人間行動 シ ミュレー シ ョ ンは、人間を個人 で扱 い 、 また、評価 の対象 となる建築空間 は人間を個人単位 で判別 で きる規模 の ものとす る。
目次 は じめに 第 1章
1--1
研 究 目的
1-2
研 究背景
1--3
研 究概要
2--2
2-3 第 3章
汎用 人間行動 シ ミュ レー ションの理論
3--1
既存 システムの 問題点
9
3--2
汎用的な人間行動 シミュレーションの枠組 み 空間機能と人間行動
10
3-3 第
AKM 00AMS
5 6 8
2章 建築総合支援 システム 2--1 既存 CAD システムの 問題点
1 2 4
第
序論
4章 汎用人間行動 シミュレーションの解説 4--1 行動 の再現規模
12
13
4-2 4-3
空間の機能
14
人間の行為
15
4--4
人間 の属性
16
4-5
シ ミュ レー シ ョ ンの 流 れ
17
第 5章 おわ りに 参考資料 付録
システムの操作方法
第 1章
序論
1-1
研究目的
本論文 の 目的 は、建 築計画 を総合 的 に支援す る CADシ ス テ ムの 開発 の一環 とし て、空間の変更 にフ レキシブルに対応 し、人間の様 々 な行動 を再現 で きるような人間 行動 シミュ レーシ ョンの枠組 み を考察す ることであ る。 この考 えに従 って開発 した人 間行動 シミュ レー シ ョンは、建築総合支援 CADシ ス テ ムに組み込む ことによ り、汎用的 な人間行動 シミュ レー シ ョンシステムとして利用 す ることがで きる。 この操作 マニュアルを掲載す る。
早稲田大学渡辺仁史研究室 平成 5年 度修士論文
‐1‐
1-2
研究背景
人 間行 動 シ ミュ レー シ ョンの基 とな る、人 間行 動 モ デ ル と空 間 モ デル に つ い て 、 こ れ まで の研 究 の流 れ、 お よび、そ の問題点 につ い て述 べ る。
人間行動 モデル 当研 究室 では、建 築 空 間 と人間行動 の関係 を研 究 し、 これ までに、多 くのモデル と、そのモデルを基 に した行動 シミュレーシ ョンを発 表 してい る。 筆者 は、卒論時か ら 3年 間、一貫 して建築計画 におけ る人間行動 シ ミュ レー シ ョン の研究 を行 ない、 い くつ かのシステムを提 案、開発 してい る。そ の開発 の 中心 は、人 間行動 シ ミュレー シ ョンの基 となる人間行動 モデル ・空間モ デルの うち、人間行動 モ デルについ て、 2種 類 の汎用性 を確保することであ る。 全 く汎用生 のない シス テ ムでは、空間 ごと、行動 の種類 ごとにシ ミュレー シ ョンを 新 しく作 らねばならない 。例 えば、行動 は同 じ避難 を扱 った もので も、そ の対象空 間 が変 わ るたびに新 たにシ ミュレー シ ョンを作 り直 し、 同 じ空間が対象 であ って も、避 難行動 と、通常 の流動 を扱 った もの とでは同 じシス テ ムによる解析がで きない ことに なる。 建築計画 の中で特 に、 その計画案 が頻繁 に変 わる初期段階にお い て、 この よ うに、 シミュ レー ションそ の ものを作 り直 してい ては、迅速 なフイー ドバ ックなどは実現 し ようもない。 このこ とが結果 として、全 て計画 が終 わった後 の「 は くづ け」 のために のみシミュ レーシ ョンを利用す るとい う悲劇的 な事態 を招 いてい る。 寸応 が可能 な人間行動 シ ミュ レー 対象空 間や行動 の内容 の変更 に、 フ レキシブルなヌ シ ョンを実現す るため、空間面 。行動面 で汎用的 な人 間行動 シミュレー シ ョンの開発 が不可欠 である。
空間モデル 建築計 画 における コ ンピュー タ利用 は、 まず構造計算 などの数値演算 や、清書 図面 作成 のための CADと して始 ま り、計画初期段階 にお け る、逆 日影やそ の他 の法規 チ ェ ックなどにその利用範囲を広 げてきた。 しか し、 このように建築計画 の各段階 に おいて コンピュー タが禾U用 されるよ うになったとして も、その計算 に用 い られ るハー ドやソフ トが異な って い ては、そ のデー タ形式 が異 な るため、同 じ建築 を計画 してい るに も関 わ らず、それぞれの段階で新 たに建築 デー タを入力 をしなければな らない。
早稲 田大学渡辺仁 史研 究室 平成 5年 度修士論文
-2-
そ こで、そ うい つた建築 デー タの統 一化 ・規格化 を計 り、建築計画 の企 画段階 か ら 基本 。実施設計段 階 まで、意匠 。構造 。設備 ・積算 などの各分野 にわたつて、幅広 く 設計 を支援す ることので きるシステムの開発 が研究 され、一部 では実用化 されてい る。
大成建設 では、「 LORAN一 T」 と呼 ばれる総合建築支援 システムを自社 開発 し、平成 3年 4月 か ら実務運用 を行 なってい る。 企 業 によるシステム開発 は、その開発 コス トの問題や、既存 のデー タベース を最 大 限 に利用 したいなどと、数 々の制約 の基に行 なわれることが多 い。そ こで、純粋 に理 想的なシステムを研究、提案 してい くことが、大学 などの研究機関の使命 であ り、立 場 であると考 える。 「 00AMS」 は当研究室 で、総合的な建築支援 を可能 とす るため開発 され た知的 CADシ ステムであ る。今後 は、 このシステムに様 々な機能 を組み込む ことによ り、 理想的な総合支援 システムの在 り方 を探求 してい くことになる。
早稲 田大学渡辺仁史研究室
平成 5年 度修士論文
‐3-
1-3
研究概要
本 論文 の概 要 は、以下 の通 りで あ る。
第 1章
序論 研 究 目的、研究背景、研究概要 について述べ る。
第 2章
建築総合支援 システム 本研究 を始 めるきっかけ となった、 OOAMSに ついて、建築計画 を総 合 的 に支援す るための機能 を持 つ システム とは どうい った ものであ るか、 既存 のCADシ ステムの問題点 をふ まえて解説す る。
第 3章
汎用人間行動 シミュレーションの理論 汎用的 な人 間行動 シ ミュ レー シ ョンとは どうい った ものであるか、既存 のシステムの問題点 をふ まえ、その理論的な考 えを提案す る。
第 4章
汎用人間行動 シミュレーションの解説 具体的 に開発 したシステ ムについて、利用者が本 シス テ ム を理解す る上 で必要 と思 われる部分 を解説す る。
第 5章
システムの操作方法
OOAMS上
で簡単 に利用す ることが可能 な本 システ ムの操作方法 を、
実際 の操作画面 とともに解説す る。
早稲 田大学渡辺仁史研究室
平成 5年 度修士論文 -4‐
/¬
第 2章
建築総合支援 システ ム
2-1
既 存 CADシ ス テ ム の 問題点
これ まで建築 CADの 研究 お よびその開発 は、主にベ ク トルデー タの入力 を基本 と したシステムと して進 んで きてい る。 このようなシステムは、建築 を構成 してい る柱 や壁 な どの要素 を、幾何 学的な点や線 の集合 に変換 して しまうため、それ らの建築要 素 を、柱 や壁 とい った、建築概念 として認識す ることはで きない。 また、それ らの建 築要素 によって間接的 に定義 され る、部屋 などの建築空間 を認識す ることは、全 く不 可能 であ る。 このため、建築 を評価 す るために行 われる、様 々 な計 算 やシ ミュレー シ ョンのため に必要 なデー タ構造 とはな りえず、膨大なデー タを入力 して も、その使 い道 は製図 の みに限定 さて しまう。
早稲 田大学渡辺仁史研究室
平成 5年 度修士論文 -5‐
2-2
AKM(Architectural Knowledge representation Model)
AKMの 概要 建築図面 を見 た ときに、 この部分 が柱 であ り、 この部分 が壁 で あ ると判断 で きるの は、見 てい る人 の知識 によるものである。建築計画 や、その評価計算 をコンピュー タ 上で行 う場合、 これ らの建築要素 を認識で きるよ うな知識 を コンピュー タに与 え る必 要 がある。 このためには、建築 とはどうい った もので、各建築要素 の 間に どの よ うな 関係 があるのかを明確 に定義 したモデルが必要 となる。 当研究室 では、建築知識 を基 に建築 の概念関係 をオブジェク ト指向 によって定義 し た空間表現 モ デル ーAKMを 用 い てい る。 このモ デルでは、全ての建築概念 を、 自身 を規定 してい る他 の建築概念 との関係 で定義 してい るため、柱や壁 とい った建 築要素 も、部屋や フ ロアとい った建築空間も、そ れぞれ建 築 を構成 してい る概念 として、同 じレベルでのデー タ化 が可能 となってい る。 例 えば、柱 は交 わってい る 2本 の通 り志 と、壁 は両端 の 2本 の柱 と、 スラプは それ を支える四方 の梁 との関係 により定義 されてい る。
2本 の通 り芯 の 交点 柱
2本 の柱 の 間 壁
四方 の梁の上 スラ ブ
図 2-2-1:建 築概念の関係の例 このよ うなモデルを基 に開発 されたシステムでは、通 り志 の間隔 を変 える と、 それ ぞれの関係 を中継 しなが ら、建築知識 に従 い、変更 の必要 のある全 ての建築要素 の変 更 を自動的 に行 うことが可能 となる。
早稲 田大学渡辺仁 史研究室
平成 5年 度修士論文
建築知識表現 の拡張 建築 を構成 してい る概念 は、あ る定 まった視点か らみると、それ自身が物理的形状 を持 つ と考 え られる実態概念 と、実態概念 の集積 によつて成 り立つ機能概念 とに分け られる。 例 えば、 歩行 してい る とき、人 は壁 やス ラプを部屋や廊下 を構成す る実体概念 と感 じてい るが、その壁やス ラブも視点 を変えてみれば、 しっ くいやタイルな どの建築素 材 で構成 された壁やスラブ としての機能 を持 つ機能概念 と見 る ことがで きる。 建築計画 のよ うに、対 象 を観察す る視点 が様 々 に変 わる場合、建築 を構成す る概念 は実体概念 と機能概念 の どち らに も柔軟に解釈 で きるほうが 自然 であ る。 このためこ のモデルでは、建築を構成 してい る概念 を、実体概念 と機能概念 の両 方 で認識す るこ とが可能 で あ り、 どち らの概念 を採用す るかは、建築 を表現す るスケー ルによるもの としてい る。
一L﹂ 一匡+卜L
Construction Place
Space
Floor
Starway
Room
ArchhecturalObject
LevelStructure
Beam
LandingBeam ---T--
VVa‖
-
r PlaneStructure --]-
PlumbStruclure Landing Stud
Parapet Slab
I
L-
Ce‖ :ng
Roof Colunnn
-
Door Window Coal
ElevatorDoor
Gasing
Glass Handrail
Mullion Tread
図
2-2-2 :AKMに
よる建築概念の構造
早稲 田大学渡辺仁史研究室
平成 5年 度修 士論 文
‐7‐
2-3 00AMS 、 AKMの 考 え方 に従 い、 ワー クステー シ ヨンのSmalltalkの 環境下 で 開発 された知的 CADシ ステムで あ る。狭義 の CADと しての機能 を満足 させ るだけ
OOAMSは
でな く、設計、製図、構 造解析 か ら行動 シミュレー シ ョンに至 るまで、建築計画 の総 合的な支援 を目的 としてい る。 システ ムの概 要 は、 ウイ ン ドウに表示 されるテキス ト・ グラフイックス情報 を媒介 として、オペ レー ターが背後 の建築概念 モデルの構造 を直接操作す ることで、建築 モ デル 自身が要求 に応 じてその とき必要 とす る新 たなベ ク トル情報 あ るいはビッ トマ ッ プデー タを生成す るものである。 現行 システムでは、建 築空間 の関係 図、建築要素 の関係 図、各 フ ロアの平面図、透 視図な どの他 に、プロジ ェク トを列記す るためのウイ ン ドウなどによつて作業 を行 え るようになってい る。
図
2-3-1:00AMSの
画面
早稲 田大学渡辺仁史研 究室
平成 5年 度修士論文
‐8‐
第 3章
汎用人間行動 シミュ レー ションの理論
3-1
既存 システムの問題点
これまで提案 されてきた多 くの人間行動 シ ミュ レー シ ョンにお い て、次 の よ うな問 題点がある。 シミュレー シ ョンの空間 モ デルのために、評価空間 をシステ ムに対応 で きるよ うモ デ イフ ァイ しなければな らない場合 、例 えば、建 築空 間をい くつ かのノー ドに分割 し、そのネ ッ トヮー クに よって空間を表現す る とき、その作業 は、人間行動 について の知識 がなけ れば行 うことはで きない し、 ノー ド化 およびネ ッ トヮー ク化 の段 階 で、 客観性 を失 う恐 れがある。 人間の行動 を制御するプ ログラムが手続 き的 アル ゴリズムに従 って記述 されてい る 場合、そのプ ログラムの 中 に、空 間情報がその具体的 な名称 や数値 のデー タとして含 まれる ことにな る。 この ため、異 なる建築 につい て評価 を行 う ときは もち ろんの こ と、若干 の設計変更 を行 うだけで、元 の行動制御 プ ログラム中の空間デー タは使 えな くな り、 この部分 を新 しい デー タに したプログラムを作 り直 さなければな らない。 単一 の行動 しか再現 しな い人間行動 シ ミュ レー シ ョンの場合、他 の人間行動 を評価 す るためには別 の人間行動 シミュ レー シ ョンを使用す る しかな く、 このため、 シミュ レーション結果 の形式が不統 一 にな り、その整合性 が取 れな くな ることがある。
早稲田大学渡辺仁史研究室 平成 5年 度修士論文
-9_
3-2
汎用的 な人 間行動 シミュ レー ションの枠組 み
初期計画段階では、頻繁 に行 われる設計変更 のたびごとに建築空 間 の評価 を行 い、 その結果 をフィー ドバ ック しなが ら、 さらに設計変更 を重ねてい くこ とが望 ま しい。 この建築評価 に既存 の人 間行動 シ ミュレー シ ョンを用 い ることは、前記 の理由か ら不 適当で ある。利用者 の立場 に立 った建築空間の計画 を進めてい くとき、評価 を行 う空 間に対 しても行動 の種類 にお いて も、必要に応 じてフ レキシブルにメ 寸応 で きる汎用 的 ー な人 間行動 シ ミュレ シ ョンが必要 となる。
空間汎用性 人間行動 シ ミュ レー シ ョンにおい て、空間に対す る汎用性 がある とは、空間の構成 が変化 して も、人間の行動 を制御 してい るプログラム部分 を作 り直す必要 がない こと をい う。 この ため筆者 が取 って きた方法 は、 シミュ レー シ ョンシス テ ムと空間モデル 双方 に、情報交換及 び情報伝達す るための通信機能 を持 たせることである。 人間 は現在 い る場所 の情報 や周 りの情報 を空間モ デルに求 め、空間 モ デルはその要 求 に応 じて必要 な空 間情報 をシ ミュ レーシ ョンシス テムに与 え、人間は受け取 った情 報 を参考 に、それぞれの 目的・状態 により取 るべ き行動 を決定 し実行 す る。 これは、 現実 の人間の行動 の方法 を再現 したものである。 結論 としては、空間情報 をす べ て変数 として扱 うような行動制御 プ ログラムにす る ことで、空間モ デルか らの情報 を常 にフイー ドバ ックさせ ることが可能 とな り、空間 の変更 に即座 に対応 できるよ うになる。
早稲 田大学渡辺仁 史研究室
平成 5年 度修士論文
_lo_
人間行動汎用性 人 間行動 シミュ レー シ ョンにお い て、人間行動 に対 す る汎用性 があ るとは、扱 え る 人 間行動が多種多用 であ り、 かつ それらが同 じレベ ルで評価検討 で きることをい う。 このため筆者 が取 った方法 は、人間の行動 を細分化す ることによつて整理 し、新 たに 再構築す るとい った ものであ る。 複雑 に見 える人間の行動 も、空間 との関係 を中心 に考 えると、 い くつ かの単純 な行 動 の組み合 わせで表現 で きる。例 えば、駅 で切符 を買 い電車 に乗 るとい う行動 は、 「移動す る」 「切符売 り場へ」 + 「切符売 り場 で」
「改オLロ ヘ」 「ホームヘ」 「ホームで」
+
「並ぶ」
十 「移動する」 十 「移動する」 十 「待つ」
とい うように、「場所」 +「 行為」の形で表 された 5つ の行動 で表現 できる。空間に 対 して行 なえる人間の行為 の種類 はそれほど多 くはないが、 これらの行為 を、その行 な う場所 とともに考えることによって、建築計画において必要 な人間の行動 をすべ て 網羅 できると考 える。 これ らの細分化 され た行動 を順次行 わせることで、人間の複雑 な行動 を再現す る。
早稲 田大学渡辺仁史研究室
平成 5年 度修士論文
‐11‐
3-3
空間機能 と人間行動
空 間 モデル にお ける空間機 能 人 間 の行 動 とは一定 の欲 求 や 目的 を満足 させ る こ とだが 、空 間 にお け る人 間 の行 動 は、 そ の欲 求 や 目的 を満足 させ る機 能 を持 つ場所 にお い て行 われ る。 このため 、 人 間 行 動 シ ミュ レー シ ョンにお け る空 間 モ デル では、 そ の空 間 で 人 間 が行 え る行 動 の種 類 (空 間の機 能 )が 、空間 の属 性 として必 要不 可決 の もの となる。
人 間 が使 用 す る空 間 は、人 間 の様 々 な行 動欲 求 を満足 させ るための機 能 を持 つ 。建 築 図面 にお い て 、 それ らの空 間 の機 能 は言葉 や シ ンボルに よって表現 されて い るが 、 これ は、そ れ らの機能 の多 くが、空 間 が本 来持 って い る もので はな く、 そ の空 間 に設 置 され る器具 や、 配置 され る道具 に よ り、 または、 意 図的 に決 め られ る もので あ るか らであ る。 したが って、空 間 モ デルの各 空 間に もそ れぞれ の機 能 を明示 的 にそ の属 性 と して設定 す る必 要 がある。
空間機能による空間認識 人間が建築空間である行動 を行 うとき、その行動 は以下 のように説明 される。 知識 によって 目的を達成す るための機能 を持 つ場所 記憶 によって 目的地 となる場所 の位置
(目
(目 標地点)を
的地)を 判断す る。
判断す る。
目標地点が複数あるときは有利 なほ うを選択す る。 日標地点 に向け移動 を開始す る。 日標地点 で 目的達成 のための行動 を行 う。 例 えば、切符 を買 う場合、切符 を買 うのは券売機 だか ら、券売機 の あ る場所 に行 か なければな らな い ことは知識 と して知 ってい る。次 に、 この駅には、東日のあ の位置 と、西口のあの位置に券売機 コーナーがあるこ とを覚 えていれば、 自分が東口にい る とき、東回の券売機 コーナ ー に向かい切符 を買 う。 本 システムにお いては、空 間モデルの各空間 に機能 を明示的 に与え ることによ り、 空間認識に基 づ い た行動 を再現 してい る。 これは、人間の行動選択 のための情報 が空 間モ デルにあるとい うことで あ り、空間汎用性 を保持す るために有効 である。
早稲 田大学渡辺仁史研 究室
平成 5年 度修士論文
第 4章
汎用人間行動シミュレーションの解説
4-1
行動 の 再 現規模
本 システムにお け る人間行動 シミュ レー シ ョンは、 ス ラプを人間行動 の最小単位 と *。 これ は、人間個人 の行動 を再現す るのに適 してい る と考 え ら して扱 うもの とす る れる規模 の空間 を00AMSで 表示す るとき、その最小 空間単位が ス ラブであるか ら である。 したが って、ス ラブ内での人 間の位置、人間 どう しのス レ違 いなどは今 回再 現 してい ない。 本 システムにお いて、人 間 はスラブ単位 で移動す る。 ス ラブ とス ラプの間に壁 があ るときは、通過 はできないが、その壁 に ドアが着 い てい る場合、 ドアを通 って通過 で きる。 この時、 ドアを一度 に通れる人数 は ドアの大 きさによ り限 りがあ るので、大入 数 が一度 に到達 した場合、 ドアの前で滞留が起 こることがある。
ネスラプは 本来建築要素 であるが 、 この論文 中では、部屋 などの空 間 をそれを るスラプの 構成す 空間の ことをス ラブと表記す る。 大 きさで分割 したガヽ
早稲 田大学渡辺仁史研究室
平成 5年 度修士論文
13-
4-2
空間の機能
本 システ ムにおける人 間行動 はスラブ単位 で行 われるため、空間の機能 もスラプに 設定す る。空間の機能 も人間の行動 と同様 、単純化 して考 えることで、そ こで行 われ る人間の行為 と、そ の行為 に関す る数値 デー タによって様 々な機能 を表現 で きる。 例 えば、切符売 り場 と、 トイ レとでは、そ の使 われる 目的 は全 く異 なるが、それぞ れ券売機 と便器 とい う要素 を使用す るために待 ち行列 に並 び、要素 を一定時間使用す るとい う点 にお いて、人間の行動 を流動 とい う面 か ら評価す るシ ミュ レーシ ョンでは 同 じ扱 いがで きる。 本 システムにお い て、空間機能 として設定す る、人間 の行為 とそ の行為 に必要 な情 報及 び、その行為 が行 われる空間の例 を以下 にあげる。 移動する 必要情報 :目 標 としての機能 しかないため特別 な情報 はない。 空間機能 :エ ン トラ ンス、非常 口な ど。 並ぶ 必要な情報 :待 ち行 列 の対象 となる要素数、要素使用時間。 対象空間 :レ ス トラ ン、切符売 り場、 トイ レなど。 滞在す る 必要 な情報 :滞 在時間。 空間機能 :待 合場所 など。 また、 シ ミュ レー シ ョンを行 うために、評価空間に人間が出現す るス ラプを設定す る必要がある。 これ も、空間の機能 として同様 に設定す る。 必要情報 :出 現 して くる人間の属性 とその属性 の人間が出現す る割合。 空間機能 :エ ン トラ ンスなど。
早稲 田大学渡辺仁史研究室
平成 5年 度修士論文
_14-
4-3
人 間 の行為
人間の行動 は、 目的 を達成す る機能 を持 つ空間 (目 的地)で 行 われ る。 このため、 本 シス テ ムでは、人 間 の様 々 な行動 を、 目的地 を順次与 える こ とで設定す る。例 え ば、切符 を買 い電車 を待 つ とい う行動 を再現す る人間 は、 (切 符売 り場 。ホーム)と なる。 人間が実際に空間で行 う具体 的な行為 はその空 間機能 に保 持 してあ り、人間 はそ の 行為 を行 う。人間の行為 の再現方法 を以下に解説す る。 移動 する(move)
1)ス
標 地 点 )に 向 か う よ う 経路選択 を行 う。 ただ し、現 在 い るス ラブが記憶 にな い 場合 、判 断 を ラブ ご とに最 も近 い 目的地 の あ る位 置
(目
誤 るこ とが あ る。
2)歩 行 速度 をス ラブの人 口密度 に よ り変化 させ る。 3)次 のス ラブに移 動 す る。
4)経 路 選 択 、歩行 速度補 正、次 のス ラブヘ の移 動 を 目標 地点 に到達 す るまで繰 り返す。 主儘らヽ (queue)
1)目 的地 となる位 置 まで移 動 す る。 2)目 的地 に設定 してある要 素 が全 て使用 中 な らば待 ち行 列 に入 る。
3)要 素 を使 用時 間分使用 す る。 滞在 する(wait)
1)目 的地 とな る位 置 まで移 動 す る。 2)目 的地 に設定 してある滞 在 時 間の 間そ のス ラブに滞在 す る。
早稲 田大学渡辺仁史研究室
平成 5年 度修士論文
‐15‐
4-4
人間 の属性
本 システムにおける人間の属性 について解説す る。 出現 させ るときに設定す ることのできる属性 名前(nallne) 具体名 の設定 を行 わない ときは出現 したスラプが設定 される。 催L男 り (sex) 設定 を行 わない ときは「nil」 と設定す る。 年令(age) 設定 を行 わない ときは「nil」 と設定す る。 目的地の集合ourpoSec01lection) 行動 目的地 を順 に並 べ た集合 の形 で設定す る。 したが って、様 々 な行動 をさせたい ときは、 この 目的地が多 くな る。 知 っている空間の集合(remenbrantSlabs) 空間内 で記憶 して い るス ラブの集合 を設 定す る。 これは経路選択 の と き、現在 い るスラブが知 っている場所 か ど うかの判断 に使 う。 また、通 過 したス ラブはこの集合 に含 まれる。 出現す るときに 自動的 に設定 される属性 基本歩行速度(speed) 性別 と年令 を基に導 きだ される属性。性別、年令 とも「nil」 の ときは人 間全体 の、年令 のみが「nH」 の ときは性別 による歩行 速度 の平均値 が設 定 される。 シミュ レーシ ョン実行 中は、基本歩行速度 の値 を基 に、スラプの人口密 度 により補 正 された歩行速度 で移動す る。 シ ミュレー シ ョン実行 中に随時変更 される属性 現在 いるスラブ(currentslab) 次 に進むスラブ(nextslab) 進行方向(direCtiOn) 現在向 かっている 目的地(purpOSePOint)
早稲田大学渡辺仁史研究室 平成 5年 度修士論文
‐16-
4-5
シ ミュ レー シ ョンの流 れ
本 シス テ ム に よる人 間行動 シ ミュ レー シ ョンの流 れ を、 シ ミュ レー シ ョン を構 成 す る 3つ の クラス ご とに解説す る。
シミュレー ションを制御するクラス(HumanBehaviorSimuladon) 1)空 間 モ デルにお い て待 ち行 列 が発生す る部分 (ド ア 。人が並 ぶ機 能 のスラブ)の resourceを 設定す る。
2)人 間が 出現す るス ラブにお い て、そ の発生 プ ロセスのス ケジ ュー リ ングを行 う。人間 の発生間隔 は、 3事 象遅れのガ ンマ分布 による。 3)シ ミュ レー シ ョン状況 を表示 させ る クラスのスケジュー リ ングを行 う。表示 の間隔 は、 シミュレー ション開始時 に設定す る。 4)シ ミュ レー シ ョンを開始 し、 あ らか じめ設 定 した終了時刻 まで実行 す る。 人間の行動 を制御するクラス(Human)
1)属 性 の設定 を行 う。
2)現在 い るスラブに 自身を保持 させ る。 3)目 的地 の集合 か ら最初 の 目的地 を削除 し、 それ を「pllrposePoint」 と す る。
4)目 的地 とな るス ラブか ら計算 した全 ス ラプ のス テ ップ数 を設 定 す る。
5)ス テ ップ数 を参考 に次 に進 むべ きス ラプ を選択 す る。
6)現 在 のス ラプの人 口密度 か らそのス ラブ内 で の歩行速度 を決 め る。 7)現在 のス ラブ内 を移動す る。 8)現 在 い るス ラブか ら自身 を削 除 させ る。 9)次 のス ラブに 自身 を保 持 させ る。 10)次 のス ラプを現 在 い るス ラブ とす る。 ■)5∼ 10を 目的地 となるス ラブに到達 す るまで繰 り返す。 12)目 的地 の機能 に従 い行動 (並 ぶ 。待 つ)す る。
13)全 ての 目的地 に到達す るまで 3∼ 12を 繰 り返 す。 シ ミュレー シ ョン状 況 を表示 させ るクラ ス(SimuladonAnimadon)
1)全 ス ラ ブ に い る人 間 の座標 デ ー タをそ れ ぞ れ のス ラブ内 にお い て ラ ンダ ム に決 め る。
2)人 間 の座 標 デ ー タを00AMSの ドロー イ ングクラス に渡 す。 3)シ ミュ レー シ ョン時間 をOOAMSの ドロー イ ングクラス に渡 す。
4)1∼
3を 表示 間隔 ごとに行 う。
早稲田大学渡辺仁史研究室 平成 5年 度修士論文
‐17‐
第 5章
システムの操作方法
本 システ ムの操作 は、 OOAMSの 平面図 の ウイ ン ドウ上 で行 う。 この操作方法 を、 JRと 地下鉄 の改札日のある駅 コンコースを例にあげて行 う。
00AMSの CAD機 能 を用 いて、建築物 を入力す る。 lst Ficrl『
図
Pi日 向 rSi□ iaticm(131田
5-1 :駅 コンコース平面
シ ミ ュ レ ー シ ョ ンを行うためには、全 て の 空 間 は 、 ドア な どに よ つ て 連 結 して い る 必 要 が あ る。
スラプにシミュレー シ ョンに必要 なデー タを設定す る。 まず、移 動す るための 目的地 となるスラブに対 して行 う。 これには、駅 の出口 と、 」R、 地下鉄 の構内がある。 設定す るスラブをセ レク トす る。 lst Fioo『
図
P:JorSi■ ulation 〔1
5-2:セ レク ト状態
メニューから「sd面omatiOn」 を選択する。
perspeclive i struclure
::liain
図 5-3:ス ラブの メニュー
データの設定を行うので「OK」 を選択する。 lst Fimr PIJorSittlatim〔
11180〕
図 5-4:選 択 ウィン ドウ
セ レ ク トしたス ラプ の イ ンス ペ ク トウ イ ン ドウが 開 く。 lst FicrDr PiaForSittiaticn(1
図
5-5:ス
ラ ブの イ ン スペ ク トウ ィ ン ドウ
スラプのインスタンス変数の中から「infOrmation」 を選択 し、名前入力の項 の 「narne」 を「gaに 1」 に変える。 lst FIIII PIJorSI■ ulation (1 = 100 )
図 5-6:デ ー タ書 き換 え後 の 状態
図のようにセレクトし、メニューから「do it」 を選択する。 lst Ficr PiJorSiHJiatim〔
図 5-7:反 転選択
131m〕
平面図上のスラブに「gatel」 と表記され、データが入力 されたことが分かる。 lst F:cD『
図
PiahrSi口
iatim(181m)
5-8:1か 所設定後
同様 に して、全ての移動 目的地 となるスラプの設定 を行 う。 平面図上のスラブにさらに、 「gate2」 「gate3」 「gate4」 「JR」 「subway」 と表記 さ れ、デー タが入力 された ことが分 かる。 lst F:oo『
図
PiaForS:HJlatim(1=1口
)
5-9:移 動 目的地 の ス ラ ブ設定後の状態
次 に、並ぶための 目的地 となるスラブの設定 を行 う。 これには、 JR、 地下鉄 の切 符売 り場 がある。 設定す るスラプをセ レク トす る。 lst Fi∞ 『
PiahrSiШ latim(1=1口
図 5-10:セ レク ト状態
)
同様にしてインスペクトウインドウを開き、待ち行列の項の目的地名を「JR‐ T」 、 要素を保持する平均時間と標準偏差を「15.05.0」 、要素の数 を「4」 に変更する。 lst F:∞『
図
P:ahrSittlatim(131口 〕
5-││:デ ー タ書 き換 え後 の 状態
同様 にセ レク トし、「do it」 す ると、平面図上 のスラブに「JR‐ T」 と表記 され、 データが入力 されたことが分 かる。 『 Pi卸 brSi口 latim(11100〕
lst F:∞
図 5-12:1か 所設定後
同様 に して、全 ての並ぶための 目的地 となるスラプの設定 を行 う。 平面図上のスラブにさらに、 「sub― T」 と表記 され、デー タが入力 された ことが分 か る。 lst F:∞ PlattrSiШ latim(131m) 『
図 5-13:並 ぶスラ ブまでの設定終了後 の状態
人 間の出現す るスラプの設定 を行 う。駅 の入 口 (出 口 と同 じ)と 、 JR、 地下鉄 の 構 内がある。 設定す るスラプをセ レク トす る。 lst Fim『 Pi卸 詢rSittiatlcm〔
図
1
5-14:セ レク ト状態
同様 に してイ ンスペ ク トウイン ドウを開 き、人の発生 の項 の、出現間隔 を「0.20」 に 変更 し、出現す る人間の属性 とそ の割合 も設定す る。 この属性 の 中に評価空間に存在 しない 目的地 を設定す ると、 シミュレー ション中でエ ラーが発生す る。 lst FI∞『
図
PidhrSi口 lat:cn(111田
5-15:デ ー タ書 き換 え後の状態
)
同様 にセ レク トし、「do it」 す る と、平面図上 のスラプに「appear」 と表記 され、 デー タが入力 されたことが分 かる。 lst Fi∞ r
図
plattrSiHJlatim(131m)
5-1611か 所設定後
同様 に して、 全ての人間の出現するスラプの設定を行う。 平 面 図 上 で 「appear」
と表記されたスラブが 6つ になり、データが入力されたことが
分 か る。 lst Fi∞
『
P:ahrSiШ latim〔
1=lm)
図 5-17:全 設定終了後 の状態 これ で シ ミ ュ レー シ ョ ン を行 うため の準 備 が 完 了 す る 。
駅コンコースにおける人間流動のシミュレーションを行う。 平面図のメニューから「simulatiOn」 を選択する。 lst Ficr PiJorSiШ
図
iatim(131口
5-18:フ ロ アの メ ニ ュ ー
)
る。
ユ ´
シ ミ
レー シ ョン状況 を表示す る間隔 を入力 して、 シ ミュ レー シ ョンが 開始 され
lst FicID『
図
PI□詢
rSittiatim(1
5-19:表 示間隔入カ ウィ ン ドウ
平面図の左上 に、シミュレー シ ョン開始時か らの時間が表示 される。 lst F:crr P:a■ ■ ISl● u:ation (1 3 100
図
〕
5-20:シ ミュ レー シ ョン開始 15秒 後
駅 コ ンコース の、人 間 の分布状 況 が よ く分 か る。 lst Fioo『
PIJorSi■ ulalion (1 1 100 〕
図 5-21:シ ミュ レーシ ョン開始 3分 後
シミュレー シ ョンを途中で止めるときは、平面図のメニューか ら「simula■ On を選択す る。
図
5-22:フ
ロ ア の メニ ュ ー
stop」
地 下鉄 の切符売 り場 の位 置 を変 更す る。 平 面図 の人 間 を全 て消 して、 平 面 図 をシ ミュ レー シ ョン前 の状 況 にす るため、平 面
図のメニューから「cleanFl∞ r」 を選択する。 lst Ficlr P:劉
図
陶rSinllaticm〔 1 31El〕
5-23:フ ロアの メニ ュ ー
変更するスラプのインスペクトウインドウを開き、機能削除の項の、「name」 を 「sub‐T」 に変える。 lst FicrDr Plamrslttiaticn(1=103)
図 5-24:デ ー タ書 き換 え後 の 状態
これまで と同様 にセレク トし、 「do it」 す ると、平面図上から「sub_T」 とい う表記 がな くな り、そのスラブか らデータが肖U除 されたことが分かる。 lst FI暉
P:JorSiШ :aticm(1810D〕
「
図 5-25:「
sub― T」
が削除された状態
変更するスラブに「sub― T」 を、前のスラブと同様にして設定する。 lsl Ficrr PlaJ■ISi■ulation
〔1 1 100 〕
図 5-26:場 所の変更後 の状況
変更後、 シ ミュレー シ ョンを行 う。 人間の分布状況が変化 したのが分 かる。 lst Fiα
『
PIJorsi口 iatim(13100〕
図 5-27:変 更後 の シ ミュ レー シ ョン状況
おわ りに
学部 4年 か ら現在 までの 3年 間、 一貫 してSmalltalkに よるシ ミュ レー シ ョンの研究 開発 を行 って きた。その集大成 ともい うべ き本 システムだが、 まだまだや り残 してい た り、不備 な点 は多 い。 しか し、 システム開発 とは、改良 と発見 との繰 り返 しであ り、完成す るこ とはない とす るな らば、 これ も仕 方 のないこ とである。 ただ、 OOA
MSに つい て も、Smalltalkそ の ものについ て も、部分的に しか分 か らなか った もの が、 よ うや く互 いにつなが り合 い、全体像 が見 えてきた段階 でのプロジェク トか らの 離脱 は残念 でな らない。 で きる こ とならば、 この研究 を引 き継 いで、 よ り理想的な人 間行動 シミュ レー ションの研究開発 を進めて くれ る人が出 ることを切 に願 うものであ る。
最後 に、人 間 の研究 をす ることの大切 さを初 めて教 えて頂 き、幅広 い見地 か ら様 々 な提案 をして頂 い た、渡辺仁史教授 に感謝 い た します。 また、 この 3年 間、 つ ねに、 理論・技術 の両面 で的確 な指示 を与 えて くれた、本 システムの根本 となる OOAMS の開発者 で もある、渡辺俊 さんに感謝 します。
参考資料 書籍
1)A.Goldberg and D.Robson:「 Smalltalk‐ 80 The Language and its hplementation」 :オ ー ム社 2)A.Goldberg:「 Smalltalk‐ 80 The lnterract市 e Programming Environment」 :オ ーム社 3)舘 野昌一・及川一成 。川西真木 :「基礎 からのSmalltalk-80」 :
工学社
4)鈴木則久 :「 オブジェク ト指向」 :共 立出版 5)三 浦大亮 :「 シミュレーション入門」 :オ ーム社 6)坂 本文 :「 たのしいUNIX」 :ア スキー出版局 7)早 船京子 :「SunOS入 門 ビギナー編」 :ソ フ トバ ンク 8)渡 辺仁史 :新 建築学体系 H 環境心理 :彰 国社 9)渡 辺仁史等 :「 安全計画の視点」 :彰 国社 10)広 瀬貞之 ・守屋秀夫 ・村尾成文 ・浜田信義 :「 建築 の防災設 計」 :日 本サ ムシング H)日 本建築 セ ンター編 :「 新・建築防災計画指針」 :日 本建築 セ ン ター
12)室 崎益輝 :「 ビル火災」 :大 月書店 13)阿 久津邦男 :「 歩行 の科学」 :不 味堂出版 論文
14)渡 辺俊 。渡辺仁史 :「 オブジェク ト指向 による建築概念モデリ ングの研究」 :日 本建築学会大会学術講演梗概集 1989年 15)渡 辺俊 ・渡辺仁史 :「 概念関係 に基づいた建築 の知識表現 モデ ルに関す る研 究」 :第 12回 情報 システ ム利用技術 シ ンポジウム 1989年
16)渡 辺俊・渡辺仁史 :「 建築知識表現 モ デルの拡張 と意味理解に 関す る研究」第13回 情報 システム利用技術 シンポジウム1990年 17)渡 辺俊・渡辺仁史 :「 建築知識表現 モ デルの並列性 と依存性 に 関す る考察」第14回 情報 システム利用技術 シンポジウム1991年
18)山 田周平・栗原信 一郎 ・藤田三男 :「 建築設計支援 システムD
ELTAそ
の 1」
:第 9回 情報 システ ム利用技術 シ ンポジウム
1987年
19)山 田周平 。栗原信一郎・藤田三男 :「 建築設計支援 システムD
ELTAそ 1987年
の 2」
:第 9回 情報 システ ム利用技術 シ ンポジウム
20)山 田周平・栗原信一郎・藤田三男 :「 建築設計支援 システムD
ELTAそ
の 3」
:第 9回 情報 システ ム利用技術 シ ンポジウム
19874F
21)北 丈男 :「 建築系 CADシ ステムの開発 マ ネー ジメ ン ト」
:
第 12回 情報 システム利用技術 シンポジウム1989年 22)北 丈男 :「 建 築系 CADシ ステムの開発 マ ネー ジメ ン トそ の 2」
:第 14回 情報 システム利用技術 シ ンポジウム1991年
23)加 藤啓介・北丈男・高山正春 。和手俊明・作間久義 ・武田真 ・ 山本健雄 。木田邦夫 :「総合建築 CADシ ステム『 LORAN一 TJの 開発・実用化」 :第 13回 情報 システム利用技術 シンポジウ ム199o年 24)加 藤啓介・和手俊明 。作間久義 。武田真 。南林和 ・八木義之 :
「総合建築 CAD「 LORAN一 T」 における 3次 元建築意味 モ デルについて」 :第 14回 情報 システム利用技術 シンポジウム1991
年
付録
(シ
ミュ レーションリス ト)
'Simulation subclass:#HumanBchaviorSimulation instanceVariableNarnes'dependents anSlabs anima■
onlnterval endingTime animation'
classVariableNames:"
p∞Dictionarics:" category:'00AMS― Simulation'!
!IIumanBchaviorSimulation inethodsFor:'initialize―
rerlease'!
dermeArrivalSchedule "人 とア ニ メ ー シ ョ ン ク ラ ス の 発 生 。 " "Written by Hiro,4 Februa7 1994'' !infomation l ser initializeVariableOfSlabs.
allSlabs do:[:slab l((infOmation:=slab infomation)notNil and:[infOmation name includes: 'appear'])
ifrrue:[((infOmation function at:'appear') at:3)
dO:[℃ achHurnan lser schedule:[(OIuIInan new:selD
purposeCollection:(eaChHuman at 4)
remenbrantSlabs(eachHuman at 5) appearSlab:slab)startUp] startingA■ 0.0
andThenEvery:(GarnlnaDistibu■ on eve■ s3mcan:((infOma■ On hnction at:'appear')
at a バeaChHuman at o)]]]. ser scheduleArriva10■ ((animation:=SimulationAnimation new:selD setVariable:
ammationlntervd) at:0.0.
self scheduleAriva10f:(SimulationEnding new:selo at endingTime! defineResources "待 ちので きるスラプのresourccの 設定。"
1'WHtten by Hiro,28 Janu暉
1994"
ld∞rs infomation nalne function l doors:〓 OrderedCollection new. dependents frst architectura10可 eCt Walls do:[:wal‖
d∞ rs addAll:wall doors].
doors do:[:d00ri serproduce:(door Wida1/1ooO/0.6)■ oor Ott dOor]. allSlabs do:[:slab l(infOrmation:=slab infomationl isNil ifFalse:
[name := information name. function := information function. (name select: [:each I ((function at: each)
at:1)
=#qucuc]) dO:【 :each
i selfproduce:((mnction at:cach) at:3) each]]]!
“
htializeVariableOfSlabs "シ ミ ュ レ ー シ ョン を 行 う ス ラ プ の 変 数 を初 期 化 す る 。
"W五tten by Hiro,25 Janu叫 ′1994' allSiabs do: [∬ lab!
slab h― 霞 Set new. slab stepNumber nil]!!
!HmanBchaviorSimulation meぬ αisFor:'accessing'! allSlabs
"シ
ミュレーション空間での全スラプを返す。"
"Written by Hiro,25 Janua呼 1994" AallSlabs!
anlmation
"Written by Hiro,25 Januay 1994" Aanimation!
dependen毯 "WHtten by Hiro,26 January 1994" Adependen“ !! !HumanBchaviorSimulation mettodsFor:'private'! se6〔 atrix:pposcPoint "ス
ラプのステ ップ数 を設定す る。 "
"WHtten by Hiro,28 January 1994:: l counter setSlabs pSlabs infomation mSlabsl counter:=0。 setSlabs:=Set new.
OSlabS:=dlSlabs sdect islab l(infOmation:=slab infomadonl notNll and:〔 infOmalon
name includes:p町 フ oscPomt]])iSEmpty
釘 ma[ADialogView wam:purposcPoint,'が 平 面 上 に あ りま せ ん 。 '].
pSlabs do:[Slab:setSlabs ada(ser
setSt"Number:0 tO:puFpOscPoint at:slabD].
[SetSlabs size=aliSiabs sizel
whileFalse: [pSlabs := setSlabs select: [:slab | (slab stepNumber au purposePoint) = counter].
counter:= counter + l. pSlabs isEmpty ifFalse: [pSlabs do: [:slabl | (mSlabs := slabl movableSlabs) notNil ifTrue: [mSlabs do: [:slab2 | (setSlabs includes: slab2) ifFalse: [setSlabs add: (self setstepNumber: counter to: purposePoint at:
slab2)llllll!
setStepNumber:a卜 Ttunber to:pttscPoint at:aSlab "purposcPointか
らaSlabま でのステップ数 をstepNumberに 代入する。
"W五 tten by HiЮ ,28 Januaり 1994"
inmberl (number:=aSlab stepNumber)isNil
irmα [number:=Dictionary new. number at:purposcPoint put:aNumber.
aSlab stepNumber:number] ifFalse:[い umber keys includcま PurposcPoint)
ifFalse:[nlnbcr at:purposcPoint put:aNmber]]. AaSlab!
setVariable:plaFls mterval:seconds ending:time
"W五 tten by Hiro,4 Febru雪 ソ1994" dependents:=OrderedCollection new. plans do:[:Cach!dependents add:(each simulation:selo]. allSlabs:=dependents irst architecЩ a10biect Slabs.
armad(流 hterval:=seconds. endingTime:=tune!! ,1__ ______― ――― ― ―― ―――‐――― ― ――― ―――――――― ――`''
H―
anBchavlorSimulation class
instanceVariaЫ cNalnes:''!
!】
IumanBehaviorSimulation class rnettodsFor:'exmple'!
On:Plans "Written by Hiro,4 February 1994‖ l seconds endingTime aSimulation:
seconds:=(DialogView request'状 況 は何秒 ごとに表示 します か'initialAnswer:'3.0') asN― ber. s∝ onds>0.0 ifrrue:
[endingTime:=1800.0.
Hman initialize。
aSimulation:=HumanBchavlorSimulation new setVariable:PlanS interval:seconds
ending:endingTime. aSmulation startUP. IaSimulation timeく endingTime] whileTruc:〔 aSimulation proceed]. plans do:[:each i each simulation:nill.
aSmula■ on initializeVariableOfSlabs]!! SimulationObiect Subclass:#Hlman mstanceVariableNames:'naFne SeX age pwposcColl∝ tion remenbrantSlabs speed direction pttOSCPOmt curentSlab nextSlab' classVariableNames:'Counter Rand WalkingSpeed' poolDictionaries:"
category:'C)OAMS¨ Simulation'!
!IIuman rneぬ odsFor:'simulation control'!
move "目
的地まで移動する。"
"W蓋 tten by Hiro,28 Januaγ 1994" linfomation length doors l sunulation sea嗜 atrix:purposcPoint.
[(infOmation:=currentSlab infomationu noNil and:[infomatiOn name mcludes:pulposcPoint]] whileFalse:[cnextSlab:=ser selectNextSlab)=curentSlab ifrrue:[self h01dFor:1.0] ifFalse:
direCtiOn:=currentSlab slabDirection:nextSlab. 〔
serholdFor:(length:=curentSlab lengぬ :nextSlab1/self Speed/2.
Kd00rS:=CurentSlab co― onDoors nextSlaり notNil ifrruc:ISer hOughDoor: doors].
remenbrantSlabs add:currentSiab.
serremoveHumanFrom:curentSlab, ser addHumanA● nextSlab. curentSlab:=nextSlab. ser hOldFor:lengthノ self speed/2]]!
none "何 もしな い。 " I=Witten by Hiro,12 February 1994"
AseШ
qucuc "目
的地 まで移動 し、 要素 を確保 で きる まで待 ち行列 に入 り、 一定 時 間留 まる。 "
"WFitten by Hiro,4 Febmary 1994“
I
data aWaitingSimulationObject
I
self move. ((self resourceAvailable: purposePoint) and: [((data:= currentSlab information function at: purposePoint) = #queuel)
ar l)
ifTrue: [aWaitingSimulationobject := self acquire: I ofResource: purposePoint. self holdFor: (NormalDistribution mean: ((data at 2)
ar
l)
deviation: ((data an 2) at: 2)) next.
self release: aWaitingSimulationobjectl
!
selectNextSlab "次 に向 か うス ラプの決定 。 ス ラプのステ ップ数 と人 口密 度 に よる。 "
1'Wntten by Hiro,25 Janu町
1994''
cunentSlabStepNumber mSlabs eSlabs I currentSlabStepNumber := currentSlab stepNumber aU purposePoint. mSlabs := currentSlab movableSlabs selecr: [:slab | (Human densityAu slab) I
< 4.01. (remenbrantSlabs includes: currentslab)
ifTrue: [0 to: currentSlabStepNumber - I do:
[:i
I
eSlabs := mSlabs selecu [:slab | (slab stepNumber at purposePoint)
- il. eSlabs isEmpty ifFalse: [^(SampleSpace data: eSlabs)
next]ll
ifFalse: [((currentSlabStepNumber / 5) squared min: 100 - 50) < (Rand next * lfi))
ifTrue: [eSlabs := mSlabs selecu [:slab | (slab stepNumber au purposePoint) < currentslabStepNumberl
l
ifFalse: [eSlabs := mSlabs selecc [:slab | (slab stepNumber an purposePoint)
>= crmenrS
labS tepNumberl
l.
eSlabs isEmpty iJFalse: [^(SampleSpace data: eSlabs) next]].
^currentSlab! tasks
"Written by Hiro, 28 January 1994" self addHumanAt: currentSlab. [purposeCollection isEmpty] whileFalse: [purposePoint := purposeCollection removeFirst. self move. self perform: ((currentSlab information au purposePoint)
ar l)1. self removeHumanFrom: currentslab!
hOu」 D00r:aColl∝ ■on "ド アの前 で待 ち行列 に入 る。 “
"WHtten by Hiro,4 Febru響 ソ1994"
ld∞rs currenOoor aWaitingSimulationOttect: aCollcction size>1 ifrrue:
[d00rS:=SOrtedColl∝ tion new sortBl∝ k:[:doorl:d∞ r21(simulationprovideResourceFor: doorl)pending sizeく (simulation provideResourceFor:door2)pending size]. aColl∝ tion do:[d00rl doors add:d∞ r].
cmentDoor:=doors first] ifFalse:[aCollCC■ On do:[:d00rl currentDoor:=d∞
r]].
aWaitingSimulationObiect i=Self acquire:l olResource:currentDoor. ser h。 ldFor:1/(1.5*(curentDoor
width/1CIC10)).
self release:aWaitingSimulationOЧ ect! walt "目
的地 まで移 動 し、 一 定 時間留 まる。 "
"WHttcn by HiЮ ,4 February 1994" l data l
self move.
((data:=cuFentSlab infomation function at:purposcPoint)at:1) =#wait ifrrue:[self h。 ldFor:(NormalDisribution mean:(cata at a at:1) deviation:((data at 2)
at:2)nexo]!! !IIuman inethodsFor:'accessing'!
speed "人 口密 度 に よって歩行 速度 が 変化 す る。 "
‖ Wntten by Hiro,24 Janua,1994" l dellsity l
CenSity:=Human densityA● currentSlaDく 0.3 ifrme:[Aspeed]. densityく 1.O ifrruc:[Aspeed*0.7].
Aspeed*0.4! speedOfSex:aSymbol andAge:anlnteger "性 別 と年 齢 か ら歩 行 速 度 を返 す 。 "
"Written by Kishino,10 Femary 1994“ Modirled by HirO,12 February 1994‖ “
lsexBox ageBox templ
temp:=0. sexBox:=OrderedCollection new.
ageBox:=OrderedColl∝ tion new. sexBox add:aSymbol. ageBox add:alhteger.
sexBox first isNil
iflrue: [ageBox first isNil ifTrue: [^1.4]. ageBox first isNil ifFalse: [^((WalkingSpeed ac #male) ar (ageBox first / 5) ceiling) + ((WalkingSpeed au #female) ar (ageBox first / 5) ceiling) / 2ll. sexBox first = lfmale
ifTrue: [ageBox first isNil ifFalse: [^(WalkingSpeed at: #rnale) at: (ageBox first / 5) ceiling].
I to: (WalkingSpeed
at: #male) size do: [:each I temp := temp + ((WalkingSpeed at:
#male) at: each)1.
ntemp / (WalkingSpeed at: #male) sizel. sexBox first = #female
ifTrue: [ageBox first isNil ifFalse: [^(WalkingSpeed at: #female) at: (ageBox first / 5) ceiling].
I
to: (WalkingSpeed at: #female) size do: [:each I temp := temp + ((WalkingSpeed at:
Ifemalo
at
each)1.
(WalkingSpeed ar #female) sizel! ^temp /
!Hman methodsFor:'P五
!
Vate'!
addHurnanAt:aSlab "ス ラプに自身 を保持 させ る。 " "Written by Hiro,24 Janua,19941
aSlab hman add:sen changePurposc:anArray
"W五 tten by Hiro,28 Januay 1994" purposeColl∝ tion■ OrderedCollection new. anAray do:〔 :eaCh l purposeCollection add:cach]. purposeCollection removeFirst. purposcPoint:=purposcCollection removeFirst. slmulation senば atrix:purposePoint!
name:aName sex:aSymbol age:anhteger purposeCollection:anArray remenbrantSlabs:anAssmble appearSlab:aSlab "Written by HiЮ ,28 January 19940
Counter:=Counter+1. aName isNll ifrruc:Inarne:=Counter prmtString]
ifFal":bame=aNam可 sex:=aSymbol.
.
age:=価
teger.
purposeCo1loction:=OrderedCollection new. anArray do:[℃ aCh l purposeCollection add:each]. anAssemble isNil
ifrme:[remenbrantSlabs:=Set ncw] ifFalse:[rcmenbrantSlabs:=simulation allSlabs].
speed:=self spccdOfSex:sex andAge:age. curentSlab:=aSlab!
purposeCon∝ tiOn:anArray appearSlab:aSlab "W五 tten by Hiro,28 January 1994" Counter:〓 Counter+1.
name:=Counter printString. sex:=nil. age:=nil.
purposeCollection:=OrdercdCollection new. anAlTay do:[:eaCh l purposcConectiOn add:cach]. remenbrantSlabs i=Set new.
speed:=ser speedOfSex:sex andAge:age. currentSlab:=aSlab! purposeColl∝ tion:anArray remenbrantSlabs:anAssemble appearSlab:aSlab ‖
Written by Hiro,28 January 19940
Counter:=Counter+1. narne:=Counter printString. sex:=nil. age:=nil,
purposeCollcction:=OrderedCollection new. anAray do:[:caCh l purPoseC011ection add:cach]. anAssemble isNil
ifrruc:[remenbrantSlabs:=Set new] ifFalsα [remenbrantSlabs:〓 simulation allSlabs].
speed:=sdf speedOfSex:sex andAge:age. currentSlab:=aSlab!
removeHuntanFrom:aSlab ‖ス ラ ブか ら自 身 を離 脱 させ る。 "
"W五 tten by Hiro,24 January 1994'1 aSlab hman remove:self!! !Human memodsFor:'data base'! walkingSpeed “ 平 均 歩 行 速 度 の デ ー タ。 "
"W五 tten by Kishino,10 February 1994: ''Modirled by Hiro,12 Febmary 1994"
WalkingSpeed:=DictionaFy neW. WalkingSpeed at:手 餞nale put:(#(50.8650.7145.1232.7534.2535.2231.435.1936.4736。 36 38.5641.342.8247.0249.4555,01)cOll∝ t:[:eaCh l Cach/25])。 wandngSpeed at:#female put:(#(50.8650.7145.1232.7534.2535.2231.435.1936.4736.36 38.5641.342.8247.0249.4555.01)cOllect:[:eaCh l Cach/25])!! l,_______ぃ
1=! …
…
…
…… …
…
…
…
…
…
…
…
Hman class instanceVariaЫ
eNames:''!
lHuman class methodsFor:'class initialization'
!
initialize
"Written by Hiro,24 Janu町 1994"
Counter:=0.
Rand:=Random new!! !Human class medlodsFor:'accessing'! densityAL aSlab "aSlabの 人 口 密 度 を返 す 。 "
"WHtten by Hiro,24 January 19941 AaSlab human size/aSlab areaSize!!
L【
llnan initialize!
SimulationObi∝ t Subclasま #SimulationAnimation lnstanceVaFiableNames:'interval rand'
classVariableNalnes:" poolE》 ictionaFieS:"
Cate80ry:'00AMS― Simulation'!
lSimulationAnimation methodsFor: 'simulation control'! tasks "一 定 時 間 ごとに平 面図 にシ ミュ レー シ ョン状況 の デ ー タを送 り描 き換 え させ る。 "
"WHtten by Hiro,26 January 1994"
[interval > 0] whileTrue: [self addPlan: (fime fromSeconds: simulation time) printString. self holffor: intervall! !
lSimulationAnimation methodsFor:'accessing'
!
randomPointFrom: pointl to: point2 $etback aNumber
"エ リ ア 内 か ら無 作 為 に 一 点 を選 び 返 す 。 "
"WHtten by HiЮ ,26 Januaり 1994" :xl yl x2 y21
xl:=pomtl x+aNumber. yl:=pointl y tt aNumber. x2:=point2 x― aNmber。 y2:=pomt2 y― aNmber.
Ax2-xlネ rand next+xl@o2-yl*rand nexl+yl)!! !SiinulationAnimation inedlodsFor:'disPlaying'!
addComment:messageStrmg "シ ミ ュ レー シ ョ ン用 の 平 面 図 に メ ッセ ー ジ を描 き込 む 。 "
"WHtten by Hiro,26 Janua町 1994“ simulation dependents do: :eaCh 〔
l
cach elementsForSimulation add:((praWingText newi messageString)
offset O@0). cach changed:Time now]!
addHumanAt:aSlab ‖シ ミュ レー ョン シ 用 の 平 面 図 に人 の作 画 デ ー タ を代 入 す る。 " "WHtten by Hiro,26 Janu暉
1994''
l unittopLft bottomRight point colorl
unit:=hm. topLeft:=aSlab topLeftBy:umt.
bottomRight:=aSlab bottomRightBy:umt. aSlab hman do: [:aPersOn!
polnt:=ser randomPointFrom:lopLeft to:bottomRight setback:200.
color:=ColorValue blue. simulation dependents do:[:Cach l each elementsForSimulation add:((((Arc radius 250
center:poino scaleBy:each scale) pttntColor:colorD illColor:colorD]]!
addPlan:rnessageString
“ 平 面 図 に シ ミュ レー シ ョ ン状 況 の デ ー タ を送 り描 き換 え させ る。 " "Written by Hiro,26 January 1994" ser generate. simulation allSlabs do: [Slab l
ser addHumanAL slab].
self addCo― ent:messageString!! !SimulationAnimation methodsFor:'private'! setVariable:s∝ onds ・ Written by Hiro,26 January 1994" interval:=seconds.
rand:=Random new!! !SimulationAnimation inethodsFor:'generate'l generate "平 面図のelementsForSimulationを 初期化す る。"
"WHtten by Hiro,25 January 1994" sinlulation dependents do:[:each!each elementsForSimulation:OrderedCollection new]!
0可 eCt
Subclasま
#WomationParameter
instanceVariaЫ
eName鋭 'architectura10biectnalne function'
classVariablcNalnes:" poolDictionaries:"
category:'00AMS― Simulation'!
!LfomationParameter memOdsFor:'accessing'! functlon
"Written by Hiro,4 Febru町 /1994" ハ硫
tion!
narne
"WHtten by Hiro,4 February 1994"
Aname!! !WomationParameter medlodsFor:'pHnting':
pmtAppearOn:aStream缶
c●
odma mch
"Written by Hiro,4Fch暉 l data l
data:=function at:each. aStream nextPutAll:'
infomation appearlnterval:'. (data at:幼
printOn:aStream.
1994“
aStream nextPutAll:' humanData:#('。 cata at 3) do:
[:humanDatal aStream nextPutAll:'
hmanData prlntOn:aStrealn]. aStream nextputAll:')'!
printOn:aStream WFitten by IIiro,28 Janua7 1994" “ l data l
name isNil ifrruc:〔 nil
printOn:aSteam]
ifFalse:
[name isEmpty ifrrue:[astream nextPutAH:'no infomation ,]
ifFalse:[name dO: [:eaCh l
cach printOn:aStrealn.
data:=function at:each. (data at: 1)
=#appear ifrme:[self pHntAppearOn:aStream functionName:each]. (data at:1)
=#qucuc ifrrue:[SelfprintQuCueon:aStream functionNarne:each]. (data a● 1)
=#wait ifrrue:[ser p五 ntwaitOn:aStream hncdc耐 ゞame:each]. aStream nextPutAll:' ']].
aStream nextPutAll:' ― ―medlod― ―
名前 の入力 infomation name:''narne" 人 の発 生
infomation appearhterval:0.0 hunl田」)ata:#( #Cnil nil nil#("name")ni1 0.3) #Cnil nil nil#(''name''''name'')ni1 0.7))
待 ち行 列 infomation naIIne:''name''
keepingTime:#(平 均 標準偏差 resourceAmount:0 滞在
)
infomation
name:''name" wJtingTime:#(平 均 標準偏差 )
機能の削除 価 ormatlon
removeName:''name'"]!
pnntQucucon:aStream hnctiodName:each "WHtten by Hiro,4 February 1994" l data:
data:=■ lnction at:each. aStream nextPutAll:'
infomatlon natne:'.
CaCh pFintOn aStream. aStream nextPutAll:'
keepingTime:'. `
(data at:幼
PnntOn:aStream. aStream nextPutAH:' resourceAmount:'. (data at:3)
printOn:aStream!
pmtWaitOn:aStream hnctionNallne:each "W五 tten by Hiro,28 January 19941' l data l
data:=hnction at:each. aStream nextPutAll:'
infomatlon name:'. cach prlntOn:aStrealn. aStream nex」 PutAll:'
waitingTime:'. ata at:υ
“
printOn:aStream!!
!Lfoma■ onPararneter memodsFor:'pFiVate'! appearhterval:aNmber humanData:anAray "Written by Hiro,4 Februav 1994" 血
tion at:'appear'put:(Array
with:#appear
with:aNmber with:anArayD.
いame
includes:'appear')
ifFalse:
[name add: 'appear'. architecturalObject changed: Time nowl
!
name: aStrings
"Written by Hiro,4 February 1994" function au astrings put: (Array with: #nore). (name includes: aStrings)
ifFalse: [name add: aStrings. architecturalObject changed: Time now
l! name: aStrings keepingTime: anArray resourceAmount: anlnteger "Written by Hiro, 4 February 1994"
function ar aStrings put: (Array with: #queue with: anAray with: anlnteger). (name includes: aStrings)
ifFalse: [name add: aStrings. architecturalObject changed: Time nowl
!
name: aStrings waitingTime: anArray
"Written by Hiro,4 Feb'ruary 1994" function au aStrings put: (Array with: #wait with: anArray). (name includes: aStrings)
ilFalse: [name add: aStrings. architecturalObject changed: Time nowl
!
removeName: aSuings
"Written by Hiro, 28 January 1994" InewFunction
I
(name includes: aSrings)
ifTrue: [name remove: aStrings.
newFunction := Dictionary new. name do: [:each I newFunction at: each put: (function ac each)]. function := newFunction. architecturalObject changed: Time nowl ifFalse: [^DialogView warn: aStrings , setVariable: anArchitecnralObject
'ifname/)
4tl5l, t ri/",,. ']!
"WFitten by Hiro,28 January 1994" architecmra10bi∝ t=anArchitectura10bi∝
t・
name:=Set new. hnction:=Dictionary new!! ,,________―
― ―― ―― ―― ―― ―― ―― ―― ―― ―― ―― ―― ―― ―-1l
l
■fomatio五 Parameter class instanceVariaЫ cNttles:"!
!WomationParameter class methodsFor:'instance creation'! new 'lWritten by Hiro,28 January 1994"
Aser ttor:'Please use"new:anArchit∝ tura10噺 ∝ t"'・ new:anArchitectura10bieCt "Written by HiЮ ,28 January 1994"
Asuper new setVariable anんchtectura10可 ∝口
!
!