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