如何模擬世界 -- 一個奇怪的想法


     過年在家休息,腦袋里面冒出一個奇怪的想法。如何使用程序來模擬整個世界。

     從小就是模擬經營類游戲的粉絲,所以對於模擬程序特別感興趣。玩過很多模擬城市類似的東西,總是覺得游戲雖然好,但是不過癮。大部分游戲都是圍繞着建築物展開的,物理特性的模擬為主,我希望看到一個以模擬人物為主,以人為中心的,人文的模擬類程序。如果可以的話,希望給每個人物設定獨特的性格,每個人物都可以有自己獨立的行為和思想。如果允許的話,為每個人物開一個獨立的線程。

    當然,產生這個念頭的另一個原因是,很多網絡游戲和網頁游戲,到后期都容易變成死服。既然是死服了,我們能不能設計這樣一個單機游戲,依靠模擬人的行為,將一個單機游戲模擬成為一個多人游戲呢?如果能夠做到模擬每個用戶的行為,加上一些AI的元素,理論上可以做到模擬一個多用戶的環境。

    實現這樣的一個東西,難度很大,不過,真的可以實現出來,用處也很多。當這個模型做到高度成熟的時候,可以模擬和預測很多東西: 如果一個商品漲價后,多少用戶還會繼續購買商品;電影的主角選擇誰,會具有最多的票房。當然,這個系統和天氣預報一樣,由於復雜度太高,精確度很難得到保障。

     如何來建立這樣的一個模型,這個模型是建立在海量統計數據上的。有很多統計數據,用戶傾向,都沉睡在Facebook,開心,人人的歷史數據里面。每年調查公司都會做很多問卷調查。這些數據如果可以用到這個模型中,將會起很大作用。例如,18-35歲的人,每周會看多少部電影,分別喜歡看什么題材的電影,天氣對於出門看電影的影響等等,每個獨立的調查可能不能產生很大的作用,不過,當幾萬個這樣的調查結果用於模型的時候,我認為可以在某些方面模擬出真實的用戶行為了。

    這個模型,如果要做到極致,出路只有一條,將所有的東西,所有的對象都模擬出來。虛擬的人,喝了一瓶虛擬的可樂,增加了快樂度,同時增加了卡路里。可樂又增加了飲料公司的銷售額,同時增加了垃圾量,增加了可回收的垃圾數目。只有將小到一瓶可樂都定義為一個Object(里面的可樂,外面的瓶子其實也可以是兩個對象),都仔細的去管理,才能將模擬做到極致。

    真的動手寫這樣的東西,其實已經超出了程序員的能力了。就算做一個大粒度的模擬,牽涉到的類,模型的數量就很驚人。然后就是為了真實性,還需要大量的統計數據作為隨機函數的支持。生成1000個Person對象,性別的話,0.5/0.5這樣的比例就可以了。但是血型呢?全世界人,A,B,AB,O,其他血型的比例是多少,這個必須要查資料,平均化處理肯定不對。每個人的生日可以平均分布在365天里面,不過每個人喜歡的顏色,每種顏色的比例也必須查資料。

    做這個東西的另一個意義是挑戰思維。這個東西比大部分人在工作中寫的代碼難上很多很多。

   1.多線程:如果有1000個人,都要進行一些社交活動,線程是必須使用的。

   2.海量數據的處理,1000個人將生成很多數據,模擬越復雜,數據越多

   3.模型的設計,UML等等的功力的挑戰。

   4.另外的一些編程的Sense

   5.將資料,信息轉化為代碼的能力。怎么將手頭上的文字轉化為代碼。怎么將現實生活中的行為,轉化為代碼。

   6.耐性:這個東西,在沒有成型前,一點都不好玩,一點都看不到前途和錢途。但是一旦完成后,將會產生巨大的效果。這個東西在中國開源,按照過去的經驗,基本上沒有人肯貢獻代碼,一定要有單打獨斗的准備。

   

    不知道這個東西能夠做到什么程度,不過,真的能夠在開發這個東西的時候,收集到很多資料,有很多想法,也是不錯的。

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM