前言:尋找寫作靈感?中文期刊網用心挑選的人工生命模擬綜合性實驗設計研究,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
摘要:針對目前計算機編程類課程綜合性實驗內容陳舊、形式單一、技術難度低、趣味性不足等問題,選擇人工生命模擬作為實驗內容,將神經網絡、強化學習和遺傳算法作為理論基礎,采用.NET編程技術,詳細描述了人工魚生存模擬綜合性實驗的設計和實現,為解決目前計算機編程類課程綜合性實驗存在的問題提供一個新穎的解決方案。
關鍵詞:人工生命;遺傳算法;強化學習;仿真實驗
人工智能是研究人類智能模擬和擴展的理論、方法、技術及應用的科學。國內召開的人工智能教育論壇,進一步促進了“人工智能+教育”研究的深入和應用推廣,同時也為人工智能向“人工智能+教育”發展提供了技術基礎[1]。人工智能輔助教學系統是現代科研的重要成果,是新技術的體現,人工智能技術應用于教育教學,有利于促進學生和教師的發展,促進教育領域方面的改革[2-3]。教育人工智能則是人工智能與學習科學相結合而形成的一個新領域[4]。目前多數院校的計算機編程課程教學還存在著一些問題,無法滿足學生的發展需求[5-7]。國內的學者也提出了新的實驗教學方法,例如以建構主義學習理論為依據、參照任務驅動和成就驅動的方法、結合教學過程中的實踐經驗提出的一種新的分層實驗教學方法[8]。雖然在現有的計算機編程類綜合性實驗中能夠體現問題導向、任務驅動等好的實驗教學方法,但是問題或者任務本身多是數值計算或者信息管理問題,缺少新穎性和娛樂性,算法難度偏低、業務邏輯簡單、技術實現容易,無法達到實踐能力訓練的工作量和難度要求,而且相關的技術難點可能超過課程現有知識,需要開源項目支持。隨著開源項目的大力發展,現在很多項目開發都需要開源項目支持,有必要在實驗中訓練學生如何使用開源項目解決實際問題。人工生命計算是一種以人工生命為形式、研究人工生命的信息表達和處理機制、提取相應的計算模型、嵌入相應的計算方法模擬自然界生物進化過程與信息處理機制來求解與優化問題的智能計算方法[9]。本文選擇人工智能研究領域新穎有趣的人工生命模擬作為研究問題,設計和實現簡單人工魚模擬綜合性實驗,具體描述算法理論基礎、類庫設計和算法實現,為解決計算機編程類課程綜合性實驗設計問題提供一個新穎的案例參考。
1人工生命理論基礎
1.1人工生命概念和特征
人工生命首先由計算機科學家ChristopherLangton在1987年召開的“生成以及模擬生命系統的國際會議”上提出。人工生命的概念屬于計算機科學領域的虛擬生命系統,涉及計算機軟件工程與人工智能技術。人工生命是借助計算機實現一個具有生物系統特征的過程或系統,特征主要包括:(1)繁殖和死亡。(2)進化和選擇。(3)信息交換和處理。(4)決策。
1.2遺傳算法
遺傳算法是受達爾文進化論的啟發,借鑒生物進化過程而提出的一種啟發式搜索算法。將要解決的問題模擬成一個生物進化的過程,通過復制、交叉、突變等操作產生下一代的解,并逐步淘汰適應度低的解,保留適應度高的解。這樣進化N代后就很有可能會進化出適應度很高的個體。遺傳算法有3個最基本的操作:選擇、交叉、變異。(1)選擇。選擇一些染色體來產生下一代。(2)交叉。2條染色體交換部分基因來構造下一代的2條新的染色體。(3)變異。在繁殖過程,新產生的染色體中的基因會以一定的概率出錯。
1.3BP神經網絡和強化學習
神經網絡是1986年由Rumelhart和McClelland為首的科學家提出的概念[10],是一種按照誤差逆向傳播算法訓練的多層前饋神經網絡,是目前應用最廣泛的神經網絡。強化學習(reinforcementlearning,RL)是近年來機器學習和智能控制領域的主要方法之一,增強學習關注的是智能體如何在環境中采取一系列行為,從而獲得最大的累積回報[11]。通過增強學習,一個智能體知道在什么狀態下應該采取什么行為。
2人工魚綜合性實驗設計
人工魚具有自己的神經網絡、顏色、大小、移動速度和食物感知器官,每一條人工魚的染色體包括體質基因和智慧基因。體質基因描述人工魚的大小、移動速度和顏色特征,采用列表方式描述;智慧基因描述人工魚的智慧特征,采用神經網絡形式表示。移動速度大的人工魚移動更快,尺寸大的人工魚需要更多食物,顏色對人工魚沒有影響。通過食物感知器官獲取食物與人工魚之間的角度和距離信息,將這些信息作為神經網絡輸入。計算神經網絡輸出、控制人工魚的朝向和速度、找到食物的位置,循環反復,實現人工魚在模擬環境中的生存。通過遺傳變異、強化學習和適當選擇,使人工魚學習如何找到食物。通過2條人工魚的染色體之間配對,產生變異的后代。
2.1人工魚相關類定義
人工魚相關類包括Fish類、FishChromozomes類和FishLearn類。類的字段和方法定義如圖1所示。Fish類定義了人工魚的基本信息、位置信息、智慧能力和生存行為?;鞠挲g、大小、生命力、移動速度、染色體、吃食量;位置信息包括坐標位置、頭和身體朝向;智慧能力包括神經網絡、食物感知、自我學習;生存行為包括搜索食物、吃食、前進、邊界檢測。FishChromozomes類在基因類和染色體類定義基礎上,定義了人工魚的體質染色體、智慧染色體和繁殖交配行為。FishLearn類定義了人工魚的覓食學習。
2.2食物相關類定義
食物相關類包括Food類、FoodSensor類和FoodGnerator類,類的字段和方法定義如圖2所示。Food類定義食物的基本信息,包括坐標位置和提供的生命力。FoodSensor類根據人工魚和食物之間角度和距離信息,定義了食物感知計算的功能。FoodGenerator類定義了隨機在不同位置生產食物的功能。
2.3人工魚生存算法設計
2.3.1人工魚覓食強化學習
設計人工魚具有短期記憶,通過隊列可以保存最近的n個行為。當成功搜索到食物后,使用這n個行為對其神經網絡進行訓練,以使其更好地按照上述n個行為進行食物搜索,這就是人工魚的覓食強化學習過程。在仿真過程中,由于覓食強化學習,每條人工魚的神經網絡將發生連續不斷的變化,描述人工魚最新的覓食行為。
2.3.2人工魚繁殖遺傳處理
人工魚的基因存在概率突變,當2條人工魚進行繁殖時,他們的基因會進行合并和組合,產生一個具有不同基因特征的新個體。在仿真生存環境中,如果人工魚吃到食物,生命力會增加,說明其具有更好的覓食能力,生存環境適應度更好;如果人工魚沒有吃到食物,生命力會持續下降,說明其具有較差的覓食能力,生存環境的適應度較差。通過定義每代人工魚的繁殖閾值條件,例如定時器,選擇覓食能力強、生存環境適應度好的人工魚進行繁殖交配,產生新的個體,實現人工魚進化。由于每一條人工魚的神經網絡都是不同的,所以它們的后代將具有唯一的神經網絡,具有不同的覓食行為。對于使用普通列表描述的體質基因,根據列表長度隨機選擇一個交叉點,按照交叉點,將2個基因列表在交叉點兩個相反方向上分別進行拷貝,如圖3所示。人工魚繁殖交配時,對使用神經網絡描述的智慧基因,選擇一個交叉點將2條人工魚的神經網絡進行遺傳處理,如圖4所示。為了能夠最大限度遺傳有利生存的基因到下一代,一般選擇從多條好的人工魚中選擇2條進行繁殖交配,產生后代。
2.3.3人工魚生存模擬
在人工魚生存模擬中,一開始固定數量的食物隨機在不同位置生成,一旦食物被人工魚吃掉,都會自動重新在另一個隨機位置生成。人工魚彼此之間默認是不可見的,但是在任何時候都可以感知所有的食物信息。每條人工魚獲取的食物感知信息經過計算,作為其神經網絡輸入,獲取神經網絡輸出,計算魚頭的朝向和前進速度,執行覓食行為。每條人工魚根據覓食情況,處于健康生長或者逐漸死亡的狀態。當每代進化閾值條件滿足時,選擇好的人工魚進行繁殖交配,產生下一代人工魚群,完成下一代生存模擬。
3人工魚綜合性實驗實現
3.1實現技術
人工魚綜合性實驗可以在VisualStudio2015開發環境中使用C#編程實現,其中人工魚生存環境的圖形化動態界面可以使用WPF的Canvas類編程繪制完成,使用BackgroundWorker類實現人工魚的多線程生存模擬,通過人工魚、食物、邊界之間坐標關系的幾何計算,獲取人工魚的食物感知信息,包括距離和角度,作為人工魚神經網絡輸入。由于學生普遍缺乏神經網絡和增強學習相關算法的理論知識,直接通過編寫代碼實現上述算法非常困難。為了解決該問題,利用開源項目NeuralNet-works,該項目提供了基于.NETFramework的并行神經網絡庫實現,其中BackpropagationNetwork類實現BP神經網絡,可以用于實現人工魚的強化學習。因此,人工魚智慧基因使用開源項目NeuralNet-works的BackpropagationNetwork類來實現BP神經網絡,獲取食物感知信息作為輸入,完成人工魚覓食行為決策,最近n個行為作為輸入輸出,完成人工魚覓食行為學習。
3.2實現效果
人工魚綜合性實驗的實現程序運行效果如圖5所示。一開始人工魚幾乎不知道如何找到食物,有些魚在不停地打轉。逐漸地,經過多代進化,人工魚逐漸獲得了吃到更多食物的行為。種群中適應度可以描述為人工魚消耗的總食物量,隨著進化代數持續增加,通過優勢個體的基因遺傳,成功地產生了覓食能力更強的個體,能夠找到更多的食物,程序模擬的效果與現實中的魚群生存過程一致。
4結語
本文針對計算機編程類課程缺乏新穎有趣的綜合性實驗問題,選擇人工智能的人工生命作為問題背景,以人工魚生存模擬為例,詳細描述了該綜合性實驗的理論基礎、實驗設計和編程實現過程。該綜合性實驗完全可以滿足計算機編程類課程對學生基礎語法、數據結構和算法的訓練,具有一定的技術難度,又不失趣味性,同時讓學生了解了利用開源項目解決實際問題的方式,為解決目前計算機編程類課程綜合性實驗中存在的問題提供了一個新穎的解決方案。
作者:袁杭 李林林 孫良旭 王剛 吳登權 劉夢迪 單位:遼寧科技大學軟件學院