Showing posts with label ALife. Show all posts
Showing posts with label ALife. Show all posts

Friday, October 21, 2005

《奈米獵殺》

  學長推薦的《奈米獵殺》真的蠻值得一讀的。洪蘭翻譯,遠流出版。

  整部小說充滿著“視覺效果”,作者要不是對相關場景有過第一手的接觸、認識,實在很難想像這些視覺效果是如何被營造、描寫地那麼生動、鮮明的。

  此外,作為一部科幻驚悚小說,對於《奈米獵殺》,我反倒多了一分親切、少了一分震撼...

  整部小說節拍緊湊、生動鮮明,又是相關科技想像作品的首創,拍成電影,必定能滿足特效狂的口味--這裡真得蠻期待。

  又由於相關的科技,對一般讀者可能稍嫌陌生,該作者就以第一人的方式將相關的背景由主角的旁白引出來。

  這也是我擔心電影會拍濫掉的部分,最直接的表現方式就是安排主角在那“自言自語”,或是安排作者有寫日記的習慣,也許一次在電影的開頭交代清楚,也或者讓主角三不五時就作作白日夢... :p

  要說還有什麼不足的地方,我只能說這部作品真的較著重在“科”、“幻”,對於故事中人物個性、行為的描寫,多匆匆地帶過,要靠讀者自己來填補。

  -- Yukuan 2003/8/18


Forwarded by Jiang Yu-Kuan
----------------------- Original Message -----------------------

作者: ykjiang (Amorphous) 看板: biology
標題: Re: 關於演化論....
時間: Mon Aug 18 00:45:32 2003

  有生物背景的當然都知道「天擇」。天擇也是最令數學家佩服生物學的地方,因為它提出一個簡單、明確、卻有力的機制,來解釋大自然中,關於創造、設計的迷思。

  生物現象中,更隨處呈現「自我組織」的現象。經過電腦科學、應用數學、及理論生物學家的努力,我們已經知道,自我組織也是造就這個宇宙的深刻原理。

  只要環境中的元素夠豐富,它們之間的反應夠多樣,達到一個臨界之後,自我組織是必然發生的...

  就如費曼所言:

「大自然只用最長的線去編織她的圖樣,
 所以每一小片織紋,都吐露出整塊織錦的組織規律。」

  「自我組織」,再加上「天擇」,就造就了自然界的眾生相,從無生命到有生命,從原始到複雜,從萬物到人類,再從人類思想的形成到文明的發展、科學的進步等,都是基於同樣的原理,是那樣地基礎、普遍,那樣地豐富、深刻,就像其他自然律一樣。

  喔,對了,這次是上來向大家推薦一部關於演化、自我組織、生物群集,也關於奈米科技、基因工程及人工生命,它是遠流出版的科幻小說《奈米獵殺》。

  大家都知道《桃色機密》吧!肯定也看過《侏儸紀公園》。嗯,它們都跟《奈米獵殺》是同一位作者,相信再等一陣子,《奈米獵殺》也會搬到大螢幕上放映--事實上它的電影撥放權也被買斷了...


Original: Yukuan on Mon, 18 Aug 2003 10:52:30

Tags: [] [] [] []

Saturday, July 10, 2004

The Neuron Farm

基於興趣,碩士論文我是作 Bio-machine modeling 方面的題目,在歸類上屬於人造生命(Artificial Life, ALife)的範疇,選擇的 target 是神經細胞的生長、發育。以下就先簡述一下整個概念:
這裡並不是要詳盡地模擬腦部的發育和功能執行,而是提出經過大幅簡化的模型,以利電腦模擬,及供我們驗證假設之用。經過長期考量過各種可能方案後,我決定以 Cellular Automata 來模擬神經細胞生長的環境。
考慮在一個由 CA 舖成的空間中,我們在一些選定的位置,滴上特定的化學物質,於是這些化學物質就會由滴定的點,向四周擴散。再考慮到真正的腦,對個別神經細胞而言,並非完全開放的空間,所以我們也在 CA 舖成的空間中設置各種障礙,來對空間作某種區隔。於是我們的神經細胞除了有化學的土壤外,現在也有了障礙的地形。整個生長環境豐富了許多。
有了生長環境之後,該是時候讓細胞在環境中過活了,於是我們就隨手一灑,這些神經幹細胞就被灑到 CA 構成的空間中了。既然有了前面土壤的比喻,就讓我們稱這個“灑”的動作為“播種”吧! ^__^
神經幹細胞的生長也遵循 automata 的模式。完全因應環境中的化學梯度而長出軸突(axon)和樹突(dendrite)……環境中的化學物質有其自然的損耗率、神經細胞的成長也會消耗掉 大量的化學物質……我們可以在其中模擬神經細胞的成長、競爭與凋亡。並觀察最後長成的神經網路拓僕。
~~
為了完成這個模擬,我當然要先 survey 一下現成的東西,決定一下要以哪些工具來達成想要的效果。雖然在大規模的模擬時,在效率的考量下,比較傾向於使用 C++ ;最後我還是決定用 Java 來實作,因為要縮短開發時程下,執行效率的考量就顯得比較次要了。
在決定用 Java 實作後,我 survey 了許多 Java 下的 agent software toolkits 。在它們當中, Swarm 雖是該領域的元老,它的接繼者 Repast 卻比較合我胃口。但由於 Repast 的架構還是顯得龐雜,且我要的許多效果它也沒提供,索性就 參考一下 Repast 的作法後,自己重新開發一套合用的 toolkit 。
為了確認每一步都沒出錯,也為了好玩,在開發過程中我同時利用自己的 toolkit 撰寫了許多測試用的小程式:

左邊那個是用來 Demo 在物理上有名的布朗運動(Brownian Movement)。程式一開始會把固定數量的化學分子置於中央,分子們很快就會以 Random Walk 的方式擴散開來,其中的色溫提示我們每個位置的分子數量的多寡。
右邊那個我管它叫做 Diffusion Sun 。化學分子一開始也是置於中央,隨著每個 time tick 的推進,這個 Demo 程式會繼續滴上給定數量的分子作為補充。在給定的自然分子損耗(lose)及不斷地添加分子間會有個動態平衡,造成一個形狀像抖動的太陽般的圖像,故稱之。
接下來,我們就繼續觀摩一下這個 toolkit 還提供了甚麼:

很明顯地,右邊那兩個綠底、裡面畫有 sine 波的東東,就是示波器(socillograph)的 scope 。比較特別的是這裡的示波器原則上是無限量供應的,只要點選 toolbar 上面代表探針(probe)的 icon 即可。值得一提的還有,這裡的探針量測的不是單純的點的訊號,而是一個指定的範圍。我們可以在左圖的 Imaging 畫布上看到一個虛線框住的範圍,它對應到右上那個 scope ,以這個例子來說,scope 顯示的是整個框框內所有點的平均訊號,實際上我們可以在上面顯示其他更有用的統計。
最後,我這裡也附上 SineSun 的 jar 檔,有興趣的話,諸位看官也可以自行玩玩看 :)

Monday, July 03, 2000

Ant Simulation

大學(1997)的程式設計課要求學生在網路上找一個 JAVA Applet 的程式,研究後寫一篇報告上來。我在網路上找到 Mark Miller 所撰寫的“Manna Mouse”JAVA Applet,檢閱了原始碼後,覺得它的程式架構太雜亂了。於是決定自己利用物件導向分析與設計的方法,將整個程式重新設計過。

如此,一方面可以加深自己對物件導向分析與設計方法的熟練程度;另一方面我對於這個Applet 所使用的遺傳演算法也有很大的興趣,想藉此有更深的探究…

Grady Booch 一向在物件導向(Object Oriented, OO)的方法論上執領導的地位,他在1986年率先提出OO開發方法,開啟物件導向分析與設計的研究。

Booch方法在進行分析時,不只是針對問題本身作分析,也針對問題的領域進行分析。因為在同一領域的問題,有很多非常類似。實在不需要對這些類似的問題,每次都一一地重新作類似的分析。

對於問題的整個領域作一徹底的分析,雖然在一開始的時候需要耗費相當的心力,可是隨著分析的進行,我們對於整個領域就會有更深入的瞭解,最後不但累積了領域相關的知識,也完成了富彈性、高度可重複使用的軟體元件,對於將來開發新的系統將帶來非常大的助益。

Booch 的開發方法非常強調領域內的可重用性(Reuseability),其將軟體開發分成以下三個階段:

  1. 需求分析(Requirement Analysis)
  2. 領域分析(Domain Analysis)
  3. 系統設計(System Design)

上面三個步驟並不是像傳統瀑布式的分析設計方法般僵硬地要求一定要一步步地執行;而是允許在步驟間回溯(backtrack),進行反覆地修改與調整,直到系統符合需求為止。

根據生物學的說法,曾經在地球上出現過或現存的所有生物都是由構造簡單的、原始的生物,經由長期的演化而逐漸產生的。

生物演化的理論,在早期可分成:相信後天獲得的性狀可遺傳給後代的拉馬克(Lamarck)學說,及相信後天性狀不可遺傳給後代的達爾文(Darwin)學說兩大派。

由於後來新證據不斷地出現,及這幾十年來分子生物學的快速發展,生物學上已經知道自然界生物的演化機制是採用達爾文式的。雖然有學者提出人類文化的演進可以看成是採用拉馬克式的演進方式,不過這不是這裡所要討論的重點。

達爾文的生物演化論可分成以下幾個步驟:

  1. 遺傳變異(genetic diversify):個體間因遺傳基因型(genotype)的差異而顯現出各式多樣的表現型態(phenotype)。
  2. 自然選擇(natural selection):自然界對於不能夠於所在環境中適應良好的個體發生淘汰的現象。
  3. 繁殖複製(reproduction):未被淘汰的個體經由繁殖,產生許許多多的後代。這其實是一種選擇放大(selection amplify)的情形。

新產生的後代間又稍有不同而產生了遺傳變異,因此不斷地變異-選擇-複製,變異-選擇-複製,變異-選擇-複製......一直反覆循環下去即發生了生物的演化。

遺傳演算法在電腦科學上屬於演化式計算(Evolutionary Computation)的一環。遺傳演算法其實是以電腦來模擬生物演化的過程。通常用來解一些對問題解法沒有很充分瞭解的例子,或在用傳統的解法成本過高的時候使用。

※請進一步參閱《模擬螞蟻──以物件導向分析遺傳演算法

Tags: [] [] [] [] []