趣味としての人工生命づくり 第2回
世界を創造する
前回で幼虫集めシミュレーションの大まかな方向がみえてきたので、実際にNetLogoの中に世界を創造して行きましょう。
今回のシミュレーションでは、動きまわる事が必要なのでタートルをつかってハチと幼虫をつくります。はじめはちょっと使い方を解説するのでちょっと退屈かも知れません。
分かる人はざっと読んで貰えれば大丈夫です。
タートルの作り方
NetLogoを起動したら、この世界の神としてタートルを作れと命令してみましょう。
タートルを創る命令はクリエイトタートル、略して「crt」です。
画面下のobserverの横に「crt 1」と半角で入力してエンターを押します。
crtの後の1は1匹つくりなさいという命令です。命令はエンターを押すと実行されます。
上の画面に△ができました。これがノーマルのタートルです。尖っている方が前になります。あまり亀っぽくもありませんが、形は自由に指定することもできます。
では、タートルを動かします。
今度はタートルに命令するので、observerのところをクリックしてturtlesを選びます。
前に進ませるにはフォーワード、略して「fd 歩数」の命令を使います。
fd 10
ちょっと動きましたね。
動かすための命令には他に次のような物があります。
・向きを変える(リトート) 「rt 角度」
・後ろに下がる(バック) 「bk 歩数」
適当にいれていろいろ動かしてみて下さい。動いた跡を残すには
・ペンを下ろす(ペンダウン) 「pd」
と入れて動かすと軌跡が残ります。
では、思いっきり多い歩数を入れるとどうなるでしょうか?
fd 1000
と入れると端を超えて反対側からでてきます。NetLogoの世界では上端と下端、右端と左端はつながっているのです。
いくつかの命令をまとめて繰り返すこともできます。
・repeat 回数 [命令1 命令2 ・・・]
命令をまとめるには[ ]をつかいます。下のように打って実行してみてください。
repeat 100 [fd 1 rt 5]
これは、1歩進んで5度回転することを100回繰り返す。という意味になります。よかったら数を色々と変えてみてどんな図形ができるか試して見て下さい。
今度はNetLogoの特徴でもあるマルチエージェントを試して見ましょう。
さっきタートルを選んだ左下のところをクリックしてobserverに戻します。
初期化するためには、「クリアーオール」略して「ca」を入力します。
observerにして
ca
crt 100
turtlesにして
pd
repeat 100 [fd 1 rt 5]
と順番に入力してみてください。意味は、タートルを100匹つくり、そのタートル全部に一歩すすんで5度回転することを100回繰り返させるということです。
●マルチエージェントとは?
一般に組織とか社会というものは、同じ要素が集まって相互作用するなかで階層構造や一つ一つの要素にはない新しい特徴が生まれてきます。要素は分子だったり細胞だったり人間だったり車だったり虫だったりするわけですが、その社会をつくる要素に共通する特徴としては
・情報を持っている
・境界をもっている
・他の要素に情報を送れる
・他の要素から情報を受け取れる
・情報の処理ができる
・異なるタイプや個体差がある
といったことがあります。
このような要素がつくる社会をシミュレートする方法としてマルチエージェントという考え方があります。社会をまるごと再現するのではなく、要素の特徴を再現して、その要素同士を相互作用させて社会的な現象を再現するのです。
プログラムっぽくする
1、初期設定ボタンを作る
1-1 Buttonボタンをクリック
1-2 ボタンを置く場所をクリック
1-3 Command欄にsetupと入力してOKボタンをクリック
1-4 スタートボタンを作るため、1-1から1-2までを繰り返す。
1-5 Foreverにチェックをつけて、Command欄にgoと入力したらOKボタンをクリック
このようになればOKです
Foreverにチェックを付けるとボタンを押したときに
プログラムが繰り返し実行されるようになります。
comannds欄に入れた内容はボタンが押された時にその命令を実行するようになっています。
go や setup という命令はないのでその中身については、プログラムを書き込んでいきます。
codeタブをクリックすると真っ白な画面になります。
ここに命令を書き込んでシミュレーションを作ります。
プログラムは to とendがセットになっています。
to setup
ca
crt 100
ask turtles [pd]
end
これで、setup命令が実行されたら、全てを消して、タートルを100匹つくり、タートルに対してペンを降ろさせるという意味になります。
to go
ask turtles [fd 1]
end
ask turtles[ ]の部分は、さっきobserverとかturtlesとか指定したように、何に対して命令するのかを指定する役割があります。この場合は[ ]の中の命令をタートルに対して実行するという意味です。
ask patches [命令 ] の場合はパッチに対して命令するようになります。
askで指定しないでそのまま書いてあるとオブザーバーに対しての命令になります。
オブザーバーの意味は観察者ということですが、タートルをつくったり、世界をリセットしたり神様のような立場で命令を実行します。
大まかにプログラムの内容を考えて見ましょう
追加する変数
ハチ役のタートル
*幼虫を持っているか?
*足元に幼虫がいるか?
初期設定ボタンでやること
*前回のシミュレーションの内容をすべて消す。
*ハチ役のタートルを作って、画面上にばら撒く。
*幼虫役のタートルを作って、画面上にばら撒く。
実行ボタンでやること
*でたらめに歩き回る
*ハチ役
幼虫をもっておらず、足元に幼虫がいたら幼虫を拾う
幼虫持っていて、足元に幼虫がいたら幼虫を置く
*幼虫役
ハチに拾われたらハチについて行く
マガジン 趣味としての人工生命づくり
よかったらフォローお願いします。
記事はすべて無料で公開していますが、購入していただくと記事更新のペースが上がりそうな気がしますのでよろしくお願いいたします。
ここから先は
¥ 100
この記事が気に入ったらチップで応援してみませんか?