出版時間:2006-5 出版社:清華大學出版社 作者:布克蘭德 頁數(shù):296 字數(shù):447000 譯者:吳祖增
Tag標簽:無
前言
智能和入工智能. 本書介紹游戲編程中的人工智能,簡稱“游戲人工智能”。所謂人工智能,就是由人工建立的硬件或軟件系統(tǒng)的智能,是無生命系統(tǒng)的智能。例如,一個機器人的智能,一個能與人下棋的軟件的智能。智能是人類(大腦)智力活動的能力。它的表現(xiàn)形式非常廣泛,例如,能利用各種知覺系統(tǒng)接受來自環(huán)境的各種信息,能形象思維,能邏輯推理,能理解事物之間的內(nèi)在聯(lián)系,能作歸納和推廣來發(fā)現(xiàn)規(guī)律;能承認真理,能使自己適應環(huán)境,能主動學習,能根據(jù)以往經(jīng)驗改進提高自己,不至于犯同樣的錯誤;能進行創(chuàng)新思維來從事各種創(chuàng)新等。智能是一個抽象的概念,一個軟件或硬件系統(tǒng)是否有智能,只能根據(jù)它所表現(xiàn)出來的行為..
內(nèi)容概要
本書是人工智能游戲編程的一本指南性讀物,介紹在游戲開發(fā)中怎樣應用遺傳算法和人工神經(jīng)網(wǎng)絡來創(chuàng)建電腦游戲中所需要的人工智能。書中包含了許多實用例子,所有例子的完整源碼和可執(zhí)行程序都能在隨書附帶的光盤上找到。光盤中還有不少其他方面的游戲開發(fā)資料和一個賽車游戲演示軟件。 本書講解的原理通俗易懂,介紹程序詳細周到,很適用于游戲編程者自學之用,也可以作為游戲培訓教材使用(本書實際已被國內(nèi)外許多游戲培訓單位用作指定教材)。 對于任何希望了解遺傳算法和人工神經(jīng)網(wǎng)絡等人工智能技術的各行業(yè)人員,特別是要實際動手做應用開發(fā)的人員,都是一本值得一讀的好書。
作者簡介
Mat Buckland在倫敦大學學完計算機科學后,做過多年的風險管理咨詢顧問。終于他開始厭倦了所有的金錢游戲和公司制度,就一把火燒掉了他原有的公司禮服,跑到一家為Gremlin software開發(fā)游戲的公司工作。雖然薪水少得多,但是卻很有趣,而且他可以每天穿牛仔褲去上班了!現(xiàn)在Mat同時是一個自由程序員和人工智能咨詢顧問。自從20世紀80年代初第一次接觸到這些技術,他就對進化計算和AI尤感興趣。他是ai-iunkie.com網(wǎng)站(www.ai-junkie.com)的作者,該網(wǎng)站提供一些有關進化算法的教程和建議。
書籍目錄
第1篇 Windows編程 第1章 Windows概述 1.1 歷史一瞥(A Little Bit of History) 1.2 Hello World! 1.3 第一個Windows程序 第2章 Windows編程進階 2.1 Windows圖形設備接口 2.2 文本 2.3 如何創(chuàng)建后備緩沖 2.4 使用資源 2.5 對話框 2.6 正確定時 2.7 總結第2篇 遺傳算法 第3章 遺傳算法入門 3.1 鳥和蜜蜂 3.2 二進制數(shù)速成 3.3 計算機內(nèi)的進化 3.4 幫助Bob回家 3.5 練習 第4章 置換碼與巡回銷售員問題 4.1 巡回銷售員問題 4.2 置換雜交操作 4.3 交換變異操作 4.4 選擇一個適應性函數(shù) 4.5 選擇 4.6 把一切組合在一起 4.7 總結 4.8 練習 第5章 遺傳算法優(yōu)化 5.1 TSP用的各種算子 5.2 各種處理工具 5.3 總結 5.4 練習 第6章 登月也不難 6.1 創(chuàng)建和處理矢量圖形 6.2 矢量 6.3 相關的物理知識 6.4 人工控制的登月工程 6.5 遺傳算法控制的登月飛船 6.6 總結 6.7 習題第3篇 神經(jīng)網(wǎng)絡 第7章 神經(jīng)網(wǎng)絡概述 7.1 神經(jīng)網(wǎng)絡介紹 7.2 一個生物學的神經(jīng)網(wǎng)絡——大腦 7.3 數(shù)字版的神經(jīng)網(wǎng)絡 7.4 掃雷機游戲 7.5 總結 7.6 練習 第8章 為機器人提供知覺 8.1 回避障礙物 8.2 為機器人提供記憶器 8.3 總結 8.4 練習 第9章 有監(jiān)督的訓練方法 9.1 異或函數(shù) 反向傳播的工作原理 9.2 RecognizeIt——鼠標手勢的識別 9.3 一些有用的技術和技巧 9.4 監(jiān)督學習的應用 9.5 一個現(xiàn)代寓言 9.6 練習 第10章 實時演化 10.1 外星人游戲 10.2 練習 第11章 演化神經(jīng)網(wǎng)絡的拓撲 11.1 競爭約定問題 11.2 直接編碼 11.3 間接編碼 11.4 拓撲擴張的神經(jīng)演化 11.5 總結 11.6 練習 附錄A WEB資源 附錄B 參考書目及推薦讀物 附錄C 光盤中的內(nèi)容 后記
章節(jié)摘錄
迎閱讀《游戲編程中的人工智能技術》。我想你會發(fā)現(xiàn),這正是你所讀到的有關游戲. 編程的最有用的圖書之一。 Mat最先引起我的注意大概是在2000年的時候,那時,他開始在GameDev論壇(www.gamedev.net)發(fā)布各類關于游戲人工智能的帖子,并回答網(wǎng)友的各種相關問題。他很快就獲得了大家的關注,在跟貼中也不乏贊揚與認同,尤其是在貼出他為公眾消遣而制作的有關神經(jīng)網(wǎng)絡和遺傳算法的兩個教程之后。Mat發(fā)現(xiàn)游戲開發(fā)者需要獲得AI技術方面的知識以期運用在游戲制作中,而他的兩個教程以及在GameDev論壇里對提問的耐心答復無疑是滿足這一需要的一個途徑。我對能為這樣一個專題的書寫前言而感到榮幸,希望以后能..
媒體關注與評論
引言 考慮一下有多少傻瓜能作微積分演算,要讓任何其他傻瓜去掌握看來是更困難或更繁瑣的微積分技巧就令人驚奇了?! ∮行┪⒎e分技巧是相當容易的,但有些則非常難。那些編寫了高等數(shù)學教課書的傻瓜——他們都是些最聰明的傻瓜——很少會勞神向你說明簡單的微積分有多么簡單。相反地,他們采用了最最艱難的方法來處理相關內(nèi)容,好像就是刻意要讓你牢記,他們那無比的 智慧?! ∮捎谖沂且粋€出名的傻家伙,我始終不學那些困難的技巧,我現(xiàn)在也要求為我的傻瓜讀者提供那些不難的部分。徹底地掌握這些以后,其余的也會隨之而來(follow)。我相信,一個傻瓜能干的,其他傻瓜也一定能干?! ilvanus P. Thompson,《簡易微積分》導言,1910年初版 家用電腦從Sinclair ZX80演變到現(xiàn)在已經(jīng)歷了很長的一段路程。硬件速度越來越快,而電腦組件的價格則越來越低。在短短幾年時間里,我們所看到的游戲的圖形質(zhì)量有了飛速的提高。不過,到目前為止,這幾乎就是游戲開發(fā)所有努力要解決的重點——提供更好的視覺享受,而在我們最喜愛的電腦對手的AI方面,卻改進甚微?! ∪欢瑫r代在改變。計算機的硬件現(xiàn)已到了這樣的轉(zhuǎn)折點,它已能為游戲開發(fā)者創(chuàng)建AI提供更多的時鐘周期。同時,游戲的玩家們的品位也愈來愈復雜。人們已經(jīng)不再希望在游戲中看到諸如Doom和Quake這些曾經(jīng)是最心愛的早期游戲中所看到的那種蠢笨怪獸了。他們也不希望再看到計算機控制的游戲角色在那里盲目地蹣跚著尋找根本不存在的路徑,不時地被卡在那些拐彎處,或是在沒有資源的地方開發(fā)礦藏,傻頭傻腦地撞在周圍的樹上。游戲玩家想要從游戲中獲得更多的樂趣。他們希望從電腦生成的對手(或盟友)那里看到合情合理的、有智能的行為?! 』谶@些原因,我堅定地認為,在未來的幾年里,AI技術將會大幅度起飛。像Black & White 和 Halo這樣的游戲已經(jīng)讓我們?yōu)槠銩I技術而傾心,游戲玩家們正期待更多的此類游戲。此外,基于AI技術和人造生命的全新游戲流派也在最近幾年里開始出現(xiàn),如Steve Grand的Creatures,這個游戲的銷售量超過100萬份的事實讓他本人和其他所有人都吃驚。但如果你認為這是很多了,那么你再看看由Electronic Arts 制作的Sims的銷售,到目前為止,Sims及其服務器軟件(add-on packs)的銷售已經(jīng)高達1300萬份!這是一個巨大的銷售收入,而同時也是一個重要指示:玩家對這類技術有多么濃厚的興趣。這個趨勢只可能繼續(xù)?! ?chuàng)造智能幻影(illusion)的技術有多種,本書主要探討兩個方面:遺傳算法和人工神經(jīng)網(wǎng)絡。這兩項技術討論的地方很多,它們無疑正是當前的熱點論題,但是被誤解的地方也相當多。就拿神經(jīng)系統(tǒng)網(wǎng)絡來說,經(jīng)常會發(fā)現(xiàn)游戲開發(fā)者誤認為神經(jīng)網(wǎng)絡是極其復雜的東西,因而會占用太多的處理器時間,導致游戲速度降低。或者相反,他們可能過度地追求神經(jīng)網(wǎng)絡的能力,企圖去創(chuàng)造一個有感覺的類似HAL的人工生命,其結果必然是以失敗而告終。我希望本書能幫助他們減少類似的曲解?! ∩厦嫖乙肧ilvanus Thompson所著的受到人們喝彩的《簡易微積分導言》中的那一段話可以成為本書的完美的開端(謝謝,Silvanus?。驗?,神經(jīng)網(wǎng)絡和遺傳算法和微積分一樣,對初學者來說,可能是非常難入門的,尤其對那些沒有接受過正規(guī)專業(yè)教育的人來說更是如此。而已有的所有此類著作都是由學院式專家為學院式讀者所寫,其中充斥著(非本專業(yè)人)看不習慣的數(shù)學公式和難于理解的術語。因此,我寫了一本是我剛開始對這些課題感興趣時所想要讀到的那種書:一本由傻瓜寫給傻瓜看的書。相信我,如果我剛開始涉足該領域時能夠得到這樣一本書,我就用不著為搞清那些學究們到底是在講什么而花那么多時間、受那么多挫折了! 經(jīng)過這些年,我已經(jīng)讀了有關這個課題方面的很多書和論文,它們幾乎都沒有能給出真實的例子,沒有東西可以讓你牢靠地掌握并對自己說“??!這就是我能拿來運用的東西!”。 比如,關于遺傳算法的書差不多總是向你提出這樣的問題: 最小化下面的函數(shù) f(x1,…,x5) = x1sin x1 + 1.7x2 sin x1 -1.5x3 - 0.1x4 cos(x4 + x5 - x1) + 0.2x52 - x2 –1 其中 -100 ≤ x1,…,x5 ≤ 100 我的意思是說,這是一個完全可以用遺傳算法來解決的問題,但是上面的提法卻讓我們這些凡人實在難于理解其中的意義。除非你有一個很好的數(shù)學基礎,這樣的問題很可能會顯得過于抽象,會立即讓你感覺到不舒服,對繼續(xù)學下去也就沒有趣味。 但如果給你的問題是這樣: 請允許我向你介紹Bob。今天對Bob來說可不是什么好日子,他已深陷到一個迷宮中,而他的妻子正期待他能早點回家一起分享她花了整個下午制作的晚餐。我來告訴你如何使用遺傳算法幫助他找到迷宮出口,以挽救他的婚姻?! ∧愕拇竽X就有一個可以與之聯(lián)系的著落點(anchor point)。你也立即會對這樣的題目感到舒適。不僅如此,這也是一道有趣的題目。你一定很想知道我們怎樣來幫他呢?由此你就會打開書本,繼續(xù)學下去,在學習中感受到樂趣?! ∵@就是我在本書中用來闡明概念所使用的一種類型的題目。如果我的做法正確有效,如何把你的想法運用到你的游戲和項目里就會變得顯而易見。 對于我的讀者,我只作一個假設,那就是讀者了解如何編程。我不了解會有些什么樣的讀者,但是有時,當我買了一本書而發(fā)現(xiàn)其中僅有一部分我不了解,以至于必須去買另一本書來解釋第一本書里我所不懂的內(nèi)容,就會讓我感到失望。為了防止這樣的事情發(fā)生在讀者身上,我努力確保這本書能解釋代碼所說明的一切——從Windows GDI、矩陣和矢量數(shù)學的使用,直到物理學和2D圖像學。我知道事情通常都有其兩面性,很可能一些讀者已經(jīng)掌握了這些圖形學、物理學和GDI的相關知識,那么,你們可以跳過這部分而只閱讀那些你們更感興趣的部分?! ∽ⅲ簞?chuàng)建演示程序 演示程序是很容易編譯生成的。首先把你所需的源程序復制到你的硬盤里(譯注:因編譯一般需要用到其他的一些文件,你在復制源文件時,應把源程序所在文件夾中所有的文件整個地從光盤復制到硬盤)。如果你用微軟的Visual Studio來編譯,只要點擊工程的workspace文件(譯注:即以.ws為后綴的那個文件)就可以開始進行編譯并最后生成可執(zhí)行程序。如果使用其他的編譯器,你應該創(chuàng)建一個新的Win32 工程(確保winmm.lib在你的工程設置里),并在按編譯按鈕之前,先在工程文件夾里加上相關的源程序和資源文件。所有要做的就是這些。用不到添加額外的路徑、DirectX或OpenGL。 在所有的例子里,我盡量使代碼編寫得盡可能簡單。使用的是C++語言,但是我希望C語言程序員也能理解我的代碼。所以,出于這方面的考慮,我沒有使用C++所固有的諸如繼承、多態(tài)一類的東西(stuff)。我使用了很簡單的標準模板庫(standard Template Library,sTL)功能,但是在我引用sTL功能的地方,會在邊框里進行解釋。使用簡單代碼的一個出發(fā)點是不使我所要闡述的原理顯得晦澀。相信我,本書所涵蓋的有些內(nèi)容一開始并不容易掌握,所以我不想把因為在例子中使用了高級代碼而把事情弄得更復雜。我已盡我所能恪守老管理顧問的信條:K.I.S.S(Keep It Stupidly Simple),讓一切盡可能地簡單。 好了,不再羅嗦了,讓我們來開始冒險吧……
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載