版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設(shè)計(論文)</p><p><b> (二零 屆)</b></p><p> 基于GA的綜合評價系統(tǒng)設(shè)計</p><p> 摘要:人工智能理論和技術(shù)的進(jìn)展和應(yīng)用,對于科技的發(fā)展和進(jìn)步具有重要意義。遺傳算法(GA)屬于人工智能領(lǐng)域的研究范疇,是進(jìn)化計算的一種最重要的形式。本設(shè)計運用遺傳算法的理論和技術(shù),進(jìn)行
2、了綜合評價系統(tǒng)的設(shè)計。通過具體的遺傳算法的運用,使得所設(shè)計的系統(tǒng)能夠從評價專家獲得各評價因素重要程度的有關(guān)知識,進(jìn)而實現(xiàn)體現(xiàn)專家思想的綜合評價。系統(tǒng)采用java語言開發(fā),并使用了mysql數(shù)據(jù)庫技術(shù)。通過對網(wǎng)站績效的綜合評價,對系統(tǒng)的效果進(jìn)行了驗證。</p><p> 關(guān)鍵詞:人工智能;遺傳算法;綜合評價;網(wǎng)站績效</p><p> The design of comprehensiv
3、e evaluation system based on GA</p><p> Abstract: It’s very important for the development and progress of science and technology that Artificial intelligence’s theory and technology are developing . Gene
4、tic algorithms(GA) are areas of research in the field of artificial intelligence and it’s the most important form of evolutionary computation. Using the GA’s theory and technology, the paper has designed a comprehensive
5、evaluation system.Through the use of specific genetic algorithm, the designed system can obtain from the evaluatio</p><p> Key Words: Artificial Intelligence;Genetic Algorithm;Comprehensive evaluation; Web
6、site performance</p><p><b> 目 錄</b></p><p><b> 1 前言1</b></p><p> 1.1課題的研究背景1</p><p> 1.1.1 人工智能簡介1</p><p> 1.1.2 遺傳算法的
7、研究背景1</p><p> 1.2 課題研究的目的與意義2</p><p> 1.2.1 研究目的2</p><p> 1.2.2 研究意義2</p><p> 1.3 課題的研究內(nèi)容和方法3</p><p> 1.4 論文內(nèi)容的組成3</p><p> 2
8、相關(guān)知識簡介4</p><p> 2.1 Java語言簡介4</p><p> 2.1.1 java環(huán)境變量的配置4</p><p> 2.1.2 安裝IDE5</p><p> 2.1.3 java編碼規(guī)范5</p><p> 2.1.4 一個簡單的java實例程序7</p>
9、<p> 2.2 數(shù)據(jù)庫知識簡介8</p><p> 2.3 遺傳算法簡介9</p><p> 2.3.1 概念簡介9</p><p> 2.3.2 求解步驟10</p><p> 3 系統(tǒng)分析與研究12</p><p> 3.1 可行性研究12</p>
10、<p> 3.2 需求分析12</p><p> 4 系統(tǒng)設(shè)計與實現(xiàn)14</p><p> 4.1 主要功能設(shè)計14</p><p> 4.1.1 初始化14</p><p> 4.1.2 初始化的主要過程14</p><p> 4.1.3 數(shù)據(jù)庫的設(shè)計:16</p
11、><p> 4.1.4 遺傳算法操作的實現(xiàn)17</p><p> 4.2 詳細(xì)設(shè)計思路18</p><p> 4.2.1 交叉操作和變異操作的選擇及實現(xiàn):18</p><p> 4.2.2 種群規(guī)模控制詳解20</p><p> 4.2.3 種群演化的終止24</p><p>
12、; 4.2.4 最終結(jié)果25</p><p> 5 系統(tǒng)測試26</p><p> 5.1 染色體變異測試錯誤!未定義書簽。</p><p> 5.2 染色體交叉測試錯誤!未定義書簽。</p><p> 5.3 數(shù)據(jù)庫連接的測試錯誤!未定義書簽。</p><p><b> 6 總
13、結(jié)30</b></p><p> 致 謝錯誤!未定義書簽。</p><p> 參 考 文 獻(xiàn)31</p><p><b> 1 前言</b></p><p> 1.1課題的研究背景</p><p> 1.1.1 人工智能簡介</p><
14、p> 人工智能是計算機科學(xué)中涉及研究、設(shè)計和應(yīng)用智能機器的一個分支。其近期的主要目標(biāo)在于研究用機器來模仿和執(zhí)行人腦的某些智力功能,并開發(fā)相關(guān)理論和技術(shù)。</p><p> 40多年來,人工智能獲得很大1發(fā)展,已引起眾多學(xué)科和不同專業(yè)背景學(xué)者們的日益重視,成為一門廣泛的交叉和前沿科學(xué)。近十年來,現(xiàn)代計算機的發(fā)展已能夠存儲極其大量的信息,進(jìn)行快速信息處理,軟件功能和硬件實現(xiàn)均取得長足進(jìn)步,使人工智能獲得進(jìn)一
15、步的應(yīng)用。盡管目前人工智能在發(fā)展過程中面臨不少爭論、困難和挑戰(zhàn),然而這些爭論是十分有益的,這些困難終將被解決,這些挑戰(zhàn)始終與機遇并存,并將推動人工智能的繼續(xù)發(fā)展。可以預(yù)言:人工智能的研究成果將能夠創(chuàng)造出更多更高級的智能“制品”,并使之在越來越多的領(lǐng)域超越人類智能;人工智能將為發(fā)展國民經(jīng)濟和改善人類生活作出更大貢獻(xiàn)。</p><p> 可以說,未來的各種機器設(shè)備將會變得更加智能化,未來的計算機將會是智能化的機器,
16、這些智能化設(shè)備將會給人們的生活帶來各種便利,讓人們體驗到更加簡便的生活?,F(xiàn)有的人工智能產(chǎn)品相對于即將到來的人工智能應(yīng)用可以說微不足道,但是它們預(yù)示著人工智能的未來。對人工智能更高層次的需求已經(jīng)并會繼續(xù)影響我們的工作、學(xué)習(xí)和生活。</p><p> 1.1.2 遺傳算法的研究背景</p><p> 20世紀(jì)60年代以來,如何模仿生物來建立功能強大的算法,進(jìn)而將它們運用于復(fù)雜的優(yōu)化問題,
17、越來越成為一個研究熱點。進(jìn)化計算正是在這一背景下孕育而生的。進(jìn)化計算包括遺傳算法、進(jìn)化策略、進(jìn)化編程和遺傳編程。</p><p> 人類不滿足于模仿生物進(jìn)化行為,希望能夠建立具有自然生命特征的人造生命和人造生命系統(tǒng)。對人工生命的研究,自1987年起取得了重要進(jìn)展。這是人工智能和計算智能的一個新的研究熱點。進(jìn)化計算為人工生命研究提供了計算理論和有效的開發(fā)工具。[1]</p><p> 1
18、.2 課題研究的目的與意義</p><p> 1.2.1 研究目的</p><p> 隨著互聯(lián)網(wǎng)的發(fā)展,以及計算機的普及,越來越多的人喜歡在互聯(lián)網(wǎng)上查找信息,休閑娛樂等等?;ヂ?lián)網(wǎng)上的網(wǎng)站眾多,但是人們往往喜歡那些界面精美,布局合理,交互性強的網(wǎng)站。在如此眾多的網(wǎng)站中采用什么算法來對它們進(jìn)行優(yōu)劣劃分是一個比較難的問題。本課題通過采用研究遺傳算法來對網(wǎng)站進(jìn)行綜合評價,從而實現(xiàn)智能綜合評價
19、的目的。</p><p> 1.2.2 研究意義</p><p> 通過本課題的研究,可以將遺傳算法的優(yōu)勢體現(xiàn)出來。在綜合評價的同時又能夠體現(xiàn)出智能化的思想,這樣能更好的符合人們大腦的評價思想和原則,具有一定的現(xiàn)實意義。在課題研究的同時,也讓我自己對人工智能的優(yōu)勢有了更進(jìn)一步的了解,對遺傳算法的使用有了更深的印象,提高了自己在這方面的能力。</p><p>
20、 1.3 課題的研究內(nèi)容和方法</p><p> 課題的主要內(nèi)容是設(shè)計一個系統(tǒng),讓其能夠體現(xiàn)出遺傳算法的有關(guān)思想,采用遺傳算法的思想來解決實際問題。在本課題中主要關(guān)注對算法的研究,關(guān)注如何使用算法來解決綜合評價系統(tǒng)的設(shè)計問題。</p><p> 由于這是初次使用遺傳算法來解決實際問題,所以自己在研究的過程中花了很長時間來確定模型、確定解決方法、盡量找出未知的問題。一開始自己的思路沒有
21、正確,并且按照這個錯誤的思路想了很久,以致將許多問題都復(fù)雜化了,致使自己在程序的設(shè)計進(jìn)展緩慢。然后在一次例行交談中和指導(dǎo)老師交流了一下,老師指出了我的錯誤,然后我自己仔細(xì)的想了一下,終于將那些復(fù)雜的問題化為了簡單,程序的進(jìn)展也逐漸有了起色。</p><p> 在課題研究過程中查閱了很多文檔和資料,網(wǎng)上的以及圖書館里的,也和指導(dǎo)老師討論了很多,收獲也很多。網(wǎng)上有很多遺傳算法方面的文獻(xiàn),閱讀這些文獻(xiàn),總結(jié)前人的知識
22、,對我的思路有很大的幫助。和老師面對面的交流可以更好的了解到自己哪里思路錯了,在向老師闡述自己思路的過程中也加深了自己對課題的理解,而老師適當(dāng)?shù)奶崾竞图m正也讓我的設(shè)計不至于走太多的彎路。</p><p> 1.4 論文內(nèi)容的組成</p><p> 論文的內(nèi)容主要由闡述研究過程中的思路、采用的方法原理組成及如何實現(xiàn)程序設(shè)計組成。程序設(shè)計部分將課題的功能思想實現(xiàn),在論文中只是將大概的部分
23、寫出來而已,更加詳細(xì)的要看程序的代碼和文檔。</p><p><b> 2 相關(guān)知識簡介</b></p><p> 2.1 Java語言簡介</p><p> Java,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計語言和java平臺的總稱。用Java實現(xiàn)的HotJava瀏覽器(支持Java apple
24、t)顯示了Java的魅力:跨平臺、動態(tài)的Web、Internet計算。從此,Java被廣泛接受并推動了Web的迅速發(fā)展,常用的瀏覽器現(xiàn)在均支持Java applet。</p><p> 近年來java變得非常流行。Java快速發(fā)展以及被廣泛接受都?xì)w功于它的設(shè)計特點,特別是它承諾一旦編寫了程序,在任何地方都可以運行。就像sun公司聲明的java語言白皮書一樣,java是簡單的、面向?qū)ο蟮?、分布式的、解釋型的、健?/p>
25、的、安全的、可移植的等等。Java是功能齊全的通用程序設(shè)計語言,可以開發(fā)可靠的、要求嚴(yán)格的應(yīng)用程序。現(xiàn)在,它不僅用于web程序設(shè)計,而且用于在服務(wù)器、臺式機和移動設(shè)備上開發(fā)跨平臺的獨立應(yīng)用程序。[2]</p><p> 2.1.1 java環(huán)境變量的配置</p><p> 1.安裝JDK,安裝過程中可以自定義安裝目錄等信息,例如我們選擇安裝目錄為D:\java\jdk1.5.0_08
26、;</p><p> 2.安裝完成后,右擊“我的電腦”,點擊“屬性”;</p><p> 3.選擇“高級”選項卡,點擊“環(huán)境變量”;</p><p> 4.在“系統(tǒng)變量”中,設(shè)置3項屬性,JAVA_HOME,PATH,CLASSPATH(大小寫無所謂),若已存在則點擊“編輯”,不存在則點擊“新建”;</p><p> 5.JAVA_H
27、OME指明JDK安裝路徑,就是剛才安裝時所選擇的路徑D:\java\jdk1.5.0_08,此路徑下包括lib,bin,jre等文件夾(此變量最好設(shè)置,因為以后運行tomcat,eclipse等都需要依*此變量);Path使得系統(tǒng)可以在任何路徑下識別java命令,設(shè)為:</p><p> %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin</p><p> CLAS
28、SPATH為java加載類(class or lib)路徑,只有類在classpath中,java命令才能識別,設(shè)為:</p><p> .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (要加.表示當(dāng)前路徑)</p><p> %JAVA_HOME%就是引用前面指定的JAVA_HOME;</p><p>
29、6.“開始”->;“運行”,鍵入“cmd”;</p><p> 7.鍵入命令“java -version”,“java”,“javac”幾個命令,出現(xiàn)畫面,說明環(huán)境變量配置成功。</p><p> 2.1.2 安裝IDE</p><p> Java開發(fā)工具是指為快速開發(fā)java程序提供一個集成開發(fā)環(huán)境(IDE)的軟件。編輯、編譯、調(diào)試和在線幫助都集成在
30、一個圖形用戶界面中。只需在一個窗口中輸入源代碼或打開已有的文件,然后點擊相應(yīng)按鈕、菜單選項或者使用功能鍵就可以編譯和運行源代碼。</p><p> 在本課題開發(fā)過程采用的是eclipse編譯器。這是一個免費的開發(fā)工具,只需將其從官網(wǎng)上下載下來,然后解壓就可以使用。</p><p> 2.1.3 java編碼規(guī)范</p><p><b> 1. 命名
31、規(guī)范</b></p><p><b> 1) 包的命名</b></p><p> 包的名字應(yīng)該都是由一個小寫單詞組成。</p><p> package com.neu.util;</p><p><b> 2) 類的命名 </b></p><p>
32、 類的名字必須由大寫字母開頭而其他字母都小寫的單詞組成,對于所有標(biāo)識符,其中包含的所有單詞都應(yīng)緊靠在一起,而且大寫中間單詞的首字母。</p><p> public class ThisAClassName{}</p><p> 3)變量的命名 變量的名字必須用一個小寫字母開頭。后面的單詞用大寫字母開頭</p><p> String userName;&l
33、t;/p><p> String thisAClassName; </p><p> 4) 常量的命名 </p><p> 常量的名字應(yīng)該都大寫,并且指出完整含義</p><p><b> 5)參數(shù)的命名 </b></p><p> 參數(shù)的名字必須和變量的命名規(guī)范一致。 </p
34、><p><b> 6)數(shù)組的命名 </b></p><p> 數(shù)組應(yīng)該總是用下面的方式來命名: </p><p> byte[] buffer;</p><p><b> 而不是: </b></p><p> byte buffer[];</p><
35、;p><b> 7)方法的參數(shù) </b></p><p> 使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字段一樣的名字</p><p><b> 2. 排版規(guī)范</b></p><p> 1) 關(guān)鍵詞和操作符之間加適當(dāng)?shù)目崭瘛?lt;/p><p> 2) 相對獨立的程序塊與塊之
36、間加空行。</p><p> 3) 較長的語句、表達(dá)式等要分成多行書寫。</p><p> 4) 若函數(shù)或過程中的參數(shù)較長,則要進(jìn)行適當(dāng)?shù)膭澐帧?lt;/p><p> 5) 方法與方法之間、成員變量與方法之間要加空行。</p><p> 6) 劃分出的新行要進(jìn)行適應(yīng)的縮進(jìn),使排版整齊,語句可讀。 </p><p
37、> 7) 長表達(dá)式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。</p><p> 8) 循環(huán)、判斷等語句中若有較長的表達(dá)式或語句,則要進(jìn)行適應(yīng)的劃分。</p><p> 9) 不允許把多個短語句寫在一行中,即一行只寫一條語句。</p><p> 10) 函數(shù)或過程的開始、結(jié)構(gòu)的定義及循環(huán)、判斷等語句中的代碼都要采用縮格。</p>
38、<p><b> 3.標(biāo)識符命名規(guī)范</b></p><p> Java語言中,為各種變量、方法和類等起的名字稱為標(biāo)識(identifier)。凡是自己可以起名字的地方都叫標(biāo)識符,都遵守標(biāo)識符的規(guī)則。</p><p> Java標(biāo)識符的命名規(guī)則:</p><p> 標(biāo)識符由字母、下劃線(_)、美元符($) ,數(shù)字組成, &
39、lt;/p><p> 標(biāo)識符應(yīng)以字母、下劃線(_)、美元符($) 開頭,不能以數(shù)字開頭。</p><p> Java標(biāo)識符大小寫敏感,長度無限制。</p><p> 見名知意,不能與關(guān)鍵字同名。</p><p> 2.1.4 一個簡單的java實例程序</p><p> public class HelloWor
40、ld{</p><p> public static void main(String[] args){</p><p> System.out.println(“Hello World!”);</p><p><b> }</b></p><p><b> }</b></p>
41、<p> 以上的java語句將在控制臺打印出如下字符:Hello World!</p><p> 2.2 數(shù)據(jù)庫知識簡介</p><p> 數(shù)據(jù)庫技術(shù)產(chǎn)生于20世紀(jì)60年代末70年代初,其主要目的是有效地管理和存取大量的數(shù)據(jù)資源。主要研究如何存儲,使用和管理數(shù)據(jù)。在應(yīng)用計算機進(jìn)行數(shù)據(jù)處理的技術(shù)發(fā)展過程中經(jīng)歷了三個階段:程序數(shù)據(jù)處理技術(shù)、文件數(shù)據(jù)處理技術(shù)、數(shù)據(jù)庫數(shù)據(jù)處理技
42、術(shù)。發(fā)展至今,所有的數(shù)據(jù)處理應(yīng)用系統(tǒng)都是采用數(shù)據(jù)庫數(shù)據(jù)處理技術(shù)實現(xiàn)的。[3]</p><p> 數(shù)據(jù)庫設(shè)計不是設(shè)計一個完整的數(shù)據(jù)庫管理系統(tǒng),而是根據(jù)一個給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)模型,利用數(shù)據(jù)庫管理系統(tǒng)建立數(shù)據(jù)庫應(yīng)用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足用戶對信息的使用要求。在對信息資源合理開發(fā)、管理的過程中,數(shù)據(jù)庫技術(shù)是最為有效的。</p><p> 數(shù)據(jù)庫設(shè)計一般分為以下六個階段:
43、需求分析;概念結(jié)構(gòu)設(shè)計;邏輯結(jié)構(gòu)設(shè)計;物理結(jié)構(gòu)設(shè)計;數(shù)據(jù)庫實施;數(shù)據(jù)庫運行和維護(hù)。</p><p> 需求分析階段的工作是詳細(xì)準(zhǔn)確地了解數(shù)據(jù)庫應(yīng)用系統(tǒng)的運行環(huán)境和用戶要求。進(jìn)行需求分析時首先需要確定系統(tǒng)的需要。</p><p> 概念結(jié)構(gòu)設(shè)計主要實現(xiàn)由現(xiàn)實世界到信息世界的抽象,建立起概念模型,通常采用E-R圖的方式表示出來。</p><p> 邏輯結(jié)構(gòu)設(shè)計是將
44、概念結(jié)構(gòu)轉(zhuǎn)換為某個DBMS所支持的數(shù)據(jù)模型。如將E-R如轉(zhuǎn)換為多張表。</p><p> 物理設(shè)計是根據(jù)使用計算機軟件硬件環(huán)境和數(shù)據(jù)庫管理系統(tǒng),確定數(shù)據(jù)庫表的結(jié)構(gòu),并進(jìn)行優(yōu)化,為數(shù)據(jù)模型選擇合理的存儲結(jié)構(gòu)和存取方法,決定存取路徑和分配存取空間等。</p><p> 數(shù)據(jù)庫實施是運用DBMS建立數(shù)據(jù)庫,創(chuàng)建各種對象,編制與調(diào)試應(yīng)用程序,錄入數(shù)據(jù),進(jìn)行試運行。[4]</p>
45、<p> 數(shù)據(jù)庫運行與維護(hù)就是當(dāng)一個數(shù)據(jù)庫投入運行后,進(jìn)行的修改調(diào)整。</p><p> 在本課題的程序中采用的是mysql數(shù)據(jù)庫,我在該數(shù)據(jù)庫中建立了一個名為bysj的數(shù)據(jù)庫,里面有一張表,tbl_bysj,該表中有三個字段:id,chromosome,output。具體的建表過程為:</p><p> create database bysj;</p>&
46、lt;p> create table tbl_bysj(id int(4) not null primary key auto_increment,chromosome varchar(500) not null,output double(12,2));</p><p> 數(shù)據(jù)庫的查詢語句為:</p><p> select * from table_name;</p&
47、gt;<p> select id,chromosome,output from tbl_bysj;</p><p> 數(shù)據(jù)庫的更改語句為:</p><p> update table_name set column_name=’new_value’;</p><p> update tbl_bysj set chromosome=’new_c
48、hromosome’,output=’new_output’where id=’id_value’;</p><p> 刪除數(shù)據(jù)庫中的所有數(shù)據(jù),但不刪除字段名:</p><p> delete * from tbl_bysj;</p><p> 2.3 遺傳算法簡介</p><p> 2.3.1 概念簡介</p>&
49、lt;p> 遺傳算法是模仿生物遺傳學(xué)和自然選擇機理,通過人工方式構(gòu)造的一類優(yōu)化搜索算法,是對生物進(jìn)化過程的一種數(shù)學(xué)仿真,是進(jìn)化計算的一種最重要的形式。</p><p> 遺傳算法就是模仿生物的進(jìn)化過程(即通過染色體之間的交叉和變異來完成), 將基本操作作用于群體, 從而得到新一代群體, 提高群體適應(yīng)環(huán)境的能力。計算開始時, 一定數(shù)目個體即種群隨機地初始化, 并計算每個個體的適應(yīng)度函數(shù), 便產(chǎn)生了第一代。
50、如果不滿足優(yōu)化準(zhǔn)則, 按適應(yīng)度選擇個體, 父代要求基因重組(交叉)而產(chǎn)生子代, 所有的子代按一定概率變異, 然后子代的適應(yīng)度又被重新計算, 子代被插入到種群中將父代取而代之, 構(gòu)成新一代, 循環(huán)這一過程一直到滿足優(yōu)化準(zhǔn)則為止 。</p><p> 簡單遺傳算法的遺傳操作主要有三種:選擇、交叉和變異。改進(jìn)的遺傳算法大量擴充了遺傳操作,以達(dá)到更高的效率。</p><p> 選擇操作也叫做復(fù)
51、制操作,根據(jù)個體的適應(yīng)度函數(shù)值所度量的優(yōu)劣程度決定它在下一代是被淘汰還是被遺傳。在課題的研究過程中在某些地方使用到了選擇操作。如在進(jìn)行下一次交叉操作前將部分優(yōu)良個體復(fù)制出來,將其獨立保留,然后再將所有個體進(jìn)行交叉操作,這樣既保留了優(yōu)良個體,又讓優(yōu)良個體與其它所有個體進(jìn)行了交叉操作,從而提高了種群的整體優(yōu)良水平。</p><p> 交叉操作的簡單方式是將被選擇出的兩個個體P1和P2作為父母個體,將兩者的部分碼值進(jìn)
52、行交換。課題研究過程中采用的方法是將兩條染色體選擇出來當(dāng)作父代染色體,然后隨機兩個數(shù)出來,這兩個數(shù)一大一小,然后根據(jù)這兩個數(shù)組成的區(qū)間來選擇染色體段:假設(shè)選擇出來的兩個數(shù)分別為20和200,則在父代染色體中,將處于20-200間的染色體段選擇出來與另一條染色體進(jìn)行交叉交換,組成了兩個子代新的染色體。交叉操作是遺傳算法區(qū)別于其他所以優(yōu)化算法的根本所在,如果從一個遺傳算法中去掉交叉操作,則其結(jié)果將不再是遺傳算法。[1] 交叉操作演示如下:&
53、lt;/p><p> 交叉結(jié)果為: 和 [5]</p><p> 變異操作的簡單方式是改變數(shù)碼串的某個位置上的數(shù)碼。課題研究過程中采用的也是類似這樣的方法。先選擇出某一條染色體,然后將該染色體的數(shù)碼進(jìn)行改變。</p><p> 編碼是遺傳算法要解決的首要問題。針對特殊問題,人們提出了其它編碼方法。例如:二進(jìn)制編碼,格雷碼編碼,實數(shù)編碼,符號編碼方法[6].<
54、/p><p> 適應(yīng)度函數(shù)又稱為評價函數(shù)。它為種群中每個可能的確定長度的特征字符串指定一個適應(yīng)值,它經(jīng)常是問題本身所具有的。適應(yīng)度函數(shù)必須有能力計算搜索空間中每個確定長度的特征字符串的適應(yīng)值。</p><p> 種群演化的目的是確保在后面的演化階段中算法的收斂。[7]</p><p> 在一般的遺傳算法操作中,交叉操作的概率要遠(yuǎn)遠(yuǎn)大于變異操作。</p>
55、<p> 2.3.2 求解步驟</p><p> 遺傳算法是一種基于空間搜索的算法,它通過自然選擇、遺傳、變異等操作以及達(dá)爾文適者生存的理論,模擬自然進(jìn)化過程來尋求問題的答案。因此,遺傳算法的求解過程也可看做是最優(yōu)化過程。遺傳算法并不能保證所得到的是最佳答案,但通過一定的方法,可以將誤差控制在容許的范圍內(nèi)。</p><p> 簡單遺傳算法的求解步驟如下:</p&
56、gt;<p><b> 初始化種群;</b></p><p> 計算種群上每個個體的適應(yīng)度值;</p><p> 按由個體適應(yīng)度值所決定的某個規(guī)則選擇將進(jìn)入下一代的個體;</p><p> 按概率Pc進(jìn)行交叉操作;</p><p> 按概率Pc進(jìn)行變異操作;</p><p>
57、; 若沒有滿足某種停止條件,則轉(zhuǎn)步驟2,否則進(jìn)入下一步;</p><p> 輸出種群中適應(yīng)度值最優(yōu)的染色體作為問題的滿意解或最優(yōu)解。[1]</p><p> 算法的停止條件簡單的有如下兩種:1.完成了預(yù)先給定的進(jìn)化代數(shù)則停止;2.種群中的</p><p> 優(yōu)個體在連續(xù)若干代沒有改進(jìn)或平均適應(yīng)度在連續(xù)若干代基本沒有改進(jìn)時停止。</p><
58、p> 3 系統(tǒng)分析與研究</p><p> 3.1 可行性研究</p><p> 由于本人從大三的時候開始接觸java,平時自己的程序開發(fā)使用的也是java,因此對java比較熟悉,所以用它來開發(fā)課題的程序。Java語言是一門面向?qū)ο笳Z言,有其獨特的地方,實際運用也非常廣泛,我認(rèn)為使用它來開發(fā)本課題的程序可以降低一定的開發(fā)難度。</p><p>
59、在程序的開發(fā)過程中有需要存儲數(shù)據(jù)的地方,因此,在設(shè)計程序的時候采用了mysql數(shù)據(jù)庫來存儲程序中的相關(guān)數(shù)據(jù)。平時自己在程序開發(fā)中運用的也是mysql數(shù)據(jù)庫,對其比較熟悉,使用起來也比較簡便,因此選擇它作為程序的存儲工具。</p><p> 人工智能的前景應(yīng)用非常廣泛,遺傳算法能夠給程序設(shè)計者帶來一種新的設(shè)計思路。遺傳算法有自己的特性,在某些領(lǐng)域如果運用遺傳算法可以獲得意想不到的效果。</p>&l
60、t;p> 3.2 需求分析</p><p> 在互聯(lián)網(wǎng)的飛速發(fā)展下,越來越多的人喜歡把時間花在瀏覽網(wǎng)頁上。每個網(wǎng)站的功能不同,設(shè)計的界面也不同,因此有人希望能夠?qū)@些網(wǎng)站進(jìn)行綜合評價。隨著人工智能的興起,很多領(lǐng)域都涉及到了人工智能的思想,很多產(chǎn)品的生產(chǎn)設(shè)計也運用到了人工智能的方法。以往很多綜合評價系統(tǒng)采用的大部分都是普通的算法,并沒有涉及到人工智能的思想。運用人工智能的方法來進(jìn)行綜合評價系統(tǒng)的設(shè)計是
61、一個新的策略,這是平時的一般系統(tǒng)中很少用到的,因此,本課題采用人工智能中的遺傳算法來研究解決網(wǎng)站綜合評價系統(tǒng)的設(shè)計問題,并從中反映出專家的思想。</p><p> 遺傳算法利用簡單的編碼技術(shù)和繁殖機制來表現(xiàn)復(fù)雜的現(xiàn)象,從而解決了非常困難的問題。它不受搜索空間的限制性假設(shè)的約束,不必要求諸如連續(xù)性、導(dǎo)數(shù)存在和單峰等假設(shè),能從離散的、多極值的、含有噪音的高維問題中以很大的概率找到全局最優(yōu)解。由于它固有的并行性,遺傳
62、算法非常使用于大規(guī)模并行計算。[1]</p><p> 在很多人的觀念里面人工智能是一個比較高深的領(lǐng)域,認(rèn)為人工智能的應(yīng)用應(yīng)該比較麻煩,而且運用起來也比較麻煩,覺得人工智能很難應(yīng)用到日常的一些事物中。其實不然。本課題中采用的遺傳算法屬于人工智能領(lǐng)域,我采用遺傳算法來解決網(wǎng)站的綜合評價問題,從一個比較容易理解的角度為大家揭開人工智能的神秘面紗,讓大家覺得其實人工智能并沒有離我們有多遙遠(yuǎn),它也可以應(yīng)用到一些并不高深
63、的領(lǐng)域。</p><p> 人工智能是一門工程技術(shù)學(xué)科,它的每一步發(fā)展都與人們采用的方法有很大的關(guān)系.傳統(tǒng)的人工智能研究方法,如符號主義,聯(lián)結(jié)主義,并沒有使計算機達(dá)到具有人類智能的水平.要想使機器具有人類智能,必須突破計算機的局限性,與其它學(xué)科聯(lián)手,開展思維科學(xué)的研究,創(chuàng)造新的研究方法和途徑.[8]</p><p> 與傳統(tǒng)搜索算法相對比,遺傳算法與更多的傳統(tǒng)優(yōu)化方法在本質(zhì)上有著不同之
64、處,主要表現(xiàn)在:</p><p> 遺傳算法將參數(shù)搜索問題轉(zhuǎn)化為參數(shù)空間編碼的搜索問題;</p><p> 遺傳算法從一組初始點,而不是從一個初始點,開始進(jìn)行搜索;</p><p> 遺傳算法只用到目標(biāo)函數(shù)信息,而無需其導(dǎo)數(shù)信息或其他輔助信息;</p><p> 遺傳算法采用隨機變換規(guī)則,而不是確定性的規(guī)則,來指導(dǎo)搜索。[9]<
65、/p><p> 綜合評價是指對被評價對象所進(jìn)行的客觀、公正、合理的全面評價。如果把被評價對象視為系統(tǒng)的話,那么,在若個系統(tǒng)中,如何確認(rèn)哪個系統(tǒng)的運行狀況好,哪個系統(tǒng)的運行狀況差,這是一類常見的綜合判斷問題.[10]</p><p> 4 系統(tǒng)設(shè)計與實現(xiàn)</p><p> 4.1 主要功能設(shè)計</p><p> 4.1.1 初始化&l
66、t;/p><p> 程序剛開始的時候種群初始化為200,即剛開始的時候染色體的數(shù)目為200條。每條染色體的長度為130,即每條染色體由130段組成,每段的值為0到200間的數(shù)字,從而每條染色體的包含390個字符。網(wǎng)站內(nèi)容由五個條目組成,分別為條目一到五;每個條目的評價等級也為五個,分別為很好、較好、好、一般、差。條目沒有進(jìn)行歸一化處理。權(quán)值的設(shè)定也沒有進(jìn)行歸一化處理。</p><p> 期
67、望輸出:評價內(nèi)容與權(quán)值的乘積即為期望輸出。</p><p><b> A * R = </b></p><p> {0.4,0.1,0.2,0.1,0},</p><p> {0.3,0.4,0.1,0.1,0.1},</p><p> 0.3,0.2,0.2,0.2,0.1* {0.2,0.2,0.5
68、,0,0.1},</p><p> {0.5,0.3,0.1,0.1,0},</p><p> {0.1,0.4,0.3,0.2,0}</p><p> = B(b1,b2,b3,b4,b5)</p><p> 4.1.2 初始化的主要過程</p><p> 種群的產(chǎn)生:初始種群的每條染色體均為系統(tǒng)自動產(chǎn)生
69、。</p><p> 由于隨機產(chǎn)生的數(shù)字在[0,99]之間的,因此有些數(shù)字的位數(shù)只有一位或者兩位,為了保證產(chǎn)生的數(shù)都為三位,所以需要對隨機產(chǎn)生的數(shù)字進(jìn)行處理。處理過程為將數(shù)值小于10的隨機數(shù)前面添加兩個零。這樣就可以保證每個染色體由130段組成,每段的長度都為3,也方便了隨后的數(shù)據(jù)處理。</p><p> 產(chǎn)生隨機數(shù):隨機數(shù)的產(chǎn)生是根據(jù)一定的范圍值來隨機產(chǎn)生的,這個過程可以調(diào)用java
70、中自帶的Math函數(shù)庫來完成。</p><p> 產(chǎn)生隨機的染色體:每條染色體的產(chǎn)生原理都是一樣的,都是通過產(chǎn)生一定數(shù)量的隨機數(shù),然后將這些隨機數(shù)組合起來,這樣就成為了一條染色體。由于隨機數(shù)是隨機產(chǎn)生的,所以也保證了每條染色體都是隨機產(chǎn)生的。</p><p> 在實際的運算操作中需要對染色體進(jìn)行分解,以獲得染色體段的數(shù)值。分解的原理為按段分解:將每條染色體按段截取,每段的長度固定,然后
71、將分解后的段轉(zhuǎn)為數(shù)值,從而獲得染色體上的段值,在染色體的交叉過程中要對染色體進(jìn)行段操作。</p><p><b> 染色體的編碼如下:</b></p><p> 4.1.3 數(shù)據(jù)庫的設(shè)計</p><p> 在程序的設(shè)計中需要存儲相關(guān)的染色體數(shù)據(jù),數(shù)據(jù)庫中的每條記錄有三個字段:id、chromosome、fitness。每次的操作不同,需
72、要做的數(shù)據(jù)存儲操作也不同。</p><p> 除了第一代操作的時候不需要讀取數(shù)據(jù)庫的數(shù)據(jù)之外,其它的每代操作都需要對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)讀取。將數(shù)據(jù)從數(shù)據(jù)庫讀取出來后要做相應(yīng)的設(shè)置:把每條染色體當(dāng)作一個對象,對該對象進(jìn)行相應(yīng)的數(shù)據(jù)存取操作,需要進(jìn)行的操作有設(shè)置id值,設(shè)置染色體的編碼值,設(shè)置相應(yīng)的適應(yīng)度值。這樣做的目的是方便隨后進(jìn)行的遺傳算法操作。</p><p> 在進(jìn)行交叉操作后,需要對
73、數(shù)據(jù)庫進(jìn)行大量的數(shù)據(jù)存儲。為了提高數(shù)據(jù)庫的存儲效率,采用了批處理的方式將數(shù)據(jù)存入到數(shù)據(jù)庫中:批處理的做法是將需要存儲到數(shù)據(jù)庫中的每個染色體對象先存儲到一個鏈表中,把這些染色體對象存完后再一并存入數(shù)據(jù)庫中,這樣可提高程序的運行效率。</p><p> 對染色體進(jìn)行變異操作的時候,由于是對單條染色體進(jìn)行變異,因此只需要將單條染色體存入數(shù)據(jù)庫就可以了:即將一條染色體對象的所有對象存入到數(shù)據(jù)庫中,包括id值,染色體編碼
74、,適應(yīng)度值。ER圖如下所示:</p><p> 4.1.4 遺傳算法操作的實現(xiàn)</p><p> 遺傳算法就是模仿生物的進(jìn)化過程(即通過染色體之間的交叉和變異來完成), 將基本操作作用于群體, 從而得到新一代群體, 提高群體適應(yīng)環(huán)境的能力。計算開始時, 一定數(shù)目個體即種群隨機地初始化, 并計算每個個體的適應(yīng)度函數(shù), 便產(chǎn)生了第一代。如果不滿足優(yōu)化準(zhǔn)則, 按適應(yīng)度選擇個體, 父代要求基
75、因重組(交叉)而產(chǎn)生子代, 所有的子代按一定概率變異, 然后子代的適應(yīng)度又被重新計算, 子代被插入到種群中將父代取而代之, 構(gòu)成新一代, 循環(huán)這一過程一直到滿足優(yōu)化準(zhǔn)則為止.[11]</p><p> 課題中主要的遺傳算法操作為選擇,交叉和變異。</p><p> 選擇操作也叫做復(fù)制操作,根據(jù)染色體的適應(yīng)度函數(shù)值判讀該染色體是否優(yōu)劣,以決定是否被淘汰或者繼續(xù)留在種群中。程序設(shè)計時將種群
76、中所有個體的信息從數(shù)據(jù)庫中選擇出來,從中選擇出一部分優(yōu)良的個體,將這些優(yōu)良個體備份,暫不進(jìn)行任何操作,而種群中仍然存在這部分個體,等到一代操作完成后,再將這部分優(yōu)良的個體插入種群中,從而形成了一個新的種群。選擇這部分優(yōu)良個體出來的原因是利用這些優(yōu)良個體,在種群不斷演化的演化過程中,提高種群的優(yōu)良個體的數(shù)量,使種群的優(yōu)良個體率上升,加快種群的進(jìn)化。</p><p> 交叉操作就是將兩個個體從種群中選擇出來作為父代
77、,將兩者的部分碼值進(jìn)行交叉互換,如下圖所示:</p><p><b> 交叉之后的結(jié)果為:</b></p><p> 具體的程序?qū)崿F(xiàn)過程為將兩個個體從種群中選出來作為父代,程序隨機出兩個整數(shù),這兩個整數(shù)作為編碼交換位置的起點和終點,把處于這兩個標(biāo)記點之間的編碼互換,互換之后的兩個個體成為了新的個體,這兩個新個體都擁有對方之前的染色體編碼,從而達(dá)到了交叉操作的效果。
78、最后再將新的個體插入到種群中。如此反復(fù),將種群中的所有個體都交叉之后就形成了一個新的種群。若種群的個數(shù)為單數(shù),則種群中最后一個個體不用進(jìn)行交叉操作,之間將其插入到新的種群中。</p><p> 在變異操作的算法思想主要是將染色體的編碼進(jìn)行轉(zhuǎn)變,程序中的思路為如果染色體中含有字符0,則將所有字符0轉(zhuǎn)變?yōu)?,如果沒有字符0,則將字符1轉(zhuǎn)變?yōu)樽址?,如果沒有字符1,則選擇字符2,如果字符2沒有,則選3,如果都沒有,則
79、選字符4,并將字符4轉(zhuǎn)變?yōu)?。假設(shè)如果每個隨機數(shù)是在0到500之間的,那么0,1,2,3,4這些字符肯定有。交叉操作的實現(xiàn)如下所示:</p><p><b> 執(zhí)行變異操作之后:</b></p><p> 4.2 詳細(xì)設(shè)計思路</p><p> 4.2.1 適應(yīng)度和適應(yīng)度函數(shù)</p><p> 為了體現(xiàn)染色體的
80、適應(yīng)能力,引入了對問題中的每一個染色體都能進(jìn)行度量的函數(shù),叫做適應(yīng)度函數(shù)。通過適應(yīng)度函數(shù)來決定染色體的優(yōu)劣程度,它體現(xiàn)了自然進(jìn)化中的優(yōu)勝劣汰原則。若一個染色體與問題的最優(yōu)解染色體之間的差距較小,則對應(yīng)的適應(yīng)度函數(shù)值之差就較小,否則就較大。適應(yīng)度函數(shù)如下:</p><p> 該值就是該染色體的適應(yīng)度值。</p><p> 4.2.2 交叉操作和變異操作的選擇及實現(xiàn)流程</p>
81、<p> 對交叉和變異操作的選擇是通過一個隨機數(shù)的大小來決定的。隨機出來一個數(shù),判斷這個數(shù)值,如果這個數(shù)處于某個范圍,則對其進(jìn)行交叉操作,反之,則進(jìn)行變異操作。每一代染色體中要么將所有的染色體進(jìn)行交叉操作,要么將染色體中的某一部分染色體進(jìn)行變異操作。對哪條染色體進(jìn)行變異操作是通過產(chǎn)生一個隨機數(shù)來決定的,這個隨機數(shù)不大于種群數(shù)量的數(shù)值。變異后將該染色體插入原來在數(shù)據(jù)庫中的位置,如此就完成了一代操作。交叉操作進(jìn)行前先選擇出一
82、部分優(yōu)良的個體,將這部分個體進(jìn)行備份,暫不進(jìn)行任何操作;然后將種群中的所有個體進(jìn)行交叉操作,每個個體都是與相鄰個體進(jìn)行交叉操作。交叉操作結(jié)束后,再將之前選擇出來的優(yōu)良個體插入種群中,如此,就完成了一次交叉操作。流程圖如下圖所示:</p><p><b> 交叉變異操作流程圖</b></p><p> 4.2.3 種群規(guī)模控制詳解</p><p&
83、gt; 為了保證種群的整體質(zhì)量,先將種群中適應(yīng)度值符合某一特定范圍的染色體備份出來,然后再對所有染色體進(jìn)行交叉操作。交叉操作結(jié)束后再把選出來的優(yōu)良的備份過的染色體一起加到種群中,這樣可以提高種群的質(zhì)量。</p><p> 對于如何進(jìn)行種群的規(guī)??刂疲约阂策M(jìn)行了多種嘗試。</p><p> 嘗試一:由于在交叉操作進(jìn)行之前會先將一批優(yōu)良染色體進(jìn)行保存,因此,在種群演化多次之后,種群的數(shù)
84、目會不斷的增長,而隨著種群的擴大,程序的運行變得越來越慢,因此,有必要對種群的數(shù)目進(jìn)行控制,以提高程序的運行速率。當(dāng)種群數(shù)目達(dá)到上限后,將所有適應(yīng)度值小于某一范圍值的染色體進(jìn)行淘汰,如,剛開始的時候該范圍值為1.0,當(dāng)種群數(shù)目第一次達(dá)到上限時,將所有機器輸出與期望輸出之差小于0.5( 即,1.0除以2)的染色體全部淘汰,并且,將范圍值稍微的縮小,即,1.0減去某一個比較小的值。如此反復(fù),從而達(dá)到種群數(shù)目控制的目的。但是在實際的程序運行過
85、程中發(fā)現(xiàn),該方法并不能很好的達(dá)到縮小種群規(guī)模的目的。我分析了一下原因,由于在前面的演化過程中,種群中的每個染色體的機器輸出都很大,導(dǎo)致大部分染色體的機器輸出與期望輸出之差都小于某個值,因此,淘汰的數(shù)目并不可觀,種群的數(shù)量并沒有明顯的改變。顯然,采取這種方法的話,程序的運行依然會很慢,因此,有必要采取另一種方法。</p><p> 嘗試二:鑒于大部分染色體的機器輸出都比較大,可以對種群的數(shù)目進(jìn)行硬性的削減。假如種
86、群大于某個上限值時,就將種群的數(shù)目削減到初始時的大小。具體的做法:由于給種群設(shè)定了一個固定的上限值,當(dāng)種群的個體超過上限之后就按照適應(yīng)度值將種群的個體進(jìn)行優(yōu)勝劣汰,直至種群的數(shù)目恢復(fù)到初始時的規(guī)模。這樣既可以減少種群的數(shù)目,又將種群的整體機器輸出值提升,加快了種群的演化。</p><p> 4.2.4 種群訓(xùn)練過程</p><p> 種群在演化過程中有一個訓(xùn)練過程,訓(xùn)練過程如下:有一定
87、數(shù)量的訓(xùn)練樣本,記為R。對于每一個樣本Ri,根據(jù)期望權(quán)值,可得出一個期望輸出,根據(jù)一個個體,可得出一個訓(xùn)練輸出;假設(shè)有n個樣本,則可得出n個期望輸出和n個訓(xùn)練輸出。根據(jù)歐式定理,</p><p><b> di = ,</b></p><p> 其中bi為訓(xùn)練輸出,ai為期望輸出,di為差值。</p><p> 將所有di相加,然后求平
88、均值,這個平均值就是對應(yīng)的個體的適應(yīng)度函數(shù)值,該值用來衡量該個體的優(yōu)劣。</p><p> 假設(shè)有一個訓(xùn)練樣本如下所示:</p><p> 0.2, 0.2, 0.4, 0.2, 0 </p><p> 0.3, 0.4, 0.1, 0.1, 0.1</p><p> 0.2, 0.2, 0.5, 0, 0.1</p>
89、<p> 0.5, 0.3, 0.1, 0.1, 0 </p><p> 0.1, 0.4, 0.3, 0.2, 0</p><p> 根據(jù)期望權(quán)值,a={0.3,0.2,0.2,0.2,0.1},可得出一個期望輸出,記為A:</p><p> A={a1,a2,a3,a4,a5}={0.22, 0.22, 0.21, 0.25, 0.21}。&l
90、t;/p><p><b> 根據(jù)一個個體,</b></p><p> b=077055090098055068086062056022098...5206608505409205003003409</p><p> 可得出一個機器輸出,記為B:</p><p> B={b1,b2,b3,b4,b5}={0.13,0.
91、26,0.45,0.67,0.55}</p><p> 根據(jù)歐式公式,可得出在該樣本下,某個體對應(yīng)的一個適應(yīng)度函數(shù)值:</p><p> d = = 0.60</p><p> 將該個體及期望權(quán)值分別與所有訓(xùn)練樣本訓(xùn)練可得出一批訓(xùn)練輸出和期望輸出,然后根據(jù)歐式公式來比較這兩組輸出,可得出一批適應(yīng)度值,將這些適應(yīng)度值取加權(quán)平均值,則該值就是該個體的對應(yīng)的適應(yīng)度
92、值。</p><p><b> 具體流程圖如下:</b></p><p><b> 訓(xùn)練樣本流程圖</b></p><p> 當(dāng)種群中所有個體都經(jīng)過如上的訓(xùn)練后,每個個體都有一個相應(yīng)的適應(yīng)度值,適應(yīng)度值越小說明該染色體越接近期望輸出。</p><p> 4.2.5 種群演化的終止</p
93、><p> 隨著程序的運行,種群的不斷演化,整體的機器輸出會不斷的提高,從而種群的適應(yīng)度函數(shù)值越來越小,當(dāng)這部分適應(yīng)度值對應(yīng)的個體數(shù)量占總數(shù)的比重很大的時候,可以認(rèn)為該種群的演化已經(jīng)達(dá)到穩(wěn)定,可將種群中機器輸出最接近期望輸出的,即適應(yīng)度函數(shù)值最小的染色體作為最優(yōu)染色體。具體說來種群的終止的條件如下:1,代數(shù)達(dá)到1000代 2,優(yōu)良個體所占的百分比達(dá)到某一值 3,范圍值小于最低標(biāo)準(zhǔn) 4,當(dāng)某種群的最佳個體的適應(yīng)度
94、值一直保持若干代不變,并且具有該適應(yīng)度值的染色體占種群的比重很大,則終止種群演化。流程圖如下所示:</p><p><b> 種群演化終止流程圖</b></p><p> 4.2.6 獲取最佳個體</p><p> 種群演化終止后,讀取數(shù)據(jù)庫中的所有個體的數(shù)據(jù)。將這些個體的適應(yīng)度值進(jìn)行比較,比較適應(yīng)度值的大小,選擇適應(yīng)度值最小的個體作為最
95、佳結(jié)果,用來表示這個種群的最優(yōu)解。</p><p><b> 最佳個體選擇流程圖</b></p><p> 例如,在一次種群演化結(jié)束后,得出了一批個體,如下所示:</p><p> 如上,若適應(yīng)度值0.05為最小值,則選擇該值所對應(yīng)的個體作為種群中的最佳個體。</p><p><b> 5 系統(tǒng)測試&
96、lt;/b></p><p> 系統(tǒng)測試的主要目的是根據(jù)選擇出來的最佳染色體,將該染色體與一批測試樣本進(jìn)行測試,過程類似于種群演化過程中的個體訓(xùn)練。根據(jù)一個樣本,可得出最佳染色體與之相應(yīng)的機器輸出bi;根據(jù)該樣本,可得出期望權(quán)值與之相應(yīng)的期望輸出ai。將所有測試樣本使用完之后,可得出一批機器輸出bi以及相應(yīng)的期望輸出ai。根據(jù)歐式公式,由bi和ai 可得出一個適應(yīng)度值,判斷該值是否滿足某一范圍,若滿足,則
97、說明該染色體體現(xiàn)了專家的評價思想,達(dá)到了預(yù)期的效果;若不滿足,則說明該染色體沒有體現(xiàn)專家的思想,沒有模擬出專家的評判思想。</p><p> 假設(shè)有十個測試樣本,則根據(jù)期望權(quán)值,a={0.3,0.2,0.2,0.2,0.1},可得出十個專家輸出,記為A,結(jié)果如下所示:</p><p> 若種群中的最佳個體為b,其編碼為:</p><p> b = 057012
98、06102908608609203000...18092078068081076</p><p> 對應(yīng)的測試輸出如下所示:</p><p><b> 測試輸出的結(jié)果圖</b></p><p> 根據(jù)歐式公式可得出對應(yīng)的適應(yīng)度值:</p><p><b> di= </b></p&g
99、t;<p> 將所有測試樣本都進(jìn)行測試后,將適應(yīng)度值進(jìn)行加權(quán)平均,作為最終的結(jié)果,結(jié)果輸出如下所示:</p><p><b> 適應(yīng)度值</b></p><p> 從這個適應(yīng)度值可以看出,該適應(yīng)度滿足誤差范圍[0,0.1],說明該個體符合要求,較接近期望權(quán)值,能夠符合專家的評判思想。</p><p> 具體的程序流程如下圖
100、所示:</p><p><b> 6 總結(jié)</b></p><p> 經(jīng)過一段時間的資料收集和研究,對課題的認(rèn)識有了更進(jìn)一步的加深,程序的思路也逐漸浮現(xiàn)出來。剛開始的時候自己對課題沒能正確的理解,使得課題的進(jìn)度變得緩慢。然后自己花了很多時間反復(fù)理解,逐漸把握住了課題的思路。</p><p> 剛開始的時候覺得數(shù)據(jù)庫不需要用到。隨著程序的
101、框架慢慢搭建好后,發(fā)現(xiàn)如果采用數(shù)據(jù)庫存儲相關(guān)的數(shù)據(jù),將會降低程序設(shè)計的難度。因為有了數(shù)據(jù)庫,我就不必考慮該采用說明數(shù)據(jù)結(jié)構(gòu)來存儲數(shù)據(jù),降低了復(fù)雜度。采用數(shù)據(jù)庫可以將數(shù)據(jù)的存儲和程序的實現(xiàn)進(jìn)行分離,這兩塊可以分開處理,使得程序的設(shè)計變的更加清晰,而且便于程序的維護(hù)和更改。</p><p> 早期的時候我的模型為一個三層結(jié)構(gòu),因此,就有兩層的權(quán)值,當(dāng)時我的思路是每一層都用一條染色體來表示權(quán)值,從而我在進(jìn)行程序設(shè)計的
102、時候發(fā)現(xiàn),這樣做很麻煩,因為我需要將每一層的染色體進(jìn)行追蹤標(biāo)記,因為這兩層的染色體是有一定的聯(lián)系的。底層為輸入層,輸入層的輸入值和第一層的染色體的權(quán)值相乘并求和之后得到了第一層的輸入值,然后第一層的輸入值與第二層的輸入值進(jìn)行相乘求和,從而得到了一個機器輸出。在這個過程中,我需要將第一層、第二層的染色體與機器輸出聯(lián)系起來,因為如果機器輸出不合適的話就得進(jìn)行相應(yīng)的操作,或淘汰或變異等,就必須得把這兩層的染色體都標(biāo)記追蹤,否則無法進(jìn)行相應(yīng)的操
103、作,這無疑增加了程序設(shè)計的難度。聽了老師的建議之后,我只須用一條染色體來記錄第一層和第二層的權(quán)值,從而免去了很多追蹤標(biāo)記的操作,簡便了很多。這么一改動之后課題有了較快的進(jìn)展。</p><p> 隨著對課題的深入研究,加深了對遺傳算法的理解,對遺傳算法的應(yīng)用有了更好的認(rèn)識。今后如果遇到一些相似的問題,會考慮采用遺傳算法的思想來解決。</p><p> 通過對課題進(jìn)行程序設(shè)計,也加深了自己
104、對java語言理解。在程序?qū)崿F(xiàn)過程中,用到了一些自己沒有用過的技術(shù),自己也嘗試去運用一些新的東西來鍛煉自己,這些東西在自己以前的程序中都未曾用到過,這對于自己而言也算是一個考驗,而我也從中獲得了提高。</p><p><b> 參 考 文 獻(xiàn) </b></p><p> [1] 《人工智能及其應(yīng)用》蔡自興 徐光佑 清華大學(xué)出版設(shè),2003年9月第三版</p&
105、gt;<p> [2] 《introduce to java programming》 sixth edition,機械工業(yè)出版社,(美)Y.Danniel Liang</p><p> [3] 數(shù)據(jù)庫技術(shù)簡介[EB/OL]. 紫欣. http://www.docin.com/p-10328088.html,2009-03-11/2010-03-18</p><p>
106、 [4] 《數(shù)據(jù)庫原理與應(yīng)用》張俊玲主編,清華大學(xué)出版社,2005年9月第一版</p><p> [5] Genetic Algorithms and Evolutionary Computing ,Darrell Whitley,Computer Science Department,Colorado State University Fort Collins,CO 80523</p>&
107、lt;p> [6] 遺傳算法研究綜述,吉根林,計算機應(yīng)用與軟件,2004年2月第21卷第二期</p><p> [7] Dunwei Gong.Adaptive interactive genetic algorithms with individual interval fitness[J]. Progress in Natural Science.2008(18):359-365</p>
108、<p> [8] 人工智能研究方法及途徑,熊才權(quán),湖北工業(yè)大學(xué)計算機學(xué)院,艦船電子工程2005年3期</p><p> [9] 利用遺傳算法進(jìn)行機械優(yōu)化,馮錦春 楊林建,四川工程職業(yè)技術(shù)學(xué)院學(xué)報,2007年第六期</p><p> [10] 《綜合評價理論,方法及應(yīng)用》郭亞軍 科學(xué)出版社,2007年5月第一版:1</p><p> [11] 基
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于ga的綜合評價系統(tǒng)設(shè)計【畢業(yè)設(shè)計+開題報告+文獻(xiàn)綜述】
- 基于ga的綜合評價系統(tǒng)設(shè)計【開題報告】
- 基于ga的綜合評價系統(tǒng)設(shè)計【文獻(xiàn)綜述】
- 基于ann的綜合評價系統(tǒng)的設(shè)計【畢業(yè)設(shè)計】
- 基于ann的綜合評價系統(tǒng)的設(shè)計【畢業(yè)設(shè)計+開題報告+文獻(xiàn)綜述】
- 畢業(yè)設(shè)計---畢業(yè)設(shè)計課題綜合管理系統(tǒng)
- 畢業(yè)設(shè)計---畢業(yè)設(shè)計課題綜合管理系統(tǒng)
- 綜合布線系統(tǒng)設(shè)計的畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---畢業(yè)設(shè)計課題綜合管理系統(tǒng).doc
- 沿海溢油災(zāi)害綜合評價【畢業(yè)設(shè)計】
- 畢業(yè)設(shè)計----基于web的畢業(yè)設(shè)計課題系統(tǒng)
- 教師評價系統(tǒng)的設(shè)計和實現(xiàn)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計——基于web的綜合實習(xí)管理系統(tǒng)的設(shè)計與實現(xiàn)
- 畢業(yè)設(shè)計---基于web的畢業(yè)設(shè)計選題管理系統(tǒng)
- 基于ga的二維迷宮解決方案設(shè)計【畢業(yè)設(shè)計】
- 畢業(yè)設(shè)計---基于web的畢業(yè)設(shè)計課題系統(tǒng)設(shè)計及實現(xiàn)
- 畢業(yè)設(shè)計---某機庫綜合布線系統(tǒng)設(shè)計
- 基于web的畢業(yè)設(shè)計管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 基于bs模式的學(xué)生綜合素質(zhì)測評系統(tǒng)-畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--綜合布線系統(tǒng)設(shè)計與實現(xiàn)
評論
0/150
提交評論