U0604 早稲田大学理工学部建築学科卒業論文 指導教授 渡辺仁史
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究 A Study on Congestion Easing of Exhibition Space by Optimizing Route Navigation that Use Genetic Algorithm
金子 友晶
Department of Architecture,School of Science and Engineering, Waseda Univer-
はじめに
はじめに 今の時代の社会や技術にあった建築のドラスティックな 変化を期待している。 どんな変化だと問われてもその問いに答えることは残念 ながらかなわない。しかし本研究がその変化へわずかでも 繋がっていることを願っている。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
ii
目次
目次 はじめに 目次 第 1 章 序論 2 1-1 研究目的 3 1-2 研究背景 4 1-3 研究概要 5 1-4 用語の定義 第 2 章 システム概要 7 2-1 システムの利用状況の想定 9 2-2 システムフロー 第 3 章 最適化手法 11 3-1 最適化手法の選択 12 3-2 遺伝的アルゴリズムの概要 14 3-3 遺伝的アルゴリズムのフロー 3-4 本研究での遺伝的アルゴリズム 15 3-4-1 コーディングとでコーディング 17 3-4-2 交叉 18 3-4-3 突然変異 19 3-4-4 目的関数(混雑) 22 3-4-5 目的関数(嗜好性) 23 3-4-6 個体選択戦略 第 4 章 実験 26 4-1 実験目的 27 4-2 実験用システムのフロー 28 4-3 実験用プログラム 29 4-4 実験方法 第 5 章 分析結果 41 5-1 システム使用時と非使用時の比較 45 5-2 システムの利用度の変化による効果の比較 50 5-3 fav.exe と jam.exe の効果の比較 第 6 章 考察・展望 55 6-1 考察 57 6-2 展望 参考文献・参考資料 おわりに 資料編
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
2
第 1 章 序論
1
序論
1-1 研究目的 空間内の人の動きをリアルタイムでとらえ、その情報を もとに経路探索プログラムを用い、各閲覧者に合った経路 へ誘導し空間内での混雑を解消する。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
4
1-2 研究背景
序論
情報技術の発達により携帯電話、タグ、センサーなど の情報収集伝達技術が身近なものになってきた。RFID や センサーなどの常時位置情報を取得可能な技術を使用すれ ば、リアルタイムにその状況にあわせたサービスを提供可 能になる。また、携帯やパソコンのインターネットの履歴、 電子マネーをはじめとする非接触型 IC カードなどに残さ れる買い物や移動の履歴は個人の嗜好の履歴ともいえる。 現代ではこうしたデータが有意識、無意識のうちに収集さ れ各個人にユニークなサービスの提供が可能となってきて いる。例えばインターネット上では各個人にあわせた広告 表示や検索結果を提示してくれる。 これらの技術は各個人それぞれにユニークな目的をも ち、刻一刻と状況が変化し続ける展示空間内で効果的な活 用が可能であると考えられる。 例えば全国から人の集まるようなコンベンションセン ターなどでのイベントでは広さと混雑で自分の思うように 展示が回れないことがしばしばおきている。このような空 間全体の動きのとらえきれないような状況では各個人が見 たいと思う展示と見ることと、空間全体の混雑を解消する ことの利害が相反してしまう場合があり、結果閲覧者全体 が不利益被ってしまう。各個人の望む閲覧順路を満足させ ながら、空間全体の混雑を解消することが望まれている。 また現代の美術館はこれまでのような巡回型経路だけで はなく、散策型経路を持つものもあらわれている。そうし た空間では閲覧者それぞれ異なる経路を選択できる。そこ で閲覧者の嗜好性にあわせた経路を提案するような新しい 展示空間を提案することができる。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
5
序論
1-3 研究概要
システム利用状況の設定
システムの設計
GAプログラムの設計
目的関数の設定 (モデル化)
実験
システムの効果の分析
課題問・題点の発見
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
6
1-4 用語の定義
序論
嗜好性 各閲覧者個人のもつ傾向または、展示者側が閲覧者に持た せたい傾向。
目的関数 遺伝的アルゴリズムにおいて値を小さく(大きく)するこ とを目的とされる関数。この関数の値が小さい(大きい) と適合度が高く子孫をのこしやすくなる。本論では目的関 数は値が小さいほど適合度が高い。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
7
第 2 章 システム概要
6
システム概要
システムの利用状況の想定 ■コンベンションセンター コンベンションセンターのような広い会場内では、閲覧 者個人は空間全体の人の動きを認知しづらい。視界で確認 することのできない離れた場所で混雑が起きていても認知 することができずに向かってしまいさらなる混雑を招いて しまう。(図 2-2-1)システムは空間全体の混雑状況を把 握し、閲覧順路を分散させ時間をずらすことで混雑を回避 しながら閲覧者を誘導していく。ここでシステムは近傍の 閲覧順路だけでなく、これから回るであろうすべての展示 物の閲覧順路を探索することで将来的に発生する混雑も回 避することを目指す。 また閲覧者の滞在予定時間を知ることができれば、滞在 時間のない閲覧者は多少混雑する場所でも嗜好性にあった 展示を先に見せ、滞在時間に余裕のある閲覧者は混雑を回 避させながら誘導することができ、双方にメリットが生ま れる。(図 2-2-2)
離れた場所での混雑を認知で きずに移動してしまう。
図 2-2-1
比較的時間の無い閲覧者
離比較的時間の有る閲覧者
図 2-2-2
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
9
システム概要
■フリーアクセス型美術館 金沢21世紀美術館を代表とする自由な導線を持った美 術館などにおいて、混雑を回避しながら閲覧者の嗜好性を もとにユニークな閲覧順路を提示する。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
10
システム概要
システムフロー
位置情報取得
閲覧履歴 嗜好性データ
経路探索プログラム 最適化
f1: 混雑 f2: 嗜好性
最適化経路出力
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
11
第 3 章 最適化手法
10
最適化手法
3-1 最適化手法の選択 本論のシステムは経路の最適化を行うシステムである。 経路の最適化の有名問題として巡回セールスマン問題
※巡回セールスマン問題 一人のセールスマンが与えられた都市をただ一
(※)があげられる。本論のシステムにおける “ 利用者に
回のみ訪問して出発した都市に戻ってくる経路を
最適な経路の探索 ” は巡回セールスマン問題としてとらえ
最短にするという問題。
ることができる。 巡回セールスマン問題は NP 完全いうクラスの問題の代 表である。つまり多項式のオーダーでは解けないクラスの 問題である。巡回セールスマン問題においては都市の数が 増えると最短経路を発見するための処理時間が急速に増加 してきて、実用的な時間内では解けなくなってしまう性質 を有している。 巡回セールスマン問題を代表とする NP 完全のクラスの 問題の近似最適解を見つけ出す手法として遺伝的アルゴリ ズムの有効性が近年実証されている。 本論のシステムでは最適化手法にこの遺伝的アルゴリズ ムを採用する。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
13
3-2 遺伝的アルゴリズムの概要
最適化手法
3-2-1 遺伝的アルゴリズムの概要 遺伝的アルゴリズムは、進化論的計算手法に則ったアル ゴリズムである。以下では簡単のため進化論的計算手法を 遺伝的アルゴリズムとして説明する。 遺伝子
遺伝子
遺伝的アルゴリズムは生物の進化の手法を模したアルゴ リズムで、生物の進化の手法とは、ここではダーウィンの 進化論的手法のことである。つまり、与えられた自然環境 の中で、個体集団の各個体同士が交配と突然変異を繰り返 しながら、その自然環境によく適応する個体ほど生き残り、 子孫を増やすことができるという進化の手法である。キリ ンを例に挙げると、首の長い個体は高い木になった葉を食
GTYPE
GTYPE
べる事ができ子孫を残す事ができ、首の短い個体は高い木 になった葉を食べる事ができず地面に餌の少ないサバンナ
発現
で生きていけずに子孫をのこすことがない。こうした個体 集団が何世代にもわたり交配を繰り返すことで、キリンと いう個体集団は地面に餌の少ない環境に適応して首を長く するという進化を遂げる。(図 3-2-1) 遺伝的アルゴリズムにおいては上記の個体は GTYPE と PTYPE の 2 層構造からなる。GTYPE は遺伝子型のアナロ
PTYPE
PTYPE
適合度 環境に適合度の高い PTYPE は 子 孫 を 残 す 事 ができる。
ジーで、低レベルの局所規則の集合体であり、遺伝的オペ レータの操作対象となる。PTYPE は表現型(発現型)で あり、GTYPE の環境内での発生にともなう大域的な行動 や構造の発現を表す。環境に応じて PTYPE から適合度 (fitness valu)が決まり、そのため適合選択は PTYPE に 依存する。 遺伝的アルゴリズムでは複数の個体が集団を構成する。 各個体は各々 GTYPE として遺伝子コードを有し、それが 発現した PTYPE に応じて適合度が決まっている。これら
淘汰される。
子孫を残す。
図 3-2-1
の個体は生殖活動を行い、次の世代の子孫を作り出す。生 殖に際しては適合度の良いものほど子孫を残しやすいよう に、そして悪いものほど死滅しやすいようにする。生殖の 際には、GTYPE に対して交叉、突然変異などの遺伝的オ ペレータ(図 3-2-3)が適用され、次の世代の GTYPE を 生成する。各オペレータは遺伝子組み換え、突然変異など のアナロジーである。これらのオペレータの適用頻度、適 用部位は一般にランダムに決定される。この生殖によって、
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
14
最適化手法
の各個体の表現型が少しずつ変わっていくとともに、適合 F E B D A E
C B F C A D
度は前の世代よりも良いことが期待される。その結果集団 全体としてみたときの適合度が上がっているのであろう。 同様にして、子供の世代が親となって次の世代の子孫を生
交叉
む。これを繰り返していくと世代が進むにつれしだい集団 全体が良くなっていく、というのが遺伝的アルゴリズムの 基本的な仕組みである。
F E B C A D
C B F D A E
C B F C A D
突然変異
C B E C A D 図 3-2-3 遺伝的オペレーター
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
15
最適化手法
3-3 遺伝的アルゴリズムのフロー
ランダムに初期世代を生成する。
個体集団内の各個体の適合度を計算する。
適合度に応じて次の世代の親となる個体を選択する。
選択
選択された個体に遺伝的オペレータを適用させ、次の
生殖
世代の個体を生み出す。
生み出された個体を、遺伝子プールに貯め、次世代の
遺伝子プール
個体集団形成する。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
16
3-4 本研究での遺伝的アルゴリズム
最適化手法
3-4-1 コーディングとデコーディング C D
経路探索における P-TYPE は閲覧経路である。 本論のシステムでは特に複数人の経路を扱うので、各閲
B
覧者の経路の集合をP -TYPE として扱う。(図 3-4-1)
A
A
D
C
B
G-TYPE は、閲覧経路をそのまま遺伝子として扱うと遺 伝的オペレーションを行う過程で、同じ場所を二度回るな どの不適切な遺伝子ができてしまう。(図 3-4-2)こうし
C D B
た遺伝子は致死遺伝子と呼ばれる。
A
B
D
C
A
C B F D A E
C B F D F A
交叉 C D B
D
B
B C E D A E
図 3-4-2 致死遺伝子の発生
A
A
B C E D F A
C
・ ・ ・
遺伝的オペレーションによりこうした致死遺伝子の創出 を回避するためにコーディングに工夫を施す必要がある。 今回は Grefentette の方法を用いる。 ま ず コ ー デ ィ ン グ す る 閲 覧 経 路 を 順 列P {3,1,5,4,2}とする。これに対してコーディングの
A C D B B C D A A
B D C ・ ・
基準となる順列 C{1,2,3,4,5}を用意し、コーディ ング後の順列をG{ }とする。 P の順列の第一要素をみてその数が基準順列Cの第何要 素に入っているかをみる。この場合 P の第一要素は ”3” で 基準の配列の第 3 番目に入っている。この 3 という数字 をGに加える。つまりG{3}となる。また C からその
P-TYPE
要素をとりのぞき C{1,2,4,5}となる。
図 3-4-1 P-TYPE
次に P{3,1,5,4,2}の順列の第二要素をみてそ の数が基準の順列Cの第何要素に入っているかをみる。P の第二要素は ”1” で基準の配列の第 1 番目に入っているの で G に ”1” を加え G{3,1}とし、C から ”1” をとりの ぞき C{2,4,5}とする。 以 下 同 様 に 繰 り 返 す と、G{ 3,1,3,2,1} と な る。 こ の 結 果 を 親 1 の 遺 伝 子 型 と す る。 順 列 P
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
17
最適化手法
{1,4,3,5,2}も同様の処理を行い G{1,3,2,2,1} を親2の遺伝子型とする。この二つの遺伝子の間で交叉を 行う。(図 3-4-3)
親1
3 1 3 2 1
子1
3 1 2 2 1
子2
1 3 3 2 1
交叉 親2
1 3 2 2 1
図 3-4-3 コーディング後の交叉
こうして子1と子2を構成する。この表現は G-TYPE(遺 伝子型)なので、P-TYPE である閲覧経路にデコードする 必要がある。デコーディングは以下の方法で行う。 まず子1の遺伝子型を順列 G{3,1,2,2,1}としデ コーディング後の順列を P{ }とする。基準の順列はコー ディング時と同様の C{1,2,3,4,5}である。 G{ 3,1,2,2,1} の 第 一 要 素 は ” 3 ” な の で C {1,2,3,4,5}の第三要素をとりだして P{3}、C {1,2,4,5}とする。 次 に G{ 3,1,2,2,1} の 第 二 要 素 は ” 1” な の で C{1,2,4,5}の第一要素をとりだして P{3,1}、C {2,4,5}とする。 以下同様に繰り返すと子1{3,1,4,5,2}、子2 {1,4,5,3,2}となる。 以上のようにこのコーディング方法を用いると同じ場所 を二度回るような致死遺伝子が発生しない
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
18
最適化手法
3-4-2 交叉 遺伝子交叉は閲覧者ごとの経路を P-TYPE とする遺伝子 ごとに行う。交叉点は用意されたテンプレートに従い決定 される。ところで、各閲覧者ごとの遺伝子長は閲覧が進む につれ短くなるので、交叉点も各閲覧者の閲覧進度ごとに 変化する必要がある。そこで交叉用のテンプレートは遺伝 子長毎に用意をしておく。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
19
最適化手法
3-4-3 突然変異 突然変異は G-TYPE である遺伝子の状態ではなく、閲覧 順路を表す P-TYPE の状態で行う。 順列の第一要素は現在位置なので、それ以外の任意の二 カ所を交換することとする。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
20
最適化手法
3-4-4 目的関数(混雑) 本システムでは混雑回避を目指しているので目的関数の 一つで混雑度を計算する必要がある。 もっとも単純なモデルとして考えられるのが単位時間あ たりに同じブースにいる人数を積算していくモデルであ る。(図 3-4-4)
1 T ~ T 0
2 T ~ T 1
3人
S
1人
f = S ( T ≦ T < T ) j
T0
T1
0
2
T2
図 3-4-4 混雑モデル(その 1)
しかしこれでは、A、B、C のブースにそれぞれ 1 人、2 人、3 人という状況と 1 人、1 人、4 人という状況の目的 関数の値にあまり大きな違いが現れない。(図 3-4-5)
A
B
C
⊿f = 14 j
A
B
C
⊿f = 18 j
図 3-4-5 目的関数の値の比較
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
21
最適化手法
目的関数の値の差が小さいと個体選択のさいに選ばれる 確立に差が出づらくなる事を意味する。図 3-3-4-2 の二つ の状況の個体の選択確立にあまり差が出ない。しかし実際 には人が混雑を回避する際の判断は空間に対するあるしき い値を超えるまではあまり混雑に差を感じずここではブー スに 2 人と 3 人ではあまり選択に影響を与えない。逆に、 空間内の人数がしきい値を超えると急激に混雑を感じでき るだけその空間を選択しないようになる。 適合度計算においてもしきい値を超えない限り目的関数 は値を 0 とし、しきい値を超える混雑には大きな値をと らせる事でしきい値を超える混雑状態を持つ個体の選択確 立を大きく下げる事ができ、混雑を回避する経路を探索し やすくなる。(図 3-4-6)
f = 0 j
f = 0 j
しきい値を超えると混雑を回避 するために空間を選択しない。
f = 0 j
f = 20 j
図 3-4-6 混雑モデル(その 2)
また展示者側は人が多くなりすぎて展示の効率が悪く なってしまうまでは出来る限り人を集めたいと考えてい る。そこで、混雑で展示の効率が下がってしまう点をしき い値とすれば、しきい値未満での人の偏りは許容されるの で展示者側も最大限の展示効果を上げることが可能にな る。 以上のモデルから混雑の目的関数は
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
22
最適化手法
I
T
i=0
t=0
f = ΣΣ j
it
j =0 ( a < k ) it
it
j = ba ( a ≧ k ) it
it
it
k : しきい値 a : 閲覧者を内包する単位空間での人口密度 b a : 混雑評価点 it
it
とする。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
23
最適化手法
3-4-5 適合度計算(嗜好性) 閲覧の順番には各閲覧者個人の嗜好やスケジュールに よって優先して見たい展示や、展示者側の意図などにより エージェントごと、またはイベントごとに求められる経路 を優先的に選ぶための目的関数が必要とされる。例えば各 エージェントが必ず見たい展示物を順路の前半にもつ個体 に高い適合度を与える。(図 3-4-7) B は見たいなぁ。
適合度 高
D
B
A
C
適合度 低
A
C
D
B
図 3-4-7 嗜好性モデル
このときの目的関数は以下のように表される。 I
f = Σ l i=0
in
l ≦ l ≦ l ≦ l ≦ l ≦・・・・ i1
i2
i3
i4
i5
n : 閲覧順序
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
24
最適化手法
3-4-6 個体選択戦略 本論のシステムではパレント最適解をもとめ、エリート 戦略とランキング戦略をとる。 ■パレート最適解 まずは各個体の適合度を図 3-4-8 のようにプロットす る。 この中で二軸ともに自分より小さな適合度を持つ個体が 一つもない個体をパレート最適解と呼ぶ。(グラフは原点 に近いほど適合度が高い) パレート最適解はどちらかの目的関数の値を改良しよう とすると、もう一方の目的関数の値が悪くなってしまう状 態の個体の集合となる。 ■ランキング戦略 図 3-4-8 のように自分よりも、二つの目的関数のどちら の値も優越している個体の数を数えパレートランキングを 作る。 求められたパレートランキングをどちらかの目的関数に 注目して同ランキング内でソートする。( 図 3-4-9 ) ランキングの順位に応じて親として選択される確率が決 定する。
6
3 1
f 2
2 1 1
f 1
図 3-4-8 パレートランキング
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
25
最適化手法
6 1
f 2
2 3
f 1
図 3-4-9 パレートランキング内でのf 1 に注目してソート
■エリート戦略 ランキングの上位を自動的に次の世代に残し、さらに上 位同士で優先的に交叉を行う。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
26
第 4 章 実験
25
実験
4-1 実験目的 仮想の展示空間でシステムを使い被験者誘導し誘導シス テムの効果を計る。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
28
4-2 実験用プログラム
実験
実験用の経路探索プログラムでは、混雑回避と嗜好性、 二つの目的関数を最適化する。 混雑の目的関数(=f ₁)のしきい値 k = 4、b₄ = 10、 b₅ = 50、b₆ = 100、b₇ = 200 とした。 嗜好性の目的関数(=f ₂)はこちらであらかじめ展示 作品の中から 2 作品を指定しその作品を閲覧順路の前半 にもつ個体の値を低くする。l₁ = 0.1、l₂ = 0.166667、l₃ = 0.333333、l₄ = 1、l₅ = 1 とした。 実験では混雑回避と嗜好性の二つの目的関数をバランス よく最適化するプログラム(= fav.exe)と混雑回避の目 的関数を重点的に最適化する(=jam.exe)の二つのプログ ラムをした。 ■ fav.exe このプログラムではf ₁ と嗜好性の目的関数f ₂ をバラ ンスよく最適化するため。偶数世代では個体をf ₁ の値に したがってランキングを作り、奇数世代ではf ₂ の値にし たがってランキングを作成した。このランキングにした がって個体選択を行った。 ■ jam.exe このプログラムでは混雑回避のための目的関数f ₁ を重 点的に最適化するために全世代でf ₁ の値にしたがってラ ンキングを作り、個体選択を行った。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
29
4-3 実験用システムのフロー
実験
00 01 03 id.txt
位置情報入力
03 00
最適化経路出力 00 01
最適化
02
fav.exe
work.txt
or
02 jam.exe
optimize.txt
30 秒毎に実行
00 01 02 time.txt
サーバー
最適化経路出力
位置情報入力
2 番ブースに進んでください。
データを取得しました。
webブラウザ
ブース入場時
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
FelicaLauncher
webブラウザ
FelicaLauncher
ブース退場時
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
30
4-4 実験方法
実験
■実験場所 早稲田大学理工学部 55号館 S 棟 2階 第三会議室 ■実験日時 10月28日(土)10:00~14:00 ■被験者 大学生 12 名 2 グループ 計 24 名 ■実験機材 非接触 IC カード 24 枚 カードリーダー(Pasoli)6 台 ノートパソコン 6 台 デスクトップパソコン ( サーバー用 ) 1 台 無線ランアクセスポイント 1 台 バンティアンパネル 展示用漫画パネル ■展示物 仮想の展示場で一定時間被験者を滞在させるために、 展示物は文字量を調整した 16 ページ~ 24 ページのパ ネル化した 6 作品の漫画とした。(図 4-4-1) 作品のリストはp 36 ~ p39 に記載 指定作品 展示 a : work_0 , work_5 展示 b : work_1 , work_5 展示 c : work_3 , work_4 図 4-4-1 パネル化した漫画
展示 d : work_1 , work_2 ■展示会場 フリーアクセスの中央ホール型展示空間を想定し、 バンティアンパネルで 2100㎜× 2100㎜の展示ブース を 6 ヶ所配置した。(p35 図 4-4-4) 各ブースの前の机にノートパソコンとカードリーダーを 設置。(図 4-4-2)
図 4-4-2 ブース前のノートパソコン とカードリーダー
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
■閲覧時間 15 分
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
31
実験
■探索プログラム実行インターバル 30 秒 ■実験方法 被験者に展示物を閲覧させその動きを非接触 IC カー ドとカードリーダーを使い記録していく。被験者にはそ れぞれ ID のふられた “ 入 ”“ 退 ” 二枚のカードを持たせる。 各ブースに入る直前に “ 入 ” のカードをカードリーダー にかざし入場記録をとる。(図 4-4-3)次のブースへ移 動する 直前 に “ 退 ” のカードをかざすとシステムか 図 4-4-3 入場前にカードをかざす。
ら次へ行くブースが指示される。 被験者には 15 分の間にできるだけ全ての展示物を閲 覧してもらい、一度入ったブースには二度入らないよう に回ってもらう。なお被験者はp 36 ~ p39 の展示物リ ストを見ながら閲覧する。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
32
実験
実験 1( 自由閲覧実験 ) ■ 実験内容 被験者に自由に閲覧してもらう。 但し閲覧順路の記録をとるためにブースに入る直 に ” 入 ” のカードをカードリーダーにかざしてもらう。 ■ 展示物 グループ A:a グループ B:d ■ プログラム なし
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
33
実験
実験 2( 絶対追従実験 ) ■ 実験内容 被験者にシステムに提示される閲覧順路に必ず従って 閲覧してもらう。 ブースに入る直前には ” 入 ” のカードをカードリー ダーにかざしてもらい、次のブースへ移る直前には ” 退 ” のカードをカードリーダーにかざしてブラウザに表示さ れる次の展示ブース番号を読んでもらう。 ■ 展示物 グループ A:b グループ B:c ■ プログラム fav.exe
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
34
実験
実験 3( 任意追従実験 ) ■ 実験内容 被験者にシステムに提示される閲覧順路に任意従って 閲覧してもらう。 ブースに入る直前には ” 入 ” のカードをカードリー ダーにかざしてもらう。次のブースへ移る直前には ” 退 ” のカードをカードリーダーにかざしてブラウザに表示さ れる次の展示ブース番号を読んでもらい指示に従っても 従わなくてもかまわない。またはじめから指示を見ずに 移動してもかまわない。 ■ 展示物 グループ A:c グループ B:b ■ プログラム fav.exe
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
35
実験
実験 4( 混雑緩和重視実験) ■ 実験内容 被験者にシステムに提示される閲覧順路に必ず従って 閲覧してもらう。 ブースに入る直前には ” 入 ” のカードをカードリー ダーにかざしてもらい、次のブースへ移る直前には ” 退 ” のカードをカードリーダーにかざしてブラウザに表示さ れる次の展示ブース番号を読んでもらう。 ■ 展示物 グループ A:d グループ B:a ■ プログラム jam.exe
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
36
実験
カードリーダー カードリーダー
カードリーダー
ノートパソコン
work_1
ノートパソコン
カードリーダー
カードリーダー
ノートパソコン
work_2
ノートパソコン
work_5
ノートパソコン
work_4
カードリーダー
work_3
ノートパソコン
展示会場
work_0
サーバー
図 4-4-4 展示会場平面図 1:100
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
37
実験
展示物 a
語は、新宿駅のプラットホームから 54 人の女子高生が手を繋いで飛び込み、自殺するところから始まる。その後、事件は全国に飛び火す るが、その原因を辿るとインターネット上にあるらしい。
謎の格闘技「セクシーコマンドー」の使い手である主人公の花中島マサルを中心に展開されるシュールなギャグ漫画。フーミン、 マチャ彦、 キャシャリン、モエモエ、アフロ、校長、謎の生物メソなど奇妙でクセのあるメンバーが登場する。独特の視点からの支離滅裂なギャグに ファンも多い。単行本全 7 巻は、累計 700 万部以上が売れたヒット作。この作品がギャグ漫画業界に与えた影響は大きく、以前からナン センス漫画というジャンルはあったものの、この作品以降にシュールな要素を持つギャグ漫画が多く生まれた。
往年の大女優・若草いずみは、若さと美貌をとりもどし、女優ではなく平凡な 1 女性としての幸せな家庭生活を手に入れる目的で、ひそ かに女児を出産し娘に脳移植をする計画をたてる。いずみは、さくらの頭が十分大きくなるまで大事に育てあげ、そのよき母・娘ぶりは、 さくらが書いた作文「わたしのやさしいおかあさん」が文部大臣賞を受賞するほどのものであった。 一見良好な母・娘関係の裏で、いずみの主治医は、家の 2 階で、来るべき脳移植手術にそなえ、動物実験を繰り返していた。さくらは不 気味なものを感じ取ったのか、決して 2 階に行くことはなかった。ある日、さくらが思い切って 2 階に上がってみると、動物実験の痕跡 である大量の死骸と、2 台のベッドを発見。母親の真の意図に気づいて逃げ出そうとするが捕まってしまい、おぞましい脳移植手術は強行 される。
舞台となる水島平は、高知市沿岸部の浦戸地区をモデルにしている。母子家庭の兄弟である一太とニ太と、姉のかの子の生活を描く。母・ 今日子はなかなか帰ってこない。それでも、三兄弟は笑顔で過ごすのであった。 キャッチフレーズ:「シアワセってどこにある?」
エロと下品を身上とし、不条理かつスピード感溢れるギャグで一部マニアから絶大な支持を集める。また、登場人物がよく死ぬ事も作品の 大きな特徴である。 サイレンとものも多く、タッチ的にはヨーロッパ的であるともいえるが、とにかくその「ナンセンス」ぶりはあまりに突出している。
女子高生がメインのショート。かわいらしい絵柄でブラックなストーリーをさらりと描く。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
38
実験
展示物 b
ある日、空から多数の正体不明の生物が飛来してきた。その生物は人間の脳に寄生し、全身を乗っ取って操作し、頭部を自由自在に変質さ せて人間を襲い、本能的に捕食するという驚くべき性質を持っていた。見た目は人間そのものであった彼ら「パラサイト」は、人間社会に 徐々に紛れ込んでいった。 世界中でミンチ殺人事件が頻発し、メディアが注目し始めた頃、どこにでもいるようなごく平凡な高校生・泉新一は、パラサイトの襲撃を 受け、間一髪で脳の乗っ取りは免れるものの、右腕に寄生されてしまう。彼は文字通りの「右腕」となったパラサイト「ミギー」と共に、 事件の真実を知る唯一の人間として責任を感じ、パラサイトを倒そうと考える。しかしパラサイトであり、新一と自らの安全を確保する必 要があるミギーは、どちらにも組する気はなかった。
両親と死別し、幼い弟妹の世話をする高校三年生、海野幸はある日、事業に失敗した兄の借金2億5千万円を背負う事になってしまう。そ こで高校に退学届けを提出しプロテニスプレーヤーになることを決意するが、日本プロテニス界の有力者、鳳財閥会長の鳳唄子にテニス界 からの永久追放を通告されてしまう。
ある日、空から多数の正体不明の生物が飛来してきた。その生物は人間の脳に寄生し、全身を乗っ取って操作し、頭部を自由自在に変氷の 中で眠っていたデーモン(悪魔)が、地球を人類から奪い返そうと目覚めつつある。不動明は親友の飛鳥了からそう知らされ、人類を守る ためにデーモンと合体して悪魔の力を手に入れようとする。人間がデーモンと合体しても人間の心を持ち続けるための条件(合体時に理性 を失った状態でいる、デーモンの意識を抑える強い意思を持つ、善良で純粋かつ正義を愛する若者である)を満たした明は、デーモンの勇 者・アモンと合体。人間の心と悪魔の力を持つ悪魔人間・デビルマンとなる。 デビルマンを倒すため次々にデーモンの刺客が迫り、ついにはデーモンの人類に対する総攻撃が行われる。人類は伝説上の存在と思ってい たデーモンからの攻撃に戸惑うが、近代兵器の力でデーモンに大きな被害を与える。そこで、デーモンは人間との無差別合体を始めた。理 性ある人間との合体はデーモンにとっても死を意味し、一人一殺のこの作戦は数に劣るデーモン側に不利と思われた。ところが、この作戦 の結果、世界的な権威・雷沼教授が「悪魔の正体は社会に不満を持つ人間」と発言したため、お互い疑心暗鬼になった人類は悪魔狩りの名 の下、中世の魔女狩りのごとくデーモンと疑わしい人物を次々と逮捕・拷問にかけていった。 ある日、空から多数の正体不明の生物が飛来してきた。その生物は人間の脳に寄生し、全身を乗っ取って操作し、頭部を自由自在に変 20 世紀末。ある大予言者の予言通り、地球は滅亡の危機を迎えた。 文明は滅び、国は暴君が支配し、人々は圧政に苦しんでいた。 それから 300 年後の日本。山陽地方の白虎の村に、運命の子供が誕生した。その名は「タタラ」。日本を救う革命家として、白虎の刀を携 え、残りの朱雀・青龍・玄武の刀の継承者を探す旅に出る。
本作は、飛鳥時代を背景に、政治的策謀をめぐらす厩戸皇子に毛人をはじめとする蘇我家の人々や、崇峻天皇・推古天皇らが翻弄される形 で話が進んでいく。 毛人は皇子の並はずれた知性を尊敬し一臣下として接するが、皇子にとって毛人は自分の持つ超能力を共有できる唯一の不可欠な存在で あった。しかし毛人は無意識下でしか超能力を引き出せず、自分の能力を自覚していない。 皇子の毛人への思いはやがて愛へと変わってゆき、毛人も自分が皇子に惹かれていることを感じるが、やがて石上神社の巫女であった布都 姫と出会い、恋に落ちてしまう。 皇子はこれを好まず策謀をめぐらして布都姫を退けようとするが、毛人に気づかれ、いままでの諸事に皇子の策略があったことを知った毛 人の心は皇子から離れる。 紀元前 4 世紀のギリシアやマケドニア王国・アケメネス朝ペルシアを舞台に、古代オリエント世界を描いた作品。マケドニア王国のアレ クサンドロス大王に仕えた書記官、エウメネスの波乱の生涯を描いている。エウメネスはプルタルコスの『英雄伝』(対比列伝)などにも 登場する実在の人物である。主人公はバルバロイ ( 蛮人)の子に生まれながら、ギリシアの都市国家・カルディアの名家の息子として育て られ、父の財産をめぐる陰謀によって一時は奴隷に身を落とすものの、時代の荒波に揉まれながらその才能を開花させていく。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
39
実験
展示物 c
謎の合成麻薬「バナナフィッシュ」。ストリートギャングのボスであるアッシュ・リンクスは、偶然この麻薬のサンプルを手に入れること により、ベトナムで何故兄であるグリフィンが発狂したかを知ることになる。 偶然、ストリートギャングを取材に来た日本人の英二と共に、「バナナフィッシュ」の謎を追ううちに、マフィア、国家をも動かす大きな 野望の渦に巻き込まれてゆく。 アッシュ・リンクス 本作の主人公。ニューヨークの不良少年のボス。優れた容姿と IQ180 以上 (マナーハイムの調査では 210) の頭脳、 超人的な身体能力を持つ。 本名はアスラン・J・カーレンリース。
63 年後の未来は人口増加により、子供を 2 人以上作ったら死刑という法律が作られるほど、人口過密に悩まされていた。 そんな時代に「メ ガプレイボーイ(以下、メガプレ)」と呼ばれる男が 100 人以上の子供を作り、 その DNA が受け継がれていた。 政府は「DNA オペレーター」 葵かりんを過去の時代に派遣し、その男の DNA を書き換えようとした。 しかし、その男である桃生純太は、女にモテず、さえない、おお よそメガプレとはほど遠い人間だった。 かりんは予定通りに仕事を果たしたはずだったが、 DNA を書き換える弾(DCM 弾)を撃ち間違え、 純太はメガプレに覚醒する片鱗を見せ始める。
・・・・今日 航行用動力を OFF にしたわ・・・・・ 通信機もサム(搭載コンピュータ)にたのんで、オーディオの一部にしてしまったし・・・・ 日記に日付を書くのも、もう止めにするわ・・・・ 私の好きなもの・・・・・ 詩集に音楽(これはレコードを捜すのにくろうしたけど・・・・・)バラの種子 人形 絵 ドレス 香水 鏡・・・・・私だけの世界・・・・・・私だけの世界で これからずーっと(本編より)
高校 3 年生の南くんと、突然身長 16cm になってしまったちよみの恋と同棲生活を描いた連作。「あとがき」で内田は、読者と自分の認識 のギャップを “ この作品、自分は「小美人ポルノ」だと思ってたのに、読者からは「これってプラトニックな恋ですよね?」と手紙が来る ” と述べている。
「時計坂」という町にある「一刻館」という名の古いアパートに住む大学生五代裕作と、管理人としてやって来た若い未亡人音無響子を中 心としたラブストーリー。1980 年代のラブコメディー漫画の金字塔として名高い作品である。 人より苦労を背負い込んでしまう世渡り下手な青年・五代と、生来の鈍感さと亡き夫への操ゆえの真面目さを合わせ持つ美人管理人・響子 の織り成す恋愛模様が、常識はずれの面々が住むおんぼろアパート「一刻館」を舞台に、高橋独自のリズミカルでコミカルな展開で小気味 良く描かれている。
川奈里伽子は高校 3 年生。親友の美樹と夜遊びを繰り返す毎日。ある夜、浜辺で海を見つめていると、タラシで有名な藤井朋章がサーフィ ンをしていた。後日、里伽子は藤井に「付き合わない ?」と持ちかけると、藤井も承諾し、2 人は付き合うことに。ところが、しばらく経っ て里伽子の本当の目的に気づいた朋章は里伽子をふる。 ふられた後も朋章のことが気になる里伽子。そこへ、朋章が学校を退学し、沖縄へ行くという噂を聞いた里伽子は、過去に起こったことや 本当の気持ちを告白。そして 2 人の想いは通じ合い、別れのときを惜しむように急速に親しくなっていく。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
40
実験
展示物 d
沖縄育ちの空海は、未だかつて電車に乗ったことがない。母の死から 2 ヵ月後、弁護士の中在家に「母方の祖父が生きていて、財産相続 の件でぜひ北海道まで来てほしい」と伝えられる。 祖父の待つ月館へは、鉄道で行かなければならないとの事。空海が乗るのは、 『20 時 40 分 稚瀬布(ちせっぷ)発 月館(つきだて)行 幻 夜(げんや)号』。駅へ向かう途中、車がスリップして立ち往生しているところへ、 同じく幻夜号に乗るという日置という青年が通りかかり、 駅まで乗せていってもらうことに。 革張りのソファ、カーペット敷きの床、バーやピアノまで完備された豪奢な内装、そして 7 人の乗客。本人たちは否定するが、彼らは皆テツ、 つまり鉄道マニアで、しかも祖父の招待客らしい。そして空海はこの 6 人の中から結婚相手を選ぶことが、財産相続の条件だと思い込む。
「私の名は喪黒福造。人呼んで笑ウせぇるすまんと申します。お代は結構、皆様が幸せになってくれればそれが何よりの報酬なのでござい ます。さぁて、今日のお客様は。ホ~ホホホ」と言う低く不気味な喪黒の声から始まるこのストーリーは、生活が満たされていないと思い 悩んでいる現代人の前に現れる。喪黒は「魔の巣」というバーに出入りする事と、小田急線内に乗車していること以外は一切の私生活が謎 の男で、客に対して「ココロのスキマ♡ お埋めします」と書かれた名刺を差し出し自己紹介。一回だけという約束で束の間の夢をかなえ てあげる。しかし、多くの客はその夢に欲望を惹起されて暴走(喪黒との約束を破る事も含む)、あるいは喪黒にもう一度体験させてくれ るよう懇願するが、それは約束違反として「ドーン !!!!」という呪文とともに奈落の底に落とされてしまう
1986 年、西ドイツ・デュッセルドルフの病院に、頭を撃ち抜かれた重傷の少年が搬送されてくる。天才的な手術の腕を持つ日本人外科医・ テンマが、院長の命令を無視してまでその少年を救う。「死」を生む悪魔と「生」を生む医者が出会ったことで、陰惨で悲惨な物語の歯車 がごとりと廻り始める。 東側の世界では西ドイツ社会を混沌の世界に突き落とすという異常な策謀が進行していた。チェコスロバキア秘密警察のフランツ・ボナパ ルタらは、子供たちを次々に西側諸国へ送る戦闘要員として教育していく。その過程でヨハンという怪物が生まれた。次第にヨハンの心の 中の怪物は大きくなり、周囲の人間を次々に殺害していく。それはまるでボナパルタが描いた絵本『なまえのないかいぶつ』の主人公の怪 物のように、人に取り憑き次々に周囲の人間を呑み込んでいった。
物語上に設定されている常春の島国マリネラ王国を舞台に、その国王パタリロが、側近のタマネギ部隊や、イギリスの諜報機関 MI6(エム・ アイ・シックス)の少佐(スパイ)バンコランやその愛人マライヒ等を巻きこんで起こす騒動を描く。単なるドタバタギャグ漫画では無く、 練りに練ったストーリー展開や、小説並みのミステリーやシリアスプロットの高さ等が長年支持される所以でもある。
「何気ない日常描写」においては、前作よりさらに磨きがかかっている。その優れた日常描写や絵の質の良さのため、癒し系あるいはファ ミリー向けの漫画として、『電撃大王』で連載されている漫画の中で最も幅広い読者層を得ている。また『電撃大王』に掲載される作品と しては珍しく漢字に振り仮名(ルビ)が付けられていることも、 低年齢層を意識した漫画であることを示している。さらに時間軸の設定(後 述)や夏の星空を忠実に描いてあることなど、各所で作者のこだわりが見られ、リアリティを出す試みが為されている。なお、 「この漫画は、 読者によつばを客観的に見て欲しい」と対談で明かしたように、よつばの視点ではなく、よつばを見る視点で描かれている。
コメディタッチで H 大学獣医学部学生の日常を描いたもの。獣医学部というやや特殊な環境の学園生活をリアルになぞりながらも、妙に ドライな人間関係が、独特の細い線画とあいまって不思議な非日常感を醸し出している。 西根公輝(にしね まさき) 本名は「公輝/まさき」だが、友達などからは、漢字を分解して「ハムテル」というあだ名で親しまれている。祖母からは「キミテル」と 呼ばれる。高校生時代には高校の近所にある H 大学獣医学部の敷地を通ると帰宅の近道である事から、しばしば通り抜けに利用していて、 漆原教授にチョビを押し付けられる羽目になった。チョビたちを飼っていることもあり、動物の治療費も浮くからと、手近な H 大学獣医 学部病院学講座へ進んだ。平均に比べて頭はいいが、何事にも動じない冷静な性格から、周囲より大人物だと思われている。ただし何事に も動じないというよりは動揺を感じる感覚が人からずれているせいである。人から頼まれごとをすると断れない(というより断ろうと考え ている間に押し付けられてしまう)性格なので、周囲のトラブルに巻き込まれていることもしばしば。祖母のタカと二人暮しであるが、両 親は音楽家で共にドイツに住んでいて健在である。両親の影響からか、ピアノを弾くことができる。家のピアノは、10年以上調律してい ないせいか、弾くと割れ鐘を叩く音がする。基本的に彼の一人称は「ぼく」だが、単行本9巻あたりから何故か「オレ」に変わっている。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
41
第 5 章 分析結果
40
5-1 システム使用時と非使用時の比較
分析結果
システムの使用時(実験 2)と非使用時(実験1)での 混雑度、嗜好性のマッチングを比較する。 混雑度は図 5-1-2 から図 5-1-5 を比較すると A,B 両グ ループにおいて一つのブースに 4 人以上いる時間が少な くなっている事が解る。特に一つのブースに6人いる状況 はシステム使用時には起きなくなっている。 また嗜好性も、表 5-1-6 から表 5-1-9 を見るとこちらで 指定した作品を前半に見た被験者が増えている。 これら二つの適合度を計算してプロットした図 5-1-1 を 見ると A グループ、B グループ共に混雑、嗜好性共にシス
混雑
テム使用時のほうが適合度が高くなっている。
12000
10000
A‑ 1 A‑ 2 B‑ 1 B‑ 2
f1 混雑
8000
6000
4000
快適
2000
0 2.5
適
3
3.5
4 f2 嗜好性
4.5
5
5.5
不適
図 5-1-1 システム使用時と非使用時の適合度の比較
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
43
分析結果
6
5
人数 人
4
3
2
1
0 0
10
20
30
40
50
60
70
80
90
70
80
90
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-1-2 実験 1 (自由閲覧実験) グループ A の混雑
6
5
人数 人
4
3
2
1
0 0
10
20
30
40
50
60
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-1-3 実験 2 (絶対追従実験) グループ A の混雑
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
44
分析結果
6
5
人数 人
4
3
2
1
0 0
10
20
30
40
50
60
70
80
90
70
80
90
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-1-4 実験 1(自由閲覧実験) グループ B の混雑
6
5
人 人数
4
3
2
1
0 0
10
20
30
40
50
60
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-1-5 実験 2(絶対追従実験) グループ B の混雑
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
45
分析結果
表 5-1-6 実験 1 グループ A の閲覧順路と指定作品の初見順位
表 5-1-7 実験 2 グループ A の閲覧順路と指定作品の初見順位
表 5-1-8 実験 1 グループ B の閲覧順路と指定作品の初見順位
表 5-1-9 実験 2 グループ B の閲覧順路と指定作品の初見順位
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
46
5-2 システムの利用度の違いによる効果の比較
分析結果
システムの利用頻度による混雑度、嗜好性のマッチング の効果を比較する。 まず表 5-2-2、5-2-3 を見ると実験3においてグループ A でのシステムン利用度は 71.1%、グループ B のシステ ム利用度は 70.8%であった。 図 5-2-1 をみるとグループAにおいてはシステムの利用 度の低い実験3のほうが混雑に関しては適合度が高くく なった。また、グループBにおいてはシステム利用度の低 い実験3のほうが嗜好性の適合度が高くなった。これはプ ログラムの探索精度が甘く、探索結果が最適解に近づきき れておらず、システムの指示にはずれた閲覧者の動きがよ り適切な経路を生み出したと考えられる。
混雑
12000
10000
A‑ 2 A‑ 3 B‑ 2 B‑ 3
f1 混雑
8000
6000
4000
快適
2000
0 2.5
適
3
3.5
4 f2 嗜好性
4.5
5
5.5
不適
図 5-2-1 システムの利用度の違いによる適合度の比較
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
47
表 5-2-2 実験3(任意追従実験) グループAのナビゲーションの利用度 早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
表 5-2-3 実験3(任意追従実験) グループBのナビゲーションの利用度
分析結果
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
48
分析結果
6
5
人 人数
4
3
2
1
0 0
10
20
30
40
50
60
70
80
90
70
80
90
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-2-4 実験 2 (絶対追従実験) グループ A の混雑
6
5
人 人数
4
3
2
1
0 0
10
20
30
40
50
60
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-2-5 実験 3(任意追従実験) グループ A の混雑
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
49
分析結果
6
5
人数 人
4
3
2
1
0 0
10
20
30
40
50
60
70
80
90
70
80
90
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-2-6 実験 2(絶対追従実験) グループ B の混雑
6
5
人数 人
4
3
2
1
0 0
10
20
30
40
50
60
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-2-7 実験 3(任意追従実験) グループ B の混雑
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
50
分析結果
表 5-2-8 実験 2( グループ A) 閲覧順路と指定作品の初見順位
表 5-2-9 実験 3( グループ A) 閲覧順路と指定作品の初見順位
表 5-2-10 実験 2( グループ B) 閲覧順路と指定作品の初見順位
表 5-1-9 実験 3( グループ B) 閲覧順路と指定作品の初見順位
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
51
5-3 fav.exe と jam.exe の効果の比較
分析結果
混雑回避に重点を置いたシステム(実験4jam.exe)と 混雑回避、嗜好性の二つを最適化するシステム(実験2 fav.exe)の効果の比較を行う。 グループ A では嗜好性は実験 2、混雑は実験4の適合度 となりシステムの狙いどうりの誘導が行われた。 グループ B においては実験2が混雑、嗜好性ともに実 験4、よりも適合度が高くなった。 どちらのグループにおいても嗜好性の適合度は実験2が 高くなっていることから実験4で用いた探索プログラムが 混雑回避のための解に近づききれていないときがある考え
混雑
られる。
12000
10000
A‑ 2 A‑ 4 B‑ 2 B‑ 4
f1 混雑
8000
6000
4000
快適
2000
0 2.5
適
3
3.5
4 f2 嗜好性
4.5
5
5.5
不適
図 5-3-1 適合度の比較
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
52
分析結果
6
5
人
4
3
2
1
0 0
10
20
30
40
50
60
70
80
90
70
80
90
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-3-2 実験 2(絶対追従実験) グループ A の混雑
6
5
人
4
3
2
1
0 0
10
20
30
40
50
60
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-3-3 実験 4(混雑緩和重視実験) グループ A の混雑
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
53
分析結果
6
5
人
4
3
2
1
0 0
10
20
30
40
50
60
70
80
90
70
80
90
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-3-4 実験 2(絶対追従実験) グループ B の混雑
6
5
人
4
3
2
1
0 0
10
20
30
40
50
60
10秒 wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�& wo�9�2�&
図 5-3-5 実験 4(混雑緩和重視実験) グループ B 混雑
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
54
分析結果
表 5-3-6 実験 2( グループ A) 閲覧順路と指定作品の初見順位
表 5-3-7 実験 4( グループ A) 閲覧順路と指定作品の初見順位
表 5-3-8 実験 2( グループ B) 閲覧順路と指定作品の初見順位
表 5-3-9 実験 4( グループ B) 閲覧順路と指定作品の初見順位
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
55
第 6 章 考察・展望
54
6-1 考察
考察・展望
本研究は展示空間において誘導により混雑緩和しなが ら、閲覧者に意味のある(嗜好性に沿った)順路を提示す ることを目的とした。 二つの目的を同時に成立させるために、遺伝的アルゴリ ズムにより経路探索を行うプログラムを作成し、仮想の展 示空間で誘導の効果を検証する実験をおこなった。 実験1(自由閲覧実験)では一つのブースに 5 人、6 人 とたまる時間帯が発生してしまい、混雑がみられた。 実験 2(絶対追従実験)では実験 1 で発生した 6 人ブー スにたまる時間は完全に押さえることができ全体としても 混雑緩和に成功した。また、指定作品を前半に見る順路に ほとんどの被験者が誘導された。 実験 3(任意追従実験)ではグループA、グループBと もにシステムの利用度どちらも 70% 程度であったがその 適合度にはばらつきが見られた。実験 2 と比較すると混 雑はどちらのグループも若干解消され、嗜好性はAグルー プでは適合度が低下し、グループBでは改善される結果と なった。 実験4(混雑緩和重視実験)ではグループAではすべて の実験の中ではもっとも混雑緩和を大きくすることができ たが、逆にグループBでは実験2と比較すると逆に混雑し てしまった。また両グループで、嗜好性の適合度は実験2 と比較して低下した。 システムの利用度の低い実験3が、実験2よりも混雑緩 和したのはプログラムの探索精度に問題が有り探索された 閲覧順路が最適解に近づききれておらず誘導からはずれた 閲覧順路をとる被験者が現れたことでより適切な閲覧順路 が発現する結果になったと考えられる。また混雑緩和を重 視したプログラムでの誘導を行った実験4で、実験2より も混雑が発生してしまった原因も探索精度に問題があっ たと考えられる。混雑の目的変数だけに注目して最適化を 行ったプログラムで、二目的関数に注目して最適化を行っ たプログラムよりも混雑緩和の最適解に近づけ無かったこ とより、現在のプログラムでは個体集団内の多様性が足り ず局所解に陥ってしまったと考えられる。実験結果全体を 見るとシステムの利用度やプログラムの内容に関わらずシ ステムの使用時では非使用時に比べ混雑が緩和された。 以上より、本研究においての「リアルタイムでの閲覧順
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
57
考察・展望
路最適化による誘導が混雑緩和に効果がある。」という仮 説は正しいといるが、展示空間での各個人にあわせた経路 選択するというキメの細かい順路最適化には課題が残った と考えられる。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
58
6-2 展望
考察・展望
■経路探索プログラムの探索精度 探索プログラムの精度を上げることで、イベントや用途 によって混雑回避を優先的におこなったり、各閲覧者の見 たいものを優先的に見せたりするような変化を与えられる フレキシブルな誘導システムが望まれる。 今回のプログラムではしばしば局所解に陥ってしまった 可能性が考えられるので一世代あたりの個体集団を増やし 集団内の多様性を保つ必要がある。しかしこれは、閲覧者 が増加したときにも発生すると考えられる問題でもあるが コンピュータの確保できるメモリーに限度が存在するの で、データの圧縮などの工夫が必要になるとかんがえられ る。また閲覧者の増加に伴う計算時間の増加がシステムの 効果に与える影響も今後検討の必要がある。本研究のシス テムではある時点での最適順路を探索しており、これは近 傍の順路だけでなく閲覧終了までの順路を最適化してい る。つまり計算時間の増加に伴い考慮されるべき問題はあ る時点での最適解が状況の変化していく中でどの程度の時 間その有効性を保てるかを考える必要があると思われる。 ■嗜好性の判断 各閲覧者に適した閲覧順路を探索するために、例えば閲 覧記録やインターネットの履歴などの情報をもとに閲覧者 ごとの嗜好性を判断するためのデータベースが必要とな る。 ■インターフェースの選択 本研究のシステムの実際の運用を目指すと、位置情報の 取得のためのインターフェース、最適経路の提示のための インターフェース、入出力両方でインターフェースを検討 する必要がある。本研究の実験のように入退場時のたび にカードをかざすような閲覧者に負担を強いるインター フェースでは快適な閲覧は望めない。また情報の提示も閲 覧者個人にそれぞれ異なる情報を渡す必要が有る上に、や はり閲覧者が負担を感じないインターフェースを考える必 要が有る。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
59
参考文献・参考資料
58
参考文献・参考資料 ■ 研究論文 「展示空間における観覧車ナビゲーションの シュミレーションに関する研究」 日本建築学会大会学術講演梗概集 2003 年 9 月 田口想、長澤夏子、渡辺仁史 (2003) ■ 参考図書 「遺伝的アルゴリズムと進化のメカニズム」 伊庭斉志 岩波書店 2002 「応用事例でわかる遺伝的アルゴリズムプログラミング」 平野廣美 パーソナルメディア 1995 ■ 参考ウェブサイト 「 RFID を使ってみよう (Felica アプリ編)」 塚田 浩二 http://mobiquitous.com/rfid/felica-sd.html 「Wikipedia」 http://ja.wikipedia.org/wiki%E3%83%A1%E3%82%A4%E3 %83%B3%E3%83%9A%E3%83%BC%E3%82%B8
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
61
おわりに
60
おわりに ようやく卒論をすべて書き終えこの ” おわりに ” を残す のみとなったが、締め切りを過ぎておりあまり落ち着いた 気持ちでこの半年間を思い返すことができない。テーマが 決まらず夏になり、GA という手法からテーマが決まり、 研究を始めてからも八王子合宿後に実験を行うなど常に余 裕のない卒論生活であった。そして今も早く終えてしまい たい一身で胸の鼓動が収まらないが、この論文を書くにあ たってお世話になった方々への感謝の意を表さずにこの文 を締めくくるわけにいかないのでがんばって書こうと思 う。 まずはこの研究の機会を与えてくださった渡辺先生、僕 のつたない発表にも鋭い指摘を下さった長澤さん、林田さ ん、ゼミを越えてアドバイスを下さったさった研究室の皆 さん、卒論の佳境の時期に長い時間実験に付き合ってくれ たすべての皆さん(特に新谷研究室、入江研究室のメン バー、靖、スー君には準備片付けにいたるまでお世話になっ てしまいました。)、そして一年間ともに苦しみながら卒論 を書いた 王ちゃん、小原さん、星君、森村さん、ヒデ、 わかりづらい僕の話を粘り強く聞いてくださった角方さ ん、横尾さん、菊池さん、引田さん、大塚さん、そして最 後に研究は進まず、連絡も寄こさない僕を叱咤激励し一年 間ご指導くださった遠田さんに心からお礼申し上げます。
早稲田大学理工学部建築学科渡辺仁史研究室 2006 卒業論文
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
63
資料編
62
実験被験者行動履歴
63
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
64
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
65
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
66
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
67
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
68
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
69
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
70
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
71
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
72
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
73
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
74
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
75
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
76
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
77
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
78
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
79
ソースコード
80
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> #include<string.h> #define MAXPOPULATION 12 #define MAXWORK 6 #define NUM 100 #define MAXGEN 501 #define MAXTIME 200 #define ELITE 4 void input_file(void); void gene_manipulation(void); void calculation_parento(int sedai);
int pool_permutation[NUM][MAXPOPULATION][MAXWORK]; int check_works[MAXPOPULATION][MAXWORK]; int permutation_log[MAXPOPULATION][MAXWORK*3]; int criterion_code[MAXPOPULATION][MAXWORK]; int now_work[MAXPOPULATION]; int pool_code[NUM][MAXPOPULATION][MAXWORK]; int time_now[MAXPOPULATION]; int time_log[MAXPOPULATION][MAXWORK*3]; int rest[MAXPOPULATION]; int favorite[MAXPOPULATION]; int templa[MAXWORK][MAXWORK] = { {0, -2, -2, -2, -2, -2}, {0, 0, -2, -2, -2, -2}, {0, 0, 1, -2, -2, -2}, {0, 0, 0, 1, -2, -2}, {0, 0, 0, 1, 1, -2}, {0, 0, 0, 1, 1, 1}, }; int favorite_work[2] = {};/**** 指定作品番号 ****/
int r; int genelation; int reinput; int cri_time; double fitness[NUM]; double total_fitness[MAXGEN]; double highest_fitness[MAXGEN];
int main(void) {
FILE *fp_max;
FILE *fp_ave;
FILE *fp_best_permutation;
FILE *fp_optimize_log;
int j,k,l,m;
int rand_num;
int buf_check_works[MAXWORK];
/*********** 初期化 ***********/
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
check_works[k][l] = 0;
criterion_code[k][l] = -2;
}
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
81
}
input_file();
if(reinput != 0)
{
/************ コーディングの基準になる順列を生成 *******************/
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] == -2)
{
for(l=0;l<MAXWORK;l++)
{
}
else
{
criterion_code[k][l] = -2;
}
criterion_code[k][0] = now_work[k];
m = 1;
for(l=0;l<MAXWORK;l++)
{
if(check_works[k][l] == 0)
{
criterion_code[k][m] = l;
m++;
}
}
}
}
/***************************** 第一世代生成 *********************************/
for(j=0;j<NUM;j++)
{
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
buf_check_works[l] = check_works[k][l];
}
l = 1;
if(now_work[k] != -2)
{
pool_permutation[j][k][0] = now_work[k];
m = 1;
while(l<MAXWORK && m<rest[k]+1)
{
srand(time(0)+r);
rand_num = rand() % MAXWORK ;
if(buf_check_works[rand_num] == 0)
{
pool_permutation[j][k][l] = rand_num;
buf_check_works[rand_num] = -1;
l++;
m++;
r += 100;
}
else
{
r +=100;
}
}
}
{
else
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
82
else
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[j][k][l] = -2;
}
}
}
}
calculation_fintness(0);
for(genelation=0;genelation<MAXGEN;genelation++)
{
gene_manipulation();
calculation_parento(genelation);
}
fp_max = fopen("max_fitness.txt","a");
fp_ave = fopen("ave_fitness.txt","a");
fp_best_permutation = fopen("optimize.txt","w");
fp_optimize_log = fopen("optimize_log.txt","a");
if(fp_max == NULL || fp_ave == NULL || fp_best_permutation == NULL)
{
printf(" ファイルをオープンできませんでした。\n");
return 1;
}
for(genelation=0;genelation<MAXGEN;genelation++)
{
fprintf(fp_max,"%f\n",highest_fitness[genelation]);
fprintf(fp_ave,"%f\n",total_fitness[genelation] / NUM);
}
for(k=0;k<MAXPOPULATION;k++)
{
fprintf(fp_best_permutation,"%d\n",pool_permutation[0][k][1]);
}
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
fprintf(fp_optimize_log,"%d\n",pool_permutation[0][k][l]);
}
}
fclose(fp_max);
fclose(fp_ave);
fclose(fp_best_permutation);
fclose(fp_optimize_log);
printf(" ファイルに出力しました。\n");
}
return 0;
}
void input_file(void)/************ ファイル読み込み関数 *****************/
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
83
{
FILE *input_id_fp;
FILE *input_work_fp;
FILE *input_time_fp;
FILE *input_log_fp[MAXPOPULATION];
FILE *input_time_log_fp[MAXPOPULATION];
int work_buf[MAXPOPULATION*3];
int time_buf[MAXPOPULATION*3];
int id_buf[MAXPOPULATION*3];
int log_buf;
int last_time[MAXPOPULATION];
int i,j,k,l,m,n;
int last_time0;
int buf;
for(k=0;k<MAXPOPULATION;k++)
{
now_work[k] = -2;
last_time[k] = -2;
time_now[k] = -2;
for(l=0;l<MAXWORK;l++)
{
check_works[k][l] = 0;
for(j=0;j<NUM;j++)
{
pool_permutation[j][k][l] = -2;
}
}
for(l=0;l<MAXWORK*3;l++)
{
time_log[k][l] = -2;
permutation_log[k][l] = -2;
}
}
for(k=0;k<MAXPOPULATION*3;k++)
{
work_buf[k] = -2;
time_buf[k] = -2;
id_buf[k] = -2;
}
for(k=0;k<MAXPOPULATION;k++)
{
switch(k)
{
case 0:
input_log_fp[k] = fopen("input_log_00.txt","r");
input_time_log_fp[k] = fopen("input_time_log_00.txt","r");
break;
case 1:
input_log_fp[k] = fopen("input_log_01.txt","r");
input_time_log_fp[k] = fopen("input_time_log_01.txt","r");
break;
case 2:
input_log_fp[k] = fopen("input_log_02.txt","r");
input_time_log_fp[k] = fopen("input_time_log_02.txt","r");
break;
case 3:
input_log_fp[k] = fopen("input_log_03.txt","r");
input_time_log_fp[k] = fopen("input_time_log_03.txt","r");
break;
case 4:
input_log_fp[k] = fopen("input_log_04.txt","r");
input_time_log_fp[k] = fopen("input_time_log_04.txt","r");
break;
case 5:
input_log_fp[k] = fopen("input_log_05.txt","r");
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
84
input_time_log_fp[k] = fopen("input_time_log_05.txt","r");
break;
case 6:
input_log_fp[k] = fopen("input_log_06.txt","r");
input_time_log_fp[k] = fopen("input_time_log_06.txt","r");
break;
case 7:
input_log_fp[k] = fopen("input_log_07.txt","r");
input_time_log_fp[k] = fopen("input_time_log_07.txt","r");
break;
case 8:
input_log_fp[k] = fopen("input_log_08.txt","r");
input_time_log_fp[k] = fopen("input_time_log_08.txt","r");
break;
case 9:
input_log_fp[k] = fopen("input_log_09.txt","r");
input_time_log_fp[k] = fopen("input_time_log_09.txt","r");
break;
case 10:
input_log_fp[k] = fopen("input_log_10.txt","r");
input_time_log_fp[k] = fopen("input_time_log_10.txt","r");
break;
case 11:
input_log_fp[k] = fopen("input_log_11.txt","r");
input_time_log_fp[k] = fopen("input_time_log_11.txt","r");
break;
}
if(input_log_fp[k] == NULL || input_time_log_fp[k] == NULL)
{
printf(" ファイルをオープンできませんでした。\n");
}
l = 0;
while(fscanf(input_log_fp[k],"%d",&log_buf ) != EOF)
{
permutation_log[k][l] = log_buf;
buf = check_works[k][log_buf];
buf += 1;
check_works[k][log_buf] = buf;
l++;
}
l = 0;
while(fscanf(input_time_log_fp[k],"%d",&log_buf ) != EOF)
{
time_log[k][l] = log_buf;
l++;
}
fclose(input_log_fp[k]);
fclose(input_time_log_fp[k]);
}
for(k=0;k<MAXPOPULATION;k++)
{
l = 0;
while(-1)
{
if(time_log[k][l] == -2 && l != 0)
{
last_time[k] = time_log[k][l-1];
break;
}
else if(time_log[k][l] == -2 && l == 0 )
{
break;
}
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
85
else
{
l++;
}
}
}
input_id_fp = fopen("input_id.txt","r");
input_work_fp = fopen("input_work.txt","r");
input_time_fp = fopen("input_time.txt","r");
if(input_id_fp == NULL || input_work_fp == NULL || input_time_fp ==NULL)
{
printf(" ファイルをオープンできませんでした。\n");
}
m = 0;
while(fscanf(input_id_fp, "%d", &id_buf[m]) != EOF)
{
fscanf(input_work_fp,"%d",&work_buf[m]);
fscanf(input_time_fp,"%d",&time_buf[m]);
m++;
reinput = m;
}
fclose(input_id_fp);
remove("input_id.txt");
fclose(input_work_fp);
remove("input_work.txt");
fclose(input_time_fp);
remove("input_time.txt");
last_time0 = time_buf[0];
cri_time = time_buf[0];
if(reinput != 0)
{
for(m=0;m<reinput;m++)
{
l = 0;
while(-1)
{
if(permutation_log[id_buf[m]][l] == -2)
{
permutation_log[id_buf[m]][l] = work_buf[m];
last_time[id_buf[m]] = time_buf[m];
now_work[id_buf[m]] = work_buf[m];
buf = check_works[id_buf[m]][work_buf[m]];
buf += 1;
check_works[id_buf[m]][work_buf[m]] = buf;
k = id_buf[m];
switch(k)
{
case 0:
input_log_fp[k] = fopen("input_log_00.txt","a");
input_time_log_fp[k] = fopen("input_time_log_00.txt","a");
break;
case 1:
input_log_fp[k] = fopen("input_log_01.txt","a");
input_time_log_fp[k] = fopen("input_time_log_01.txt","a");
break;
case 2:
input_log_fp[k] = fopen("input_log_02.txt","a");
input_time_log_fp[k] = fopen("input_time_log_02.txt","a");
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
86
break;
case 3:
input_log_fp[k] = fopen("input_log_03.txt","a");
input_time_log_fp[k] = fopen("input_time_log_03.txt","a");
break;
case 4:
input_log_fp[k] = fopen("input_log_04.txt","a");
input_time_log_fp[k] = fopen("input_time_log_04.txt","a");
break;
case 5:
input_log_fp[k] = fopen("input_log_05.txt","a");
input_time_log_fp[k] = fopen("input_time_log_05.txt","a");
break;
case 6:
input_log_fp[k] = fopen("input_log_06.txt","a");
input_time_log_fp[k] = fopen("input_time_log_06.txt","a");
break;
case 7:
input_log_fp[k] = fopen("input_log_07.txt","a");
input_time_log_fp[k] = fopen("input_time_log_07.txt","a");
break;
case 8:
input_log_fp[k] = fopen("input_log_08.txt","a");
input_time_log_fp[k] = fopen("input_time_log_08.txt","a");
break;
case 9:
input_log_fp[k] = fopen("input_log_09.txt","a");
input_time_log_fp[k] = fopen("input_time_log_09.txt","a");
break;
case 10:
input_log_fp[k] = fopen("input_log_10.txt","a");
input_time_log_fp[k] = fopen("input_time_log_10.txt","a");
break;
case 11:
input_log_fp[k] = fopen("input_log_11.txt","a");
input_time_log_fp[k] = fopen("input_time_log_11.txt","a");
break;
}
if(input_log_fp[k] == NULL || input_time_log_fp[k] == NULL)
{
printf(" ファイルをオープンできませんでした。\n");
}
fprintf(input_log_fp[k],"%d\n",work_buf[m]);
fprintf(input_time_log_fp[k],"%d\n",time_buf[m]);
fclose(input_log_fp[k]);
fclose(input_time_log_fp[k]);
}
else
{
break ;
l++;
}
}
}
for(k=0;k<MAXPOPULATION;k++)
{
if(last_time[k] < last_time0 && last_time[k] > 0)
{
last_time0 = last_time[k];
}
}
for(k=0;k<MAXPOPULATION;k++)
{
if(last_time[k] != -2)
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
87
{
}
else
{
time_now[k] = (last_time[k] - last_time0) / 10;
time_now[k] = -2;
}
}
cri_time = (cri_time -last_time0) / 10;
for(k=0;k<MAXPOPULATION;k++)
{
rest[k] = 0;
n = 0;
for(l=0;l<MAXWORK;l++)
{
if(check_works[k][l] == 0)
{
}
rest[k] = n;
n++;
}
}
for(k=0;k<MAXPOPULATION;k++)
{
n = rest[k];
if(permutation_log[k][0] == -2)
{
now_work[k] = -2;
}
else if(n == 0)
{
}
else
{
now_work[k] = -2;
l = 1;
while(-1)
{
if(permutation_log[k][l] == -2)
{
now_work[k] = permutation_log[k][l-1];
break;
}
else
{
l++;
}
}
}
}
}
printf(" ファイルを入力しました。\n");
}
void gene_manipulation(void)/************************* 遺伝子操作 ******************************/ {
int buf_criterion_code[MAXWORK];
int parents_code[2][MAXPOPULATION][MAXWORK];
int new_code[2][MAXPOPULATION][MAXWORK];
int code[NUM][MAXPOPULATION][MAXWORK];
int pool_code[NUM][MAXPOPULATION][MAXWORK];
int count;
int rand_num;
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
88
int rand_num_0;
int rand_num_1;
int i,j,k,l,o,u,m,n;
double f,g;
for(j=0;j<NUM;j++)
{
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK;l++)
{
buf_criterion_code[l] = criterion_code[k][l];
}
for(l=0;l<MAXWORK;l++)
{
if(pool_permutation[j][k][l] != -2)
{
m = 0;
while(-1)
{
if(pool_permutation[j][k][l] == buf_criterion_code[m])
{
code[j][k][l] = m;
while(-1)
{
if(m == MAXWORK-1)
{
buf_criterion_code[m] = -2;
break;
}
else if(buf_criterion_code[m+1] == -2)
{
buf_criterion_code[m] = -2;
break;
}
else
{
buf_criterion_code[m] =
buf_criterion_code[m+1];
}
break;
}
else
{
}
else
{
m++;
}
m++;
}
}
code[j][k][l] = -2;
}
}
}
}
}
/*************** 遺伝子交配 *********************/ /**************** エリート作成 ******************/
for(count=0;count<ELITE;count++)
{
for(k=0;k<MAXPOPULATION;k++)
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
89
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK;l++)
{
pool_code[count][k][l] =code[count][k][l];
}
}
}
}
for(count=ELITE;count<(ELITE-1)*(1+ELITE/2);count += 2)
{
for(m=0;m<ELITE-1;m++)
{
n = m+1;
while(n<ELITE)
{
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK;l++)
{
parents_code[0][k][l] = code[m][k][l];
parents_code[1][k][l] = code[n][k][l];
}
n++;
}
}
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK;l++)
{
if(templa[rest[k]][l] == 0)
{
new_code[0][k][l] = parents_code[0][k][l];
new_code[1][k][l] = parents_code[1][k][l];
}
else if(templa[rest[k]][l] == 1)
{
new_code[0][k][l] = parents_code[1][k][l];
new_code[1][k][l] = parents_code[0][k][l];
}
else
{
new_code[0][k][l] = -2;
new_code[1][k][l] = -2;
}
}
}
}
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK;l++)
{
pool_code[count][k][l] = new_code[0][k][l];
pool_code[count+1][k][l] = new_code[1][k][l];
}
}
}
}
}
}
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
90
/********************************************************************/
for(count=(ELITE-1)*(1+ELITE/2)+1;count<NUM-1;count += 2)
{
for(o=0;o<2;o++)
{
srand(time(0)*r);
rand_num = rand() % (1001);
j = 0;
while(-1)
{
f = 0;
g = 0;
for(i=0;i<=j;i++)
{
f += fitness[i] ;
if(i != 0)
{
}
else
{
g += fitness[i-1] ;
g = 0;
}
}
if(rand_num > 990)
{
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK;l++);
{
parents_code[o][k][l] = code[j][k][l];
}
}
}
r++;
break;
}
else if(rand_num >= g && rand_num < f )
{
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK;l++)
{
r++;
break;
}
else
{
}
}
parents_code[o][k][l] = code[j][k][l];
}
j++;
}
}
}
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
91
for(l=0;l<MAXWORK;l++)
{
if(templa[rest[k]][l] == 0)
{
new_code[0][k][l] = parents_code[0][k][l];
new_code[1][k][l] = parents_code[1][k][l];
}
else if(templa[rest[k]][l] == 1)
{
new_code[0][k][l] = parents_code[1][k][l];
new_code[1][k][l] = parents_code[0][k][l];
}
else
{
new_code[0][k][l] = -2;
new_code[1][k][l] = -2;
}
}
}
}
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK;l++)
{
pool_code[count][k][l] = new_code[0][k][l];
pool_code[count+1][k][l] = new_code[1][k][l];
}
}
}
}
/*************** デコーディング *******************/
for(j=0;j<NUM;j++)
{
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK;l++)
{
buf_criterion_code[l] = criterion_code[k][l];
}
for(l=0;l<MAXWORK;l++)
{
m = pool_code[j][k][l];
if(m != -2)
{
pool_permutation[j][k][l] = buf_criterion_code[m];
while(-1)
{
if(m == MAXWORK-1)
{
buf_criterion_code[m] = -2;
break;
}
else
{
if(buf_criterion_code[m+1] == -2)
{
buf_criterion_code[m] = -2;
break;
}
else
{
buf_criterion_code[m]
=
buf_criterion_code[m+1];
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
92
}
else
{
}
else
{ for(l=0;l<MAXWORK;l++) {
pool_permutation[j][k][l] = -2;
}
}
}
}
m++;
}
pool_permutation[j][k][l] = -2;
}
}
}
}
/************************************* 突然変異 *************************************/
for(j=0;j<NUM;j++)
{
for(k=0;k<MAXPOPULATION;k++)
{
switch(rest[k])
{
case 5:
r +=100;
srand(time(0)+r);
rand_num = rand() % (30);
if(rand_num == 0)
{
r += 100;
srand(time(0)+r);
rand_num_0 = rand() % (rest[k]);
rand_num_0++;
r +=100;
srand(time(0)+r);
rand_num_1 = rand() % (rest[k]);
rand_num_1++;
u = pool_permutation[j][k][rand_num_0];
pool_permutation[j][k][rand_num_0] = pool_permutation[j][k][rand_num_1];
pool_permutation[j][k][rand_num_1] = u;
}
break;
case 4:
r +=100;
srand(time(0)+r);
rand_num = rand() % (50);
if(rand_num == 0)
{
r += 100;
srand(time(0)+r);
rand_num_0 = rand() % (rest[k]);
rand_num_0++;
r +=100;
srand(time(0)+r);
rand_num_1 = rand() % (rest[k]);
rand_num_1++;
u = pool_permutation[j][k][rand_num_0];
pool_permutation[j][k][rand_num_0] = pool_permutation[j][k][rand_num_1];
pool_permutation[j][k][rand_num_1] = u;
}
break;
case 3:
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
93
r +=100;
srand(time(0)+r);
rand_num = rand() % (100);
if(rand_num == 0)
{
r += 100;
srand(time(0)+r);
rand_num_0 = rand() % (rest[k]);
rand_num_0++;
r +=100;
srand(time(0)+r);
rand_num_1 = rand() % (rest[k]);
rand_num_1++;
u = pool_permutation[j][k][rand_num_0];
pool_permutation[j][k][rand_num_0] = pool_permutation[j][k][rand_num_1];
pool_permutation[j][k][rand_num_1] = u;
}
break;
case 2:
r +=100;
srand(time(0)+r);
rand_num = rand() % (200);
if(rand_num == 0)
{
r += 100;
srand(time(0)+r);
rand_num_0 = rand() % (rest[k]);
rand_num_0++;
r +=100;
srand(time(0)+r);
rand_num_1 = rand() % (rest[k]);
rand_num_1++;
u = pool_permutation[j][k][rand_num_0];
pool_permutation[j][k][rand_num_0] = pool_permutation[j][k][rand_num_1];
pool_permutation[j][k][rand_num_1] = u;
}
break;
default:
r++;
break;
}
}
}
} /*********************************fav.exe 用関数 **************************************/ void calculation_parento(int sedai)/******************* フィットネス計算 ********************************/ {
int parento[NUM];
int jam[NUM][MAXPOPULATION];
int jam_work[NUM][MAXWORK][MAXTIME];
int jam_sum[NUM];
int denominator[NUM];
int buf[MAXPOPULATION][MAXWORK];
int den;
int parento_buf;
int jam_buf;
int parento_elite;
int time0, time1;
int j,k,l,m,n,t,o,h;
double distance_sum[NUM];
double favorite_sum[NUM];
double distance[NUM][MAXPOPULATION];
double favorite_fitness[NUM][MAXPOPULATION];
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
94
double temp;
double temp1;
double distance_buf;
for(j=0;j<NUM;j++)
{
jam_sum[j] = 0;
distance_sum[j] = 0;
favorite_sum[j] = 0;
for(k=0;k<MAXPOPULATION;k++)
{
jam[j][k] = 0;
distance[j][k] = 0;
favorite_fitness[j][k] = 0;
}
for(l=0;l<MAXWORK;l++)
{
for(t=0;t<MAXTIME;t++)
{
jam_work[j][l][t] = 0;
}
}
}
for(j=0;j<NUM;j++)
{
den = 0;
for(k=0;k<MAXPOPULATION;k++)
{
h = time_now[k];
if(now_work[k] != -2)
{
den++;
time0 = h;
if(h + 15 < cri_time)
{
}
else
{
time1 = cri_time + 3;
time1 = time0 + 15;
}
for(l=0;l<MAXWORK;l++)
{
o = pool_permutation[j][k][l];
for(t=time0;t<=time1;t++)
{
jam_buf = jam_work[j][o][t];
jam_buf++;
jam_work[j][o][t] = jam_buf;
}
time0 = time1 + 2;
time1 = time1 + 15;
}
time0 = h;
if(h + 15 < cri_time)
{
}
else
{
time1 = cri_time + 3;
time1 = time0 + 15;
}
for(l=0;l<MAXWORK;l++)
{
if(pool_permutation[j][k][l] != -2)
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
95
{
o = pool_permutation[j][k][l];
jam_buf = jam[j][k];
for(t=time0;t<=time1;t++)
{
if(jam_work[j][o][t]>6)
{
jam_buf += 200;
}
else if(jam_work[j][o][t]==6)
{
jam_buf += 100;
}
else if(jam_work[j][o][t]==5)
{
jam_buf += 50;
}
else if(jam_work[j][o][t]==4)
{
jam_buf += 10;
}
else if(jam_work[j][o][t]==3)
{
jam_buf += 0;
}
}
jam[j][k] = jam_buf ;
time0 = time1 + 2;
time1 = time1 + 15;
}
}
}
denominator[j] = den;
}
}
for(j=0;j<NUM;j++)
{
jam_buf = 0;
for(k=0;k<MAXPOPULATION;k++)
{
jam_buf += jam[j][k];
}
jam_sum[j] = jam_buf;
}
for(j=0;j<NUM;j++)
{
temp = 0;
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK-1;l++)
{
m = pool_permutation[j][k][l];
n = pool_permutation[j][k][l+1];
if(m != -2 && n != -2)
{
distance_buf = distance[j][k];
distance_buf += distance_work[m][n];
distance[j][k] = distance_buf;
}
}
temp += distance[j][k];
}
}
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
96
distance_sum[j] = temp;
}
for(j=0;j<NUM;j++)
{
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
n = favorite_work[0];
o = favorite_work[1];
temp = 0;
for(l=1;l<MAXWORK;l++)
{
if(pool_permutation[j][k][l] == n)
{
switch(l)
{
case 1:
temp += 100;
break;
case 2:
temp += 60;
break;
case 3:
temp += 30;
break;
}
}
else if(pool_permutation[j][k][l] == o)
{
switch(l)
{
case 1:
temp += 100;
break;
case 2:
temp += 60;
break;
case 3:
temp += 30;
break;
}
}
}
favorite_fitness[j][k] = temp;
}
}
}
for(j=0;j<NUM;j++)
{
temp = 0;
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
temp += favorite_fitness[j][k];
}
}
favorite_sum[j] = temp;
}
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
97
for(j=0;j<NUM;j++)
{
parento_buf = 1;
for(o=0;o<NUM;o++)
{
if(j != o)
{
if( distance_sum[j]>= distance_sum[o] && jam_sum[j] >= jam_sum[o] && 1 / (favorite_sum[j] + 1) >= 1 /
(favorite_sum[o] + 1) )
{
}
}
parento[j] = parento_buf;
parento_buf++;
}
}
/********************** ソート ********************/
for(m=0;m<NUM-1;m++)
{
for(n=m+1;n<NUM;n++)
{
if(parento[m] >= parento[n])
{
parento_buf = parento[m];
jam_buf = jam_sum[m];
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
buf[k][l] = pool_permutation[m][k][l];
}
}
parento[m] = parento[n];
jam_sum[m] = jam_sum[n];
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[m][k][l] = pool_permutation[n][k][l];
}
}
parento[n] = parento_buf;
jam_sum[n] = jam_buf;
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[n][k][l] = buf[k][l];
}
}
}
}
}
parento_elite = 0;
for(j=0;j<NUM;j++)
{
if(parento[j] == 1)
{
parento_elite ++;
}
}
if(sedai % 2 != 0)
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
98
{
for(m=0;m<parento_elite ;m++)
{
for(n=m+1;n<parento_elite;n++)
{
if(jam_sum[m] >= jam_sum[n])
{
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
buf[k][l] = pool_permutation[m][k][l];
}
}
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[m][k][l] = pool_permutation[n][k][l];
}
}
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[n][k][l] = buf[k][l];
}
}
}
}
}
}
else
{
for(m=0;m<parento_elite ;m++)
{
for(n=m+1;n<parento_elite;n++)
{
if(favorite_sum[m] <= favorite_sum[n])
{
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
buf[k][l] = pool_permutation[m][k][l];
}
}
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[m][k][l] = pool_permutation[n][k][l];
}
}
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[n][k][l] = buf[k][l];
}
}
}
}
}
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
99
}
temp = 0;
for(j=0;j<NUM;j++)
{
temp += parento[j];
}
total_fitness[sedai] = temp;
temp = 1 / total_fitness[sedai];
for(j=0;j<NUM;j++)
{
temp1 = parento[j] + 1;
fitness[j] = (1 / temp1) / temp * 1000;
}
highest_fitness[sedai] = parento[0];
}
/***************************jam.exe 用関数 *********************************/ void calculation_parento(int sedai)/******************* フィットネス計算 ***********************************************************/ {
int parento[NUM];
int jam[NUM][MAXPOPULATION];
int jam_work[NUM][MAXWORK][MAXTIME];
int jam_sum[NUM];
int denominator[NUM];
int buf[MAXPOPULATION][MAXWORK];
int den;
int parento_buf;
int jam_buf;
int parento_elite;
int time0, time1;
int j,k,l,m,n,t,o,h;
double distance_sum[NUM];
double favorite_sum[NUM];
double distance[NUM][MAXPOPULATION];
double favorite_fitness[NUM][MAXPOPULATION];
double temp;
double temp1;
double distance_buf;
for(j=0;j<NUM;j++)
{
jam_sum[j] = 0;
distance_sum[j] = 0;
favorite_sum[j] = 0;
for(k=0;k<MAXPOPULATION;k++)
{
jam[j][k] = 0;
distance[j][k] = 0;
favorite_fitness[j][k] = 0;
}
for(l=0;l<MAXWORK;l++)
{
for(t=0;t<MAXTIME;t++)
{
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
100
jam_work[j][l][t] = 0;
}
}
}
for(j=0;j<NUM;j++)
{
den = 0;
for(k=0;k<MAXPOPULATION;k++)
{
h = time_now[k];
if(now_work[k] != -2)
{
den++;
time0 = h;
if(h + 15 < cri_time)
{
}
else
{
time1 = cri_time + 3;
time1 = time0 + 15;
}
for(l=0;l<MAXWORK;l++)
{
o = pool_permutation[j][k][l];
for(t=time0;t<=time1;t++)
{
jam_buf = jam_work[j][o][t];
jam_buf++;
jam_work[j][o][t] = jam_buf;
}
time0 = time1 + 2;
time1 = time1 + 15;
}
time0 = h;
if(h + 15 < cri_time)
{
}
else
{
time1 = cri_time + 3;
time1 = time0 + 15;
}
for(l=0;l<MAXWORK;l++)
{
if(pool_permutation[j][k][l] != -2)
{
o = pool_permutation[j][k][l];
jam_buf = jam[j][k];
for(t=time0;t<=time1;t++)
{
if(jam_work[j][o][t]>6)
{
jam_buf += 200;
}
else if(jam_work[j][o][t]==6)
{
jam_buf += 100;
}
else if(jam_work[j][o][t]==5)
{
jam_buf += 50;
}
else if(jam_work[j][o][t]==4)
{
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
101
jam_buf += 10;
}
else if(jam_work[j][o][t]==3)
{
jam_buf += 0;
}
}
jam[j][k] = jam_buf ;
time0 = time1 + 2;
time1 = time1 + 15;
}
}
}
denominator[j] = den;
}
}
for(j=0;j<NUM;j++)
{
jam_buf = 0;
for(k=0;k<MAXPOPULATION;k++)
{
jam_buf += jam[j][k];
}
jam_sum[j] = jam_buf;
}
for(j=0;j<NUM;j++)
{
temp = 0;
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
for(l=0;l<MAXWORK-1;l++)
{
m = pool_permutation[j][k][l];
n = pool_permutation[j][k][l+1];
if(m != -2 && n != -2)
{
distance_buf = distance[j][k];
distance_buf += distance_work[m][n];
distance[j][k] = distance_buf;
}
}
temp += distance[j][k];
}
}
distance_sum[j] = temp;
}
for(j=0;j<NUM;j++)
{
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
n = favorite_work[0];
o = favorite_work[1];
temp = 0;
for(l=1;l<MAXWORK;l++)
{
if(pool_permutation[j][k][l] == n)
{
switch(l)
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
102
{
case 1:
temp += 100;
break;
case 2:
temp += 60;
break;
case 3:
temp += 30;
break;
}
}
else if(pool_permutation[j][k][l] == o)
{
switch(l)
{
case 1:
temp += 100;
break;
case 2:
temp += 60;
break;
case 3:
temp += 30;
break;
}
}
}
favorite_fitness[j][k] = temp;
}
}
}
for(j=0;j<NUM;j++)
{
temp = 0;
for(k=0;k<MAXPOPULATION;k++)
{
if(now_work[k] != -2)
{
temp += favorite_fitness[j][k];
}
}
favorite_sum[j] = temp;
}
for(j=0;j<NUM;j++)
{
parento_buf = 1;
for(o=0;o<NUM;o++)
{
if(j != o)
{
if( distance_sum[j]>= distance_sum[o] && jam_sum[j] >= jam_sum[o] && 1 / (favorite_sum[j] + 1) >= 1 /
(favorite_sum[o] + 1) )
{
}
}
parento[j] = parento_buf;
parento_buf++;
}
}
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
103
/********************** ソート ********************/
for(m=0;m<NUM-1;m++)
{
for(n=m+1;n<NUM;n++)
{
if(parento[m] >= parento[n])
{
parento_buf = parento[m];
jam_buf = jam_sum[m];
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
buf[k][l] = pool_permutation[m][k][l];
}
}
parento[m] = parento[n];
jam_sum[m] = jam_sum[n];
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[m][k][l] = pool_permutation[n][k][l];
}
}
parento[n] = parento_buf;
jam_sum[n] = jam_buf;
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[n][k][l] = buf[k][l];
}
}
}
}
}
parento_elite = 0;
for(j=0;j<NUM;j++)
{
if(parento[j] == 1)
{
parento_elite ++;
}
}
for(m=0;m<parento_elite ;m++)
{
for(n=m+1;n<parento_elite;n++)
{
if(jam_sum[m] >= jam_sum[n])
{
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
buf[k][l] = pool_permutation[m][k][l];
}
}
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
104
{
pool_permutation[m][k][l] = pool_permutation[n][k][l];
}
}
for(k=0;k<MAXPOPULATION;k++)
{
for(l=0;l<MAXWORK;l++)
{
pool_permutation[n][k][l] = buf[k][l];
}
}
}
}
}
temp = 0;
for(j=0;j<NUM;j++)
{
temp += parento[j];
}
total_fitness[sedai] = temp;
temp = 1 / total_fitness[sedai];
for(j=0;j<NUM;j++)
{
temp1 = parento[j] + 1;
fitness[j] = (1 / temp1) / temp * 1000;
}
highest_fitness[sedai] = parento[0];
}
遺伝的アルゴリズムを用いた最適化順路誘導による展示空間の混雑緩和に関する研究
105