[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ブーリアンネットワークで遊べるプログラムを作ってみました。
ブーリアンネットワークは、複雑系業界のカウフマンさんの考えたシミュレーションです。
以前もブーリアンネットワークのプログラムは作った気がしますが、今回はもうちょっと遊べるよう変えました。
ブーリアンネットワークは一つの細胞の簡単なおもちゃシミュレーションです。
本物の細胞にはいくつか遺伝子が入っていて、遺伝子がOnになったりOffになったりしますが、それをまねします。
ブーリアンネットワークにも遺伝子らしきデータが存在し、それがOnになったりOffになったりするのです。
生物というのは凍りついたものではなく、遺伝子がダイナミックに相互作用して生きている物体です。
オン・オフをくりかえすのです。
「では何が原因で遺伝子のスイッチが切り替わるのか?」というといろいろです。
細胞の外の環境かもしれませんし、内部の他の遺伝子のオン・オフに影響されるかもしれません。
今回は外の環境は無視して、内部の他の遺伝子のオン・オフだけに影響されるシミュレーションにします。
カウフマンさんのオリジナルも内部の他の遺伝子だけに影響されます。
環境に影響されないとはいえ、それはそれでカウフマンさんの結果は面白かったものでした。
なんと、勝手に細胞が分化するのです。
まあ今回は分化についてはあまり注目しませんが。
マウスでマス目をクリックし選択してください(一つ以上。2つや3つなど複数も可)。
選択基準は「面白いやつ」です。
面白いものをクリックしてください。
選択するとフチが青くなります。
面白いものを2,3選んだら、下の[Create children]ボタンを押してください。
すると、マス目が更新されます。
ここで何が起きたのでしょう?
実は、世代が交代したのです。
ブーリアンネットワークは細胞のシミュレーションだといいました。
細胞は分裂して子供を残しますよね。
今、前世代の細胞はみな死に、子孫を残したのです。
子孫を残せるのは選択された細胞だけです。
実はさっき選択したのはおもしろい細胞を選んでいたのです。
新世代の細胞はすべて親の遺伝子を受け継ぎます。
複数の親の遺伝子を全部混ぜ合わせて子孫は生まれます。
(ここが現実の生物と違います。
普通の生物に親は二人しかいませんが、このシミュレーションは親は何人いてもいいのです。)
選んでいくうちに、望み通りの動きをする細胞になるかもしれません。
つまりバーチャル細胞の育種をやっているのです。
やり方に慣れてきたら、遺伝子数や突然変異率を操作することも出来ます。
Size of genome : 遺伝子数
Mutation rate : 突然変異率
遺伝子数は大きければ大きいほど、動きの周期がゆっくりになるかもしれません。
突然変異率は、大きければ大きいほど、遺伝子の複製にノイズが入り、親たちとは似ても似つかない姿になっていきます。
というと、突然変異率は大きいほど面白いのではと思われるでしょうが、それもケースバイケースです。
あまりに突然変異率が大きいと、せっかく育った遺伝子が壊れてしまい、わけがわからなくなってしまいます。
顕微鏡を思い浮かべてください。
顕微鏡の焦点をあわせるのは極端に動かすのより少しずつ動かしたほうが商店は合いやすいですよね。
変化は大きいと逆効果なこともあるのです。
ですから現実の生物は突然変異率はだいぶ小さいわけですね。
…というようなことを進化生物学者のリチャード・ドーキンスさんが言っていました。