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