版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE基于Matlab的遺傳算法研究及仿真姓名:學(xué)號(hào):學(xué)院:機(jī)電學(xué)院指導(dǎo)教師:日期:2016-7-20
摘要本文首先介紹了遺傳算法的基本思想、遺傳算法的構(gòu)成要素、遺傳算法的特點(diǎn)、遺傳算法的基本模型、遺傳算法的應(yīng)用情況及今后的研究方向等等的內(nèi)容。之后是基于Matlab7.0下的遺傳算法求解函數(shù)最值問題。本人選擇了函數(shù)優(yōu)化這個(gè)應(yīng)用領(lǐng)域,按照遺傳算法的步驟,即編碼、解碼、計(jì)算適應(yīng)度(函數(shù)值)、選擇復(fù)制運(yùn)算、交叉運(yùn)算和變異運(yùn)算,對(duì)函數(shù)進(jìn)行求解最值。第三部分:對(duì)遺傳算法求函數(shù)最值問題的改進(jìn)。這部分主要針對(duì)本文第二部分進(jìn)行改進(jìn),通過改變基本遺傳算法運(yùn)行參數(shù)值,如改變交叉概率Pc值和變異概率Pm值,從而使最優(yōu)值更加接近相對(duì)標(biāo)準(zhǔn)下函數(shù)的最值。關(guān)鍵詞:遺傳算法適應(yīng)度交叉概率變異概率StudyandApplicationofGeneticAlgorithmAbstract:Firstly,theoutlineoftheGeneticArithmetic,mainlyintroducedtheGeneticArithmetic’smentality、elements、specialty、fundamentalmodel、appliedsituationanddirectionofthefollowingresearchandsoon.Secondly,theproblemofsolvingfunctions’maximalandminimumvalueoftheGeneticArithmeticonthebasicofMatlab7.0.Asanewoptimizedmethod,usedwidelyinsomeaspects,suchascomputingandscience、modelidentity、intelligenceobstaclesdiagnoses,itisfittosolvetheproblemsofcomplicatednonlinearandmultidimensionedspacetofindouttheoptimalvalue,whichappliedwidelyinrecentyears.Ichoosefunctionsperfectingandaccordingtoitssteps:coding,decoding,workingtheadaptivedegree(functionvalue),selectivereproductiveoperation,acrossoperation,differentiationoperationandworkingoutthemaximalandminimumvalue.Thirdly,bettermentofusingtheGeneticArithmetictogetfunctions’maximalandminimumvalue.ThispartmakeuseofmethodthatchangingthebasalGeneticArithmetictomakemaximalandminimumvalueapproachingtheonethatfromoppositestandard,suchasachangeofprobabilityofacrossvaluePcanddifferentiationvaluePm.Keywords:GeneticAlgorithm;Theadaptivedegree;ProbabilityofCrossover;ProbabilityofMutationPAGE11前言生命科學(xué)與工程科學(xué)的相互交叉、相互滲透和相互促進(jìn)是近代科學(xué)技術(shù)發(fā)展的一個(gè)顯著特點(diǎn),而遺傳算法的蓬勃發(fā)展正體現(xiàn)了科學(xué)發(fā)展的這一特征和趨勢(shì)。遺傳算法(GeneticAlgorithmGA),是模擬達(dá)爾文的遺傳選擇和自然淘汰的生物進(jìn)化過程的計(jì)算模型,它是由美國(guó)Michigan大學(xué)的J.Holland教授于1975年首先提出的。J.Holland教授和他的研究小組圍繞遺傳算法進(jìn)行研究的宗旨有兩個(gè):一是抽取和解釋自然系統(tǒng)的自適應(yīng)過程,二是設(shè)計(jì)具有自然系統(tǒng)機(jī)理的人工系統(tǒng)。毫無疑問,J.Holland教授的研究無論對(duì)自然系統(tǒng)還是對(duì)人工系統(tǒng)都是十分有意義的。眾所周知,在人工智能領(lǐng)域中,有不少問題需要在復(fù)雜而龐大的搜索空間中尋找最優(yōu)解或準(zhǔn)最優(yōu)解。因此,研究能在搜索過程中自動(dòng)獲取和積累有關(guān)搜索空間的知識(shí),并自適應(yīng)地控制搜索過程,從而得到最優(yōu)解或準(zhǔn)最優(yōu)解的通用搜索算法一直是令人矚目的課題。遺傳算法就是這種特別有效的算法。它的主要特點(diǎn)是簡(jiǎn)單、通用、魯棒性強(qiáng),適用于并行分布處理,應(yīng)用范圍廣。盡管遺傳算法本身在理論和應(yīng)用方法上仍有許多待進(jìn)一步研究的問題,但它在組合優(yōu)化問題求解、自適應(yīng)控制、規(guī)劃設(shè)計(jì)、機(jī)器學(xué)習(xí)和人工生命等領(lǐng)域的應(yīng)用中已發(fā)展現(xiàn)了其特色和魅力。2遺傳算法概述2.1生物進(jìn)化理論和遺傳學(xué)的基本知識(shí)在介紹遺傳算法之前,有必要了解有關(guān)的生物進(jìn)化理論和遺傳學(xué)的基本知識(shí)。達(dá)爾文的生物進(jìn)化論告訴我們,“適者生存,優(yōu)勝劣汰”。在生物自然環(huán)境中,生物種群的自然繁衍,生存,發(fā)展,最終取決于它對(duì)自然環(huán)境的適應(yīng)能力。當(dāng)一個(gè)種群相對(duì)其他種群,對(duì)周圍的環(huán)境能夠顯示出良好的適應(yīng)能力,它將在生物競(jìng)爭(zhēng)中處于優(yōu)勢(shì)地位,獲取較大的生存機(jī)會(huì),反之,該種群則趨向于消亡。所以,一個(gè)種群的優(yōu)異的適應(yīng)能力是該種群得以繁衍發(fā)展的根本。從達(dá)爾文的進(jìn)化論我們可以看出,生物環(huán)境對(duì)生物的進(jìn)化主要通過三個(gè)途徑來進(jìn)行:選擇,交叉和變異。遺傳算法是一種模擬生物進(jìn)化過程的學(xué)習(xí)方法,它操作的對(duì)象是由多個(gè)個(gè)體構(gòu)成的種群,通過對(duì)種群中的成員模擬生物進(jìn)化的方式來產(chǎn)生下一代種群,新種群總是在舊種群的基礎(chǔ)上獲得改進(jìn)和提高,周而復(fù)始,從而使得種群的整體質(zhì)量朝著優(yōu)良的方向發(fā)展。由于遺傳算法是借鑒生物進(jìn)化的思想,所以,遺傳算法仍然沿用生物學(xué)中的一些術(shù)語。染色體:它是遺傳算法中運(yùn)行的最基本的單位,是特定問題在算法中的表現(xiàn)形式,一般由二進(jìn)制的數(shù)串所組成;基因:它是染色體的最小組成單位,在二進(jìn)制數(shù)串中它由一個(gè)數(shù)位來表示;基因片:多個(gè)基因構(gòu)成基因片;種群:種群是由多個(gè)染色體構(gòu)成的集合,它的數(shù)目稱之為種群規(guī)模;適應(yīng)度:適應(yīng)度反映了染色體所蘊(yùn)涵的問題解質(zhì)量的優(yōu)劣,一般來說,染色體的適應(yīng)度是一個(gè)非負(fù)數(shù);適應(yīng)度函數(shù):染色體到適應(yīng)度之間的映射關(guān)系;選擇:遺傳算子之一,是算法基于適應(yīng)度對(duì)染色體進(jìn)行優(yōu)勝劣汰的操作過程;交叉:遺傳算子之一,是算法產(chǎn)生新個(gè)體的途徑之一,又稱之為基因重組;變異:遺傳算子之一,是算法產(chǎn)生新個(gè)體的途徑之一,是小概率發(fā)生事件。遺傳算法所借鑒的生物學(xué)基礎(chǔ)就是生物的遺傳、變異和進(jìn)化。遺傳世間的生物從其父代繼承特性或性狀,這種生命現(xiàn)象就稱為遺傳。生物的遺傳方式有以下三個(gè):(1)復(fù)制生物的主要遺傳方式是復(fù)制。遺傳過程中,父代的遺傳物質(zhì)DNA被復(fù)制到子代。即細(xì)胞在分裂時(shí),遺傳物質(zhì)DNA通過復(fù)制而轉(zhuǎn)移到新生的細(xì)胞中,新細(xì)胞就繼承了舊細(xì)胞的基因。(2)交叉有性生殖生物在繁殖下一代時(shí),兩個(gè)同源染色體之間通過交叉而重組,亦即在兩個(gè)染色體的某一相同位置處DNA被切斷,其前后兩串分別交叉組合而形成兩個(gè)新的染色體。(3)變異在進(jìn)行細(xì)胞復(fù)制時(shí),雖然概率很小,僅僅有可能產(chǎn)生某些復(fù)制差錯(cuò),從而使DNA發(fā)生某種變異,產(chǎn)生出新的染色體。這些新的染色體表現(xiàn)出新的性狀。生物的不同品種都屬于變異,在豐富多彩的生物界中,蘊(yùn)含著形形色色的變異現(xiàn)象。在這些變異現(xiàn)象中,有的僅僅是由于環(huán)境因素的影響造成的,并沒有引起生物體內(nèi)的遺傳物質(zhì)的變化,因而不能夠遺傳下去,屬于不遺傳的變異。有的變異現(xiàn)象是由于生殖細(xì)胞內(nèi)的遺傳物質(zhì)的改變引起的,因而能夠遺傳給后代,屬于可遺傳的變異。敵酋上的生物,都是經(jīng)過長(zhǎng)期進(jìn)化而形成的。根據(jù)達(dá)爾文的自然選擇學(xué)說,地球上的生物具有很強(qiáng)的繁殖能力。在繁殖過程中,大多數(shù)生物通過遺傳,使物種保持相似的后代;部分生物由于變異,后代具有明顯差別,甚至形成新物種。正是由于生物的不斷繁殖后代,生物數(shù)目大量增加,而自然界中生物賴以生存的資源卻是有限的。因此,為了生存,生物就需要競(jìng)爭(zhēng)。生物在生存競(jìng)爭(zhēng)中,根據(jù)對(duì)環(huán)境的適應(yīng)能力,適者生存,不適者消亡。自然界中的生物,就是根據(jù)這種優(yōu)勝劣汰的原則,不斷地進(jìn)行進(jìn)化。2.2遺傳算法的基本思想遺傳算法實(shí)質(zhì)上是一種繁衍、監(jiān)測(cè)和評(píng)價(jià)的迭代算法。它一般要包含以下幾個(gè)處理步驟:(1)對(duì)問題的解進(jìn)行編碼,即用染色體表示問題的可能潛在解,生成經(jīng)過編碼的初始種群,適應(yīng)度函數(shù)因優(yōu)化問題的目標(biāo)函數(shù)而定;(2)根據(jù)適應(yīng)度大小挑選個(gè)體進(jìn)行遺傳操作;(3)按照適者生存和優(yōu)勝劣汰的原理逐代演化,得到問題的最優(yōu)解或近似最優(yōu)解。每個(gè)個(gè)體在種群演化過程中都被評(píng)價(jià)優(yōu)劣并得到其適應(yīng)度值,個(gè)體在選擇、交叉以及變異算子的作用下向更高的適應(yīng)度進(jìn)化以達(dá)到尋求問題最優(yōu)解的目標(biāo)。2.3遺傳算法的構(gòu)成要素遺傳算法中包含五個(gè)基本要素,即染色體的編碼方法、適應(yīng)度函數(shù)、遺傳算子、基本遺傳算法運(yùn)行參數(shù)及約束條件的處理。每個(gè)要素對(duì)應(yīng)不同的環(huán)境有各種相應(yīng)的設(shè)計(jì)策略和方法,而不同的策略和方法決定了相應(yīng)的遺傳算法具有不同的特征。2.3.1染色體編碼方法遺傳算法不能直接處理問題空間的參數(shù),而需要把問題的可行解從其解空間轉(zhuǎn)換到遺傳算法所能處理的搜索空間中,這一轉(zhuǎn)換方法就稱為編碼。一般來說,由于遺傳算法的魯棒性,它對(duì)編碼的要求并不苛刻。但由于編碼的方法對(duì)于個(gè)體的染色體排列形式,以及個(gè)體從搜索空間的基因型到解空間的表現(xiàn)型的轉(zhuǎn)換和遺傳算子的運(yùn)算都有很大影響,因此編碼方法在很大程度上決定了如何進(jìn)行群體的遺傳進(jìn)化運(yùn)算以及遺傳進(jìn)化運(yùn)算的效率。針對(duì)一個(gè)具體應(yīng)用問題,如何設(shè)計(jì)一種完美的編碼方案是遺傳算法的應(yīng)用難點(diǎn),而目前還沒有一套既嚴(yán)密又完整的指導(dǎo)理論及評(píng)價(jià)準(zhǔn)則能幫我們?cè)O(shè)計(jì)編碼方案。對(duì)于實(shí)際應(yīng)用問題,仍須對(duì)編碼方法、選擇運(yùn)算方法、交叉運(yùn)算方法、變異運(yùn)算方法、解碼方法統(tǒng)一考慮,以尋求到一種對(duì)問題的描述最為方便、遺傳運(yùn)算效率最高的編碼方案。在目前看來,人們已經(jīng)提出了許多種不同的編碼方法,主要有:二進(jìn)制編碼、格雷碼和浮點(diǎn)數(shù)編碼等等。2.3.2適應(yīng)度函數(shù)適應(yīng)度函數(shù)指為了體現(xiàn)染色體的適應(yīng)能力,引入了對(duì)問題中的每一個(gè)染色體都能進(jìn)行度量的函數(shù)。遺傳算法在進(jìn)化搜索中基本不利用外部信息,僅以種群中每個(gè)個(gè)體的適應(yīng)度函數(shù)值為依據(jù)進(jìn)行搜索,因此適應(yīng)度函數(shù)的選取至關(guān)重要。遺傳算法常常將目標(biāo)函數(shù)直接作為適應(yīng)度函數(shù),但由于在執(zhí)行選擇操作時(shí),它要按與個(gè)體適應(yīng)度成正比的概率來決定當(dāng)前群體中每個(gè)個(gè)體遺傳到下一代群體中的幾率,而要正確計(jì)算此概率,要求所有個(gè)體的適應(yīng)度值必須非負(fù)。2.3.3遺傳算子(1)選擇算子選擇操作建立在對(duì)個(gè)體的適應(yīng)度進(jìn)行評(píng)價(jià)的基礎(chǔ)之上,適應(yīng)度較高的個(gè)體被遺傳到下一代群體中的概率較大;適應(yīng)度較低的個(gè)體被遺傳到下一代群體中的概率較小,因而可以避免有效基因的損失,使高性能的個(gè)體得以較大的概率生存,從而提高全局收斂性和計(jì)算效率。最常用的選擇算子是比例選擇算子,它是以正比于個(gè)體適應(yīng)度值的概率來選擇相應(yīng)的個(gè)體。另外還有比較常用的選擇算子還有:最優(yōu)保存策略選擇、排序選擇和隨機(jī)聯(lián)賽選擇。(2)交叉算子遺傳算法中,在交叉運(yùn)算之前還必須先對(duì)群體中的個(gè)體進(jìn)行隨機(jī)配對(duì),然后在這些配對(duì)個(gè)體組中兩個(gè)個(gè)體之間進(jìn)行交叉操作。交叉算子用于組合產(chǎn)生新的個(gè)體,它要求對(duì)個(gè)體編碼串中的優(yōu)良模式不能有太多的破壞并且能有效的產(chǎn)生出一些較好的新個(gè)體模式,以便在解空間中能進(jìn)行有效搜索,且保證對(duì)有效模式的破壞概率較小。最常用的交叉算子有單點(diǎn)交叉算子和算術(shù)交叉算子。(3)變異算子在生物的遺傳和進(jìn)化過程中,生物的某些基因偶爾會(huì)發(fā)生變異,從而產(chǎn)生出新的個(gè)體,雖然其概率比較小,但對(duì)新物種的產(chǎn)生也是一個(gè)不可忽視的因素。模仿生物遺傳和進(jìn)化過程中的這種變異現(xiàn)象,在遺傳算法中引入了變異算子來產(chǎn)生新的個(gè)體。在遺傳運(yùn)算過程中,當(dāng)交叉操作產(chǎn)生的后代適應(yīng)度值不再進(jìn)化且沒有達(dá)到最優(yōu)時(shí),意味著算法陷入了早熟。早熟的根源在于有效基因的缺損,變異算子在一定程度上克服了這種情況,它可以改善遺傳算法的局部搜索能力,增加種群的多樣性。2.3.4基本遺傳算法運(yùn)行參數(shù)遺傳算法中有下面幾個(gè)參數(shù)對(duì)遺傳算法的運(yùn)行有很大影響,需認(rèn)真選取,它們是:個(gè)體編碼串長(zhǎng)度l、群體大小M、復(fù)制概率Pr、交叉概率Pc、變異概率Pm、終止代數(shù)T。(1)編碼串長(zhǎng)度l使用二進(jìn)制編碼表示個(gè)體時(shí),編碼串長(zhǎng)度l的選取與問題所要求的求解精度有關(guān);使用浮點(diǎn)數(shù)編碼來表示個(gè)體時(shí),編碼串長(zhǎng)度l與決策變量的個(gè)數(shù)n相等;另外,也可使用變長(zhǎng)度的編碼來表示個(gè)體。(2)群體大小M當(dāng)M取值較小時(shí),可提高遺傳算法的運(yùn)算速度,但卻降低了群體的多樣性,有可能會(huì)引起遺傳算法的早熟現(xiàn)象;而當(dāng)M取值較大時(shí),又會(huì)使得遺傳算法的運(yùn)行效率降低。一般建議的取值范圍是20~100。(3)復(fù)制概率Pr復(fù)制操作建立在對(duì)個(gè)體的適應(yīng)度進(jìn)行評(píng)價(jià)的基礎(chǔ)之上,適應(yīng)度較高的個(gè)體被遺傳到下一代群體中的概率較大;適應(yīng)度較低的個(gè)體被遺傳到下一代群體中的概率較小,復(fù)制概率不可取的太大,也不可以取的太小。(4)交叉概率Pc交叉概率一般取值較大。但如果太大,它會(huì)破壞群體中的優(yōu)良模式,對(duì)進(jìn)化運(yùn)算不利。一般建議的取值范圍是0.4~0.99。另外,也可使用自適應(yīng)的思想來確定交叉概率Pc。(5)變異概率Pm如果變異概率Pm取值太大,則容易破壞群體中的優(yōu)良模式,使得遺傳算法的搜索趨于隨機(jī)性;如果取值過小,則它產(chǎn)生新個(gè)體和抑制早熟的能力會(huì)較差。一般建議的取值范圍是0.0001~0.1。另外也可使用自適應(yīng)的思想來確定變異概率,如取Pm與其上一代群體間的海明距離成反比,其結(jié)果會(huì)有效地維持群體的多樣性。(6)終止代數(shù)T終止代數(shù)T是表示遺傳算法運(yùn)行結(jié)束條件的一個(gè)參數(shù),一般建議的取值范圍是100~500。至于遺傳算法的終止條件,還可以利用別的判定準(zhǔn)則。2.4遺傳算法的特點(diǎn)遺傳算法利用了生物進(jìn)化和遺傳的基本思想,所以它與許多傳統(tǒng)優(yōu)化算法的特點(diǎn)不同,可以充分的縮短搜索時(shí)間。傳統(tǒng)的優(yōu)化方法主要有三種:枚舉法、啟發(fā)式算法和搜索算法。(1)枚舉法枚舉法是指枚舉出可行解集合內(nèi)的所有可行解,以求得精確的最優(yōu)解。對(duì)于連續(xù)的函數(shù),該方法要求先對(duì)其進(jìn)行離散化處理,這樣就有可能產(chǎn)生離散誤差而永遠(yuǎn)達(dá)不到最優(yōu)解。但是當(dāng)枚舉空間比較大時(shí),該方法的求解效率比較低,有時(shí)甚至在目前最先進(jìn)的計(jì)算工具上都無法求解。(2)啟發(fā)式算法啟發(fā)式算法是指尋求一種能產(chǎn)生可行解的啟發(fā)式規(guī)則,以找到一個(gè)最優(yōu)解或近似最優(yōu)解。該方法的求解效率雖然比較高,但是對(duì)于每一個(gè)需要求解的問題都必須找出其特有的啟發(fā)式規(guī)則,這個(gè)啟發(fā)式規(guī)則沒有通用性,不適合于所有的問題。(3)搜索算法搜索算法是指尋求一種算法,能在可行解集合的一個(gè)子集內(nèi)進(jìn)行搜索操作,以找到問題的最優(yōu)解或者近似最優(yōu)解。該方法雖然保證不了一定能夠得到問題的最優(yōu)解,但是如果適當(dāng)?shù)睦靡恍﹩l(fā)知識(shí),就可在近似解的質(zhì)量和求解效率上達(dá)到一種較好的平衡。而遺傳算法既是一種自然進(jìn)化系統(tǒng)的計(jì)算模型,也是一種通用的求解優(yōu)化問題的適應(yīng)性搜索方法。隨著問題種類的不同以及問題規(guī)模的擴(kuò)大,要尋求一種能以有限的代價(jià)來解決搜索和優(yōu)化的通用方法,遺傳算法正是提供了一種有效的途徑,它不同于傳統(tǒng)的優(yōu)化方法,它具備的特點(diǎn)主要有以下幾個(gè)方面:(1)遺傳算法采用群體搜索尋找最優(yōu)解,而不是從單個(gè)個(gè)體搜索尋找最優(yōu)解。搜索軌道有多條,而非單條,覆蓋面大,利于全局擇優(yōu)。這是遺傳算法與傳統(tǒng)優(yōu)化算法的最大區(qū)別,傳統(tǒng)優(yōu)化算法是從單個(gè)個(gè)體搜索尋找最優(yōu)解,效率比較低。(2)遺傳算法求解時(shí)利用適應(yīng)度函數(shù)值信息,并不需要問題導(dǎo)數(shù)等與問題直接相關(guān)的信息。所以說在所定義的函數(shù)不連續(xù)、多峰或不可微的情況下,也能以很大的概率收斂到全局最優(yōu)解。(3)遺傳算法是以決策變量的編碼作為運(yùn)算對(duì)象。在優(yōu)化過程中借鑒生物學(xué)中染色體和基因等概念,模擬自然界中生物的遺傳和進(jìn)化等機(jī)理,應(yīng)用遺傳操作,可方便求解無數(shù)值概念或很難有數(shù)值概念的優(yōu)化問題,這樣的話,遺傳算法就克服了非數(shù)值變量的操作。(4)遺傳算法有極強(qiáng)的容錯(cuò)能力。遺傳算法的初始解集本身就帶有大量與最優(yōu)解相差甚遠(yuǎn)的信息,通過選擇、交叉、變異操作能迅速排除與最優(yōu)解相差極大的解,這是一個(gè)強(qiáng)烈的濾波過程。并且是一個(gè)并行濾波機(jī)制。因此,遺傳算法有很高的容錯(cuò)能力,因?yàn)樗拖喈?dāng)預(yù)先就進(jìn)行了運(yùn)算,或則說在內(nèi)部就進(jìn)行了運(yùn)算,大大增加了運(yùn)算的效率。(5)遺傳算法使用概率搜索技術(shù)。它屬于一種自適應(yīng)概率搜索技術(shù),其選擇、交叉、變異等運(yùn)算都是以一定的概率進(jìn)行的,增加了其搜索過程的靈活性。實(shí)踐和理論證明了在一定條件下遺傳算法總是以概率1收斂于問題的最優(yōu)解。(6)遺傳算法具有隱含的并行性。并行性是指兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)生,這樣就大大增加了運(yùn)算的速度。2.5遺傳算法的基本模型(1)將問題的解表示為編碼串(生物學(xué)術(shù)語稱為染色體),每一碼串代表問題的一個(gè)可行解。(2)隨機(jī)產(chǎn)生一組串長(zhǎng)為m的初始群體,該群體就是問題的一個(gè)可行解的集合。(3)分別將編碼串譯碼成尋優(yōu)參數(shù),計(jì)算對(duì)應(yīng)的目標(biāo)函數(shù)并變換為適應(yīng)值。(4)根據(jù)碼串個(gè)體適應(yīng)值的高低,執(zhí)行應(yīng)用復(fù)制、交換和變異算子產(chǎn)生下一代群體。(5)返回步驟3,直到滿足停止準(zhǔn)則為止。這樣,反復(fù)執(zhí)行步驟3到步驟5,使碼串群體一代代不斷進(jìn)化,最后搜索到最適應(yīng)問題的個(gè)體,求得問題的最優(yōu)解,其流程圖如圖1所示。圖1遺傳算法流程圖2.6遺傳算法的應(yīng)用遺傳算法提供了一種求解復(fù)雜系統(tǒng)優(yōu)化問題的通用框架,它不依賴于問題的具體領(lǐng)域、對(duì)問題的種類有很強(qiáng)的魯棒性,所以廣泛應(yīng)用于很多學(xué)科。下面是遺傳算法的一些主要應(yīng)用領(lǐng)域:1函數(shù)優(yōu)化函數(shù)優(yōu)化是遺傳算法的經(jīng)典應(yīng)用領(lǐng)域,也是對(duì)遺傳算法進(jìn)行性能評(píng)價(jià)的常用算例。很多人構(gòu)造出了各種各樣的復(fù)雜形式的測(cè)試函數(shù),有連續(xù)函數(shù)也有離散函數(shù),有凸函數(shù)也有凹函數(shù),有低維函數(shù)也有高維函數(shù),有確定函數(shù)也有隨機(jī)函數(shù),有單峰值函數(shù)也有多峰值函數(shù)等,用這些幾何特性各具特色的函數(shù)來評(píng)價(jià)遺傳算法的性能,更能反映算法的本質(zhì)效果。而對(duì)于一些非線性、多模型、多目標(biāo)的函數(shù)優(yōu)化問題,用其他優(yōu)化方法較難求解,而遺傳算法卻可以方便地得到較好的結(jié)果。2組合優(yōu)化隨著問題規(guī)模的增大,組合優(yōu)化問題的搜索空間也急劇擴(kuò)大,有時(shí)在目前的計(jì)算機(jī)上用枚舉法很難或甚至不可能求出其精確最優(yōu)解。對(duì)這類復(fù)雜問題,人們已意識(shí)到應(yīng)把主要精力放在尋求其滿意解上,而遺傳算法是尋求這種滿意解的最佳工具之一。實(shí)踐證明,遺傳算法已經(jīng)在求解旅行商問題、背包問題、裝箱問題、布局優(yōu)化、圖形劃分問題等各種具有NP難度的問題得到成功的應(yīng)用。3生產(chǎn)調(diào)度問題生產(chǎn)調(diào)度問題在很多情況下建立起來的數(shù)學(xué)模型難以精確求解,即使經(jīng)過一些簡(jiǎn)化之后可以進(jìn)行求解,也會(huì)因簡(jiǎn)化得太多而使得求解結(jié)果與實(shí)際相差甚遠(yuǎn)。目前在現(xiàn)實(shí)生產(chǎn)中主要是靠一些經(jīng)驗(yàn)來進(jìn)行調(diào)度?,F(xiàn)在遺傳算法已成為解決復(fù)雜調(diào)度問題的有效工具,在單件生產(chǎn)車間調(diào)度、流水線生產(chǎn)間調(diào)度、生產(chǎn)規(guī)劃、任務(wù)分配等方面遺傳算法都得到了有效的應(yīng)用。4自動(dòng)控制在自動(dòng)控制領(lǐng)域中有很多與優(yōu)化相關(guān)的問題需要求解,遺傳算法已在其中得到了初步的應(yīng)用,并顯示出良好的效果。例如用遺傳算法進(jìn)行航空控制系統(tǒng)的優(yōu)化、使用遺傳算法設(shè)計(jì)空間交會(huì)控制器、基于遺傳算法的模糊控制器的優(yōu)化設(shè)計(jì)、基于遺傳算法的參數(shù)辨識(shí)、基于遺傳算法的模糊控制規(guī)則的學(xué)習(xí)、利用遺傳算法進(jìn)行人工神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)優(yōu)化設(shè)計(jì)和權(quán)值學(xué)習(xí)等,都顯示出了遺傳算法在這些領(lǐng)域中應(yīng)用的可能性。5機(jī)器人學(xué)機(jī)器人是一類復(fù)雜的難以精確建模的人工系統(tǒng),而遺傳算法的起源就來自于人工自適應(yīng)系統(tǒng)的研究,所以,機(jī)器人學(xué)理所當(dāng)然地成為遺傳算法的一個(gè)重要應(yīng)用領(lǐng)域。例如,遺傳算法已經(jīng)在移動(dòng)機(jī)器人路徑規(guī)劃、關(guān)節(jié)機(jī)器人運(yùn)動(dòng)軌跡規(guī)劃、機(jī)器人逆運(yùn)動(dòng)學(xué)求解、細(xì)胞機(jī)器人的結(jié)構(gòu)優(yōu)化和行為協(xié)調(diào)等方面得到研究和應(yīng)用。6圖像處理圖像處理是計(jì)算機(jī)視覺中的一個(gè)重要研究領(lǐng)域。在圖像處理過程中,如掃描、特征提取、圖像分割等不可避免地會(huì)存在一些誤差,從而影響圖像的效果。如何使這些誤差最小是使計(jì)算機(jī)視覺達(dá)到實(shí)用化的重要要求。遺傳算法在這些圖像處理中的優(yōu)化計(jì)算方面找到了用武之地,目前已在模式識(shí)別(包括漢字識(shí)別)、圖像恢復(fù)、圖像邊緣特征提取等方面得到了應(yīng)用。7人工生命人工生命是用計(jì)算機(jī)、機(jī)械等人工媒體模擬或構(gòu)造出的具有自然生物系統(tǒng)特有行為的人造系統(tǒng)。自組織能力和自學(xué)習(xí)能力是人工生命的兩大主要特征。人工生命與遺傳算法有著密切的關(guān)系?;谶z傳算法的進(jìn)化模型是研究人工生命現(xiàn)象的重要基礎(chǔ)理論,雖然人工生命的研究尚處于啟蒙階段,但遺傳算法已在其進(jìn)化模型、學(xué)習(xí)模型、行為模型、自組織模型等方面顯示出了初步的應(yīng)用能力,并且必將得到更為深入的應(yīng)用和發(fā)展。人工生命與遺傳算法相輔相成,遺傳算法為人工生命的研究提供一個(gè)有效的工具,人工生命的研究也必將促進(jìn)遺傳算法的進(jìn)一步發(fā)展。8遺傳編程1989年,美國(guó)Standford大學(xué)的Koza教授發(fā)展了遺傳編程的概念,其基本思想是:采用樹型結(jié)構(gòu)表示計(jì)算機(jī)程序,運(yùn)用遺傳算法的思想,通過自動(dòng)生成計(jì)算機(jī)程序來解決問題。雖然遺傳編程的理論尚未成熟,應(yīng)用也有一些限制,但它已成功地應(yīng)用于人工智能、機(jī)器學(xué)習(xí)等領(lǐng)域,目前公開的遺傳編程實(shí)驗(yàn)系統(tǒng)有十多個(gè)。9機(jī)器學(xué)習(xí)學(xué)習(xí)能力是高級(jí)自適應(yīng)系統(tǒng)所具備的能力之一,基于遺傳算法的機(jī)器學(xué)習(xí),特別是分類器系統(tǒng),在很多領(lǐng)域中都得到了應(yīng)用。例如,遺傳算法被用于學(xué)習(xí)模糊控制規(guī)則,利用遺傳算法來學(xué)習(xí)隸屬度函數(shù),從而更好地改進(jìn)了模糊系統(tǒng)的性能;基于遺傳算法的機(jī)器學(xué)習(xí)可用來調(diào)整人工神經(jīng)網(wǎng)絡(luò)的連接權(quán),也可用于人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化設(shè)計(jì);分類器系統(tǒng)也在學(xué)習(xí)式多機(jī)器人路徑規(guī)劃系統(tǒng)中得到了成功的應(yīng)用。10數(shù)據(jù)挖掘數(shù)據(jù)挖掘是近幾年出現(xiàn)的數(shù)據(jù)庫技術(shù),它能夠從大型數(shù)據(jù)庫中提取隱含的、先前未知的、有潛在應(yīng)用價(jià)值的知識(shí)和規(guī)則。許多數(shù)據(jù)挖掘問題可看成是搜索問題,數(shù)據(jù)庫看作是搜索空間,挖掘算法看作是搜索策略。因此,應(yīng)用遺傳算法在數(shù)據(jù)庫中進(jìn)行搜索,對(duì)隨機(jī)產(chǎn)生的一組規(guī)則進(jìn)行進(jìn)化,直到數(shù)據(jù)庫能被該組規(guī)則覆蓋,從而挖掘出隱含在數(shù)據(jù)庫中的規(guī)則。Sunil已成功地開發(fā)了一個(gè)基于遺傳算法的數(shù)據(jù)挖掘工具,利用該工具對(duì)兩個(gè)飛機(jī)失事的真實(shí)數(shù)據(jù)庫進(jìn)行了數(shù)據(jù)挖掘?qū)嶒?yàn),結(jié)果表明遺傳算法是進(jìn)行數(shù)據(jù)挖掘的有效方法之一。2.7遺傳算法今后的研究方向遺傳算法是多學(xué)科結(jié)合與滲透的產(chǎn)物,已經(jīng)發(fā)展成一種自組織、自適應(yīng)的綜合技術(shù),廣泛應(yīng)用在計(jì)算機(jī)科學(xué)、工程技術(shù)和社會(huì)科學(xué)等領(lǐng)域。其研究工作主要集中在以下幾個(gè)方面:1基礎(chǔ)理論它包括進(jìn)一步發(fā)展遺傳算法的數(shù)學(xué)基礎(chǔ),從理論和試驗(yàn)研究它們的計(jì)算復(fù)雜性。在遺傳算法中,群體規(guī)模和遺傳算子的控制參數(shù)的選取非常困難,但它們又是必不可少的試驗(yàn)參數(shù)。在這方面,已有一些具有指導(dǎo)性的試驗(yàn)結(jié)果。遺傳算法還有一個(gè)過早收斂的問題,怎樣阻止過早收斂也是人們正在研究的問題之一。2分布并行遺傳算法遺傳算法在操作上具有高度的并行性,許多研究人員都在探索在并行機(jī)和分布式系統(tǒng)上高效執(zhí)行遺傳算法的策略。對(duì)分布并行遺傳算法的研究表明,只要通過保持多個(gè)群體和恰當(dāng)控制群體間的相互作用來模擬并行執(zhí)行過程,即使不使用并行計(jì)算機(jī),也能提高算法的執(zhí)行效率。3分類系統(tǒng)分類系統(tǒng)屬于基于遺傳算法的機(jī)器學(xué)習(xí)中的一類,包括一個(gè)簡(jiǎn)單的基于串規(guī)則的并行生成子系統(tǒng)、規(guī)則評(píng)價(jià)子系統(tǒng)和遺傳算法子系統(tǒng)。分類系統(tǒng)被人們?cè)絹碓蕉嗟貞?yīng)用在科學(xué)、工程和經(jīng)濟(jì)領(lǐng)域中,是目前遺傳算法研究中一個(gè)十分活躍的領(lǐng)域。4遺傳神經(jīng)網(wǎng)絡(luò)它包括連接權(quán)、網(wǎng)絡(luò)結(jié)構(gòu)和學(xué)習(xí)規(guī)則的進(jìn)化。遺傳算法與神經(jīng)網(wǎng)絡(luò)相結(jié)合,正成功地用于從時(shí)間序列分析來進(jìn)行財(cái)政預(yù)算。在這些系統(tǒng)中,訓(xùn)練信號(hào)是模糊的,數(shù)據(jù)是有噪聲的,一般很難正確給出每個(gè)執(zhí)行的定量評(píng)價(jià)。如果采用遺傳算法來學(xué)習(xí),就能克服這些困難,顯著提高系統(tǒng)性能。5進(jìn)化算法模擬自然進(jìn)化過程可以產(chǎn)生魯棒的計(jì)算機(jī)算法進(jìn)化算法。遺傳算法是其三種典型的算法之一,其余兩種算法是進(jìn)化規(guī)劃和進(jìn)化策略。這三種算法是彼此獨(dú)立地發(fā)展起來的。3基于Matlab7.0下的遺傳算法求解函數(shù)最值問題3.1遺傳算法的標(biāo)準(zhǔn)函數(shù)已知函數(shù)曲線為:f(x)=(sin2x+cos3x)3+2,其中(0=<x<=4)3.2解題步驟說明本人基于Matlab7.0用遺傳算法來求函數(shù)的最值問題(即最大值和最小值),解決的步驟主要有以下幾個(gè)方面:(1)編碼;(2)解碼;(3)計(jì)算適應(yīng)度(函數(shù)值);(4)選擇復(fù)制運(yùn)算;(5)交叉運(yùn)算;(6)變異運(yùn)算。3.2.1編碼問題編碼是遺傳算法要解決的首要問題。Holland的編碼方法是二進(jìn)制編碼,但對(duì)于許多遺傳算法的應(yīng)用,特別是在工業(yè)工程中的應(yīng)用,這種簡(jiǎn)單的編碼方法很難直接描述問題的性質(zhì)。近十年來,針對(duì)特殊問題,人們提出了其它編碼方法。例如:1二進(jìn)制編碼它是遺傳算法中最常用的一種編碼方法。它具有下列一些優(yōu)點(diǎn):(1)編碼、解碼操作簡(jiǎn)單易行;(2)交叉、變異操作便于實(shí)現(xiàn);(3)符合最小字符集編碼原則;(4)便于利用模式定理對(duì)算法進(jìn)行理論分析。2格雷碼編碼對(duì)于一些連續(xù)優(yōu)化問題,二進(jìn)制編碼由于遺傳算法的隨機(jī)特性而使其局部搜索能力較差。為改進(jìn)這一特性,人們提出用格雷碼進(jìn)行編碼。格雷碼編碼方法是二進(jìn)制編碼方法的一種變形。它是這樣的一種編碼方法,其連續(xù)的兩個(gè)整數(shù)所對(duì)應(yīng)的編碼值之間僅僅只有一個(gè)碼位是不相同的,其余碼位都完全相同。3實(shí)數(shù)編碼對(duì)于一些多維、高精度要求的連續(xù)函數(shù)優(yōu)化問題,使用二進(jìn)制編碼來表示個(gè)體將會(huì)帶來一些不利。為了克服這些缺點(diǎn),人們提出實(shí)數(shù)編碼方法,即個(gè)體的每個(gè)基因值用實(shí)數(shù)表示。4符號(hào)編碼方法是指染色體編碼串中的基因值取自一個(gè)無數(shù)值含義、而只有代碼含義的符號(hào)集。這些符號(hào)可以是字符,也可以是數(shù)字。本文是采用了二進(jìn)制編碼的方法。3.2.2選擇運(yùn)算遺傳算法使用選擇運(yùn)算(或稱復(fù)制運(yùn)算)來實(shí)現(xiàn)對(duì)群體中的個(gè)體進(jìn)行優(yōu)勝劣汰操作,選擇操作的任務(wù)就是按某種方法從父代群體中選取一些個(gè)體,遺傳到下一代群體。下面介紹幾種選擇方法:1賭盤選擇又稱比例選擇方法。其基本思想是:各個(gè)個(gè)體被選中的概率與其適應(yīng)度大小成正比2排序選擇該方法的主要思想是:對(duì)群體中的所有個(gè)體按其適應(yīng)度大小進(jìn)行排序,基于這個(gè)排序來分配各個(gè)個(gè)體被選中的概率。3隨機(jī)聯(lián)賽選擇該方法的基本思想是:每次選取N個(gè)個(gè)體之中適應(yīng)度最高的個(gè)體遺傳到下一代群體中。4最優(yōu)個(gè)體保留方法它的基本思想是:當(dāng)前群體中適應(yīng)度最高的個(gè)體不參與交叉和變異運(yùn)算,而是用它來替換本代群體中經(jīng)過交叉、變異后所產(chǎn)生的適應(yīng)度最低的個(gè)體。本文是采用了最優(yōu)個(gè)體保留的方法。3.2.3交叉運(yùn)算所謂交叉運(yùn)算,是指對(duì)兩個(gè)相互配對(duì)的染色體按某種方式相互交換其部分基因,從而形成兩個(gè)新的個(gè)體。交叉運(yùn)算有以下幾種:1單點(diǎn)交叉又稱為簡(jiǎn)單交叉,它是指在個(gè)體編碼串中隨機(jī)設(shè)置一個(gè)交叉點(diǎn),然后在該點(diǎn)相互交換兩個(gè)配對(duì)個(gè)體的部分基因。2雙點(diǎn)交叉它的具體操作過程是:(1)在相互配對(duì)的兩個(gè)個(gè)體編碼串中隨機(jī)設(shè)置兩個(gè)交叉點(diǎn);(2)交換兩個(gè)交叉點(diǎn)之間的部分基因。3均勻交叉它是指兩個(gè)配對(duì)個(gè)體的每一位基因都以相同的概率進(jìn)行交換,從而形成兩個(gè)新個(gè)體。4算術(shù)交叉它是指由兩個(gè)個(gè)體的線性組合而產(chǎn)生出新的個(gè)體。本文是采用了單點(diǎn)交叉的方法。3.2.4變異運(yùn)算所謂變異運(yùn)算,是指將個(gè)體編碼串中的某些基因值用其它基因值來替換,從而形成一個(gè)新的個(gè)體。變異運(yùn)算有以下幾種:1基本位變異它是指對(duì)個(gè)體編碼串以變異概率p隨機(jī)指定某一位或某幾位基因作變異運(yùn)算。2均勻變異它是指分別用符合某一范圍內(nèi)均勻分布的隨機(jī)數(shù),以某一較小的概率來替換個(gè)體中每個(gè)基因。3高斯變異它是指進(jìn)行變異操作時(shí),用均值為μ,方差為σ2的正態(tài)分布的一個(gè)隨機(jī)數(shù)來替換原有基因值。4二元變異它的操作需要兩條染色體參與,兩條染色體通過二元變異操作后生成兩條新個(gè)體。新個(gè)體中的各個(gè)基因分別取原染色體對(duì)應(yīng)基因值的同或/異或。本文是采用了基本位變異的方法。3.3運(yùn)行參數(shù)說明至于運(yùn)行參數(shù)本人設(shè)置了7個(gè)參數(shù),它們分別是pop_size、gen_max、code_length、u_max、u_min、probability_crossover、probability_mutation。pop_size表示種群規(guī)模,遺傳算法每次進(jìn)化都有一定的規(guī)模,也就是有多少組(粒子)在當(dāng)前尋找;gen_max表示最大進(jìn)化代數(shù),是表示遺傳算法運(yùn)行結(jié)束條件的一個(gè)參數(shù),一般建議的取值范圍是100~500;code_length表示設(shè)定編碼長(zhǎng)度,它與函數(shù)的精度有關(guān);u_max表示最大值的自變量取值范圍;u_min表示最小值的自變量取值范圍;probability_crossover表示交叉率,一般建議的取值范圍是0.4~0.99;probability_mutation表示變異率,一般建議的取值范圍是0.0001~0.1。3.4對(duì)遺傳算法求得的最值的分析最優(yōu)解誰都不知道是多少,本人只是把自變量在0到4之間取的10000個(gè)均勻間隔數(shù),函數(shù)值就是這些間隔數(shù)(自變量)相應(yīng)的適應(yīng)度(函數(shù)值),y_1_max就是這些適應(yīng)度(函數(shù)值)中最大的一個(gè),y_1_min就是這些適應(yīng)度(函數(shù)值)中最小的一個(gè)??墒且?yàn)楸救巳〉狞c(diǎn)有間隔,所以求得的8.1608可能只是最大值附近的某個(gè)點(diǎn),最大值可能在左邊,也可能在右邊,同樣求得的0.2020也可能只是最小值附近的某個(gè)點(diǎn),最小值可能在左邊,也可能在右邊。同理遺傳算法在尋找最優(yōu)解的時(shí)候,因?yàn)橛?jì)算精度的問題也會(huì)找到這樣一個(gè)點(diǎn),這個(gè)點(diǎn)同樣可能不是最優(yōu)的,但是這也是沒有辦法的,因?yàn)楫吘故苡?jì)算機(jī)的影響,所以我們只能希望求最大值時(shí),取到的值越大越好,求最小值時(shí),取到的值越小越好,故認(rèn)為最優(yōu)解就是最最大的或者最最小的。3.5運(yùn)行程序以及對(duì)其解釋>>ga_maxmin(80,100,10,4,0,0.6,0.1)%當(dāng)種群規(guī)模為80,最大進(jìn)化代數(shù)為100,編碼長(zhǎng)度為10,自變量的最大值為4,自變量的最小值為0,交叉率為0.6,變異率為0.1時(shí),求得的函數(shù)最值y_Max=%遺傳算法求解函數(shù)后的最大值8.1608BestS=%遺傳算法求解函數(shù)后的最大值所對(duì)應(yīng)的自變量編碼1111111111x_max=%遺傳算法求解函數(shù)后的最大值4所對(duì)應(yīng)的自變量y_min=%遺傳算法求解函數(shù)后的最小值0.2032BestS_min=%遺傳算法求解函數(shù)后的最小值所對(duì)應(yīng)的自變量編碼0111011101x_min=%遺傳算法求解函數(shù)后的最小值2.9326所對(duì)應(yīng)的自變量y_1_max=%相對(duì)標(biāo)準(zhǔn)下的最大值8.1608y_1_min=%相對(duì)標(biāo)準(zhǔn)下的最小值0.2020其最大值與進(jìn)化次數(shù)關(guān)系如圖2所示:圖2最大值與進(jìn)化次數(shù)關(guān)系圖其最小值與進(jìn)化次數(shù)關(guān)系圖如圖3所示:圖3最小值與進(jìn)化次數(shù)關(guān)系圖其原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像如圖4所示:圖4原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像從運(yùn)行的結(jié)果看,用遺傳算法求得的y_Max=8.1608(最大值)和y_1_max=8.1608(相對(duì)標(biāo)準(zhǔn)下的最大值)一樣大,而用遺傳算法求得的y_min=0.2032(最小值)和y_1_min=0.2020(相對(duì)標(biāo)準(zhǔn)下的最小值)很相近,只是相差0.0012,這樣的結(jié)果算是不錯(cuò)的啦。至于上面三個(gè)圖形本人也來簡(jiǎn)單介紹一下:最大值與進(jìn)化次數(shù)關(guān)系圖,從圖上可以看出經(jīng)過多少代后,最大值將趨向平穩(wěn);最小值與進(jìn)化次數(shù)關(guān)系圖,從圖上可以看出經(jīng)過多少代后,最小值將趨向平穩(wěn);原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像,原函數(shù)是指用數(shù)學(xué)的角度在Matlab7.0下求得的函數(shù)曲線,圖中的點(diǎn)或小圓圈就是用遺傳算法求得的最值點(diǎn)。本身遺傳算法就是輸出一個(gè)值,它不能像遺傳算法中嵌套神經(jīng)網(wǎng)絡(luò)那樣的算法,可以擬和畫出函數(shù)曲線。至于圖中的點(diǎn)或小圓圈為什么才幾個(gè),因?yàn)檫M(jìn)化多少次就有多少個(gè)點(diǎn),如果這些點(diǎn)都畫出來的話,將會(huì)使得整個(gè)圖都布滿小點(diǎn),不過后面8、90個(gè)都重合了,所以只畫出一部分,重合的就沒畫出來,免得太亂了。另外,有關(guān)于BestS=1111111111,BestS_min=0111011101,是怎么一回事呢,BestS表示輸出最大函數(shù)值所對(duì)應(yīng)自變量編碼,BestS_min表示輸出最小函數(shù)值所對(duì)應(yīng)自變量編碼,0對(duì)應(yīng)0000000000,4對(duì)應(yīng)1111111111,為什么要那么多位呢,因?yàn)榭紤]到實(shí)數(shù)范圍的對(duì)應(yīng)編碼,例如:x_max=4,x_min=2.9326。3.6從數(shù)學(xué)的角度求解函數(shù)最優(yōu)值3.6.1自變量x以0.2為步進(jìn)單位本人令自變量x在0到4之間,以0.2為步進(jìn)單位,即x取0、0.2、0.4、0.6、0.8、1、1.2……4,以13個(gè)函數(shù)值為一組,一一列出函數(shù)值,同時(shí)輸出這些函數(shù)值中最大的一個(gè)函數(shù)值,也輸出這些函數(shù)值中最小的一個(gè)函數(shù)值,也同時(shí)在數(shù)學(xué)的角度下輸出函數(shù)的曲線。從函數(shù)的曲線中,我們可以很清楚的看出函數(shù)的最值(最大值和最小值)。由于x取的值不多,所以函數(shù)的曲線將會(huì)不是很圓滑,有多處曲折的地方。>>x=0:0.2:4y=(sin(2*x)+cos(3*x)).^3+2y_max=max(y)y_min=min(y)plot(x,y,'b')x=Columns1through1300.20000.40000.60000.80001.00001.20001.40001.60001.80002.00002.20002.4000Columns14through212.60002.80003.00003.20003.40003.60003.80004.0000y=Columns1through133.00003.79253.25872.35022.01801.99951.98921.99632.00002.00712.00842.00001.9417Columns14through211.42920.47690.31251.34571.98932.21534.52338.1608y_max=8.1608y_min=0.3125其在數(shù)學(xué)角度下求得的函數(shù)最值的圖像如圖5所示:圖5在數(shù)學(xué)角度下求得的函數(shù)最值的圖像3.6.2自變量x以0.1為步進(jìn)單位為了讓函數(shù)的曲線更加圓滑,本人令自變量x在0到4之間,以0.1為步進(jìn)單位,即x取0、0.1、0.2、0.3、0.4、0.5、0.6……4,以13個(gè)函數(shù)值為一組,一一列出函數(shù)值,同時(shí)輸出這些函數(shù)值中最大的一個(gè)函數(shù)值,也輸出這些函數(shù)值中最小的一個(gè)函數(shù)值,也同時(shí)在數(shù)學(xué)的角度下輸出函數(shù)的曲線。但是這次輸出的函數(shù)曲線是在上次輸出結(jié)果的基礎(chǔ)上輸出的,兩種曲線的顏色不一樣,可以形成鮮明的對(duì)比,這樣可以更加容易地來分析結(jié)果。>>holdonx=0:0.1:4y=(sin(2*x)+cos(3*x)).^3+2y_max=max(y)y_min=min(y)plot(x,y,'r')holdoffx=Columns1through1300.10000.20000.30000.40000.50000.60000.70000.80000.90001.00001.10001.2000Columns14through261.30001.40001.50001.60001.70001.80001.90002.00002.10002.20002.30002.40002.5000Columns27through392.60002.70002.80002.90003.00003.10003.20003.30003.40003.50003.60003.70003.8000Columns40through413.90004.0000y=Columns1through133.00003.53683.79253.66933.25872.75912.35022.11102.01802.00031.99951.99431.9892Columns14through261.99071.99631.99972.00002.00182.00712.01112.00842.00212.00001.99441.94171.7705Columns27through391.42920.95030.47690.21410.31250.75661.34571.80731.98932.00602.21533.00894.5233Columns40through416.46078.1608y_max=8.1608y_min=0.2141其在數(shù)學(xué)角度下求得的函數(shù)最值的圖像如圖6所示:圖6在數(shù)學(xué)角度下求得的函數(shù)最值的圖像3.6.3自變量x以更精確的數(shù)為步進(jìn)單位為了讓函數(shù)的曲線更加更加的圓滑,本人令自變量x在0到4之間,以0.01為步進(jìn)單位,即x取0、0.01、0.02、0.03、0.04、0.05、0.06……4,運(yùn)行的結(jié)果是y_max=8.1608,y_min=0.2025。本人也令自變量x在0到4之間,以0.001為步進(jìn)單位,即x取0、0.001、0.002、0.003、0.004、0.005、0.006……4,運(yùn)行的結(jié)果是y_max=8.1608,y_min=0.2020,為了精確點(diǎn),本人也令自變量x在0到4之間,以0.0001和0.00001為步進(jìn)單位,運(yùn)行的結(jié)果都是y_max=8.1608,y_min=0.2020,證明函數(shù)的相對(duì)標(biāo)準(zhǔn)下的最大值是8.1608,相對(duì)標(biāo)準(zhǔn)下的最小值是0.2020。4對(duì)遺傳算法求解函數(shù)最值問題的改進(jìn)本部分是講解如何使由遺傳算法求得的函數(shù)最值更加接近相對(duì)標(biāo)準(zhǔn)下函數(shù)的最值。本人是通過修改遺傳算法的運(yùn)行參數(shù)值(即交叉率Pc值和變異率Pm值),來達(dá)到遺傳算法求得的最值更優(yōu)的目的。4.1尋找求得最優(yōu)解的運(yùn)行參數(shù)值4.1.1當(dāng)Pc=0.9和Pm=0.0001這一組運(yùn)行參數(shù)值,本人把交叉率Pc取0.9,變異率Pm取0.0001,得到y(tǒng)_Max=3.5271(最大值)和y_1_max=8.1608(相對(duì)標(biāo)準(zhǔn)下的最大值)相差太大,而得到的y_min=3(最小值)和y_1_min=0.2020(相對(duì)標(biāo)準(zhǔn)下的最小值)也相差太大,說明交叉率Pc取0.9,變異率Pm取0.0001,不是得到最優(yōu)解的參數(shù)值。>>ga_maxmin(80,100,10,4,0,0.9,0.0001)y_Max=3.5271BestS=1001100000x_max=0.0978y_min=3BestS_min=0000000000x_min=0y_1_max=8.1608y_1_min=0.2020其原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像如圖7所示:圖7原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像4.1.2當(dāng)Pc=0.9和Pm=0.001這一組運(yùn)行參數(shù)值,本人把交叉率Pc取0.9,變異率Pm取0.001,得到y(tǒng)_Max=3.7856(最大值)和y_1_max=8.1608(相對(duì)標(biāo)準(zhǔn)下的最大值)相差太大,而得到的y_min=1.9982(最小值)和y_1_min=0.2020(相對(duì)標(biāo)準(zhǔn)下的最小值)就相差不太大了,說明交叉率Pc取0.9,變異率Pm取0.001,不是得到最優(yōu)解的參數(shù)值。但是按照這種思路(設(shè)置有一定規(guī)律的運(yùn)行參數(shù)值)下去的話,很快就可以找到最優(yōu)解的參數(shù)值了。>>ga_maxmin(80,100,10,4,0,0.9,0.001)y_Max=3.7856BestS=1000110000x_max=0.1916y_min=1.9982BestS_min=1001000010x_min=1.0362y_1_max=8.1608y_1_min=0.2020其原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像如圖8所示:圖8原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像4.1.3當(dāng)Pc=0.9和Pm=0.01這一組運(yùn)行參數(shù)值,本人把交叉率Pc取0.9,變異率Pm取0.01,得到y(tǒng)_Max=3.7979(最大值)和y_1_max=8.1608(相對(duì)標(biāo)準(zhǔn)下的最大值)相差太大,而得到的y_min=0.3212(最小值)和y_1_min=0.2020(相對(duì)標(biāo)準(zhǔn)下的最小值)比較相近了,說明交叉率Pc取0.9,變異率Pm取0.01,不是得到最優(yōu)解的參數(shù)值。但是按照這種思路(設(shè)置有一定規(guī)律的運(yùn)行參數(shù)值)下去的話,很快就可以找到最優(yōu)解的參數(shù)值了。>>ga_maxmin(80,100,10,4,0,0.9,0.01)y_Max=3.7979BestS=0001110000x_max=0.2190y_min=0.3212BestS_min=0000000011x_min=3.0029y_1_max=8.1608y_1_min=0.2020其原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像如圖9所示:圖9原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像4.1.4當(dāng)Pc=0.9和Pm=0.1這一組運(yùn)行參數(shù)值,本人把交叉率Pc取0.9,變異率Pm取0.1,得到y(tǒng)_Max=8.1608(最大值)和y_1_max=8.1608(相對(duì)標(biāo)準(zhǔn)下的最大值)一樣了,而得到的y_min=0.2020(最小值)和y_1_min=0.2020(相對(duì)標(biāo)準(zhǔn)下的最小值)也一樣了,說明交叉率Pc取0.9,變異率Pm取0.1,是得到最優(yōu)解的參數(shù)值。>>ga_maxmin(80,100,10,4,0,0.9,0.1)y_Max=8.1608BestS=1111111111x_max=4y_min=0.2020BestS_min=0011011101x_min=2.9247y_1_max=8.1608y_1_min=0.2020其原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像如圖10所示:圖10原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像4.1.5當(dāng)Pc=0.4和Pm=0.1這一組運(yùn)行參數(shù)值,本人把交叉率Pc取0.4,變異率Pm取0.1,得到y(tǒng)_Max=8.1608(最大值)和y_1_max=8.1608(相對(duì)標(biāo)準(zhǔn)下的最大值)一樣,而得到的y_min=0.2033(最小值)和y_1_min=0.2020(相對(duì)標(biāo)準(zhǔn)下的最小值)就相差一點(diǎn)了,說明交叉率Pc取0.9,變異率Pm取0.1,才是得到最優(yōu)解的參數(shù)值,同時(shí)也說明不是改變變異率Pm的取值才會(huì)改變求得的最值的,改變交叉率Pc的取值也會(huì)改變求得的最值的(相對(duì)于上面設(shè)置運(yùn)行參數(shù)的規(guī)律而言)。>>ga_maxmin(80,100,10,4,0,0.4,0.1)y_Max=8.1608BestS=1111111111x_max=4y_min=0.2033BestS_min=0101011101x_min=2.9169y_1_max=8.1608y_1_min=0.2020其原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像如圖11所示:圖11原函數(shù)和遺傳算法求得的最值點(diǎn)的綜合圖像附錄解碼:functionx_Max=uncodeing(CodeL,m,umax,umin)y1=0;%解碼需要的初始值m1=m(1:1:CodeL);%編碼給x_Maxfori=1:1:CodeL%1:1:CodeL指從1到CodeL間隔是1y1=y1+m1(i)*2^(i-1);%計(jì)算編碼數(shù)值由2進(jìn)制轉(zhuǎn)化為10進(jìn)制endx_Max=(umax-umin)*y1/(2^CodeL-1)+umin;%要把該編碼化到要求范圍內(nèi),這其實(shí)是把編碼和區(qū)間進(jìn)行了對(duì)應(yīng),0-1023是編碼的范圍(最大最小值一樣的,所以就只寫最大值的)適度函數(shù):functiony=fitness_f(x)y=(sin(2*x)+cos(3*x))^3+2;%給定函數(shù),即所求最大值函數(shù)%y_min=(sin(2*x_min)+cos(3*x_min))^3+2;%給定函數(shù),即所求最小值函數(shù)(最大最小值實(shí)質(zhì)上是一樣的,所以就只寫最大值的)選擇:functiony=select_reproduce(fi,Oderfi,Size,Indexfi,E)fi_sum=sum(fi);%求出適應(yīng)度(函數(shù)值)之和fi_Size=(Oderfi/fi_sum)*Size;%找出優(yōu)秀編碼(與平均值作比較適應(yīng)度大于平均值的認(rèn)為優(yōu)秀)fi_S=floor(fi_Size);%floor向負(fù)無窮取整取整數(shù)只舍不入kk=1;fori=1:1:Sizeforj=1:1:fi_S(i)%選擇復(fù)制TempE(kk,:)=E(Indexfi(i),:);%大于平均值的認(rèn)為是優(yōu)秀的保留kk=kk+1;%記錄復(fù)制個(gè)數(shù)endendy=TempE;%輸出復(fù)制結(jié)果交叉:functiony=crossover_operation(probability_crossover,Size,TempE,E,BestS,CodeL)pc=probability_crossover;%交叉概率n=ceil(CodeL*rand);%ceil向正無窮取整產(chǎn)生0-Size的隨機(jī)數(shù)作為一點(diǎn)交叉切斷處fori=1:2:(Size-1)%上下兩個(gè)進(jìn)行交叉所以每步兩個(gè)temp=rand;%隨機(jī)產(chǎn)生數(shù)值作為概率比較ifpc>temp%大于設(shè)定則進(jìn)行交叉forj=n:1:CodeL%從切斷點(diǎn)向后開始進(jìn)行交叉運(yùn)算TempE(i,j)=E(i+1,j);%把E的第i+1行j列數(shù)值給TempE的第i行第j列TempE(i+1,j)=E(i,j);endendendTempE(Size,:)=BestS;%最大適應(yīng)度的編碼保存在最后,Size,:表示第Size行所有列y=TempE;變異:functiony=mutation_operation(probability_mutation,Size,CodeL,TempE,BestS)pm=probability_mutation;%變異概率fori=1:1:Size%對(duì)每行編碼查看是否變異forj=1:1:CodeL%對(duì)每個(gè)編碼進(jìn)行查看是否變異temp=rand;%產(chǎn)生變異概率ifpm>temp%大于設(shè)定概率則進(jìn)行變異TempE(i,j)=not(TempE(i,j));%如果該位置編碼為0就變?yōu)?,為1就變成0;endendendTempE(Size,:)=BestS;%最大適應(yīng)度的編碼保存在最后y=TempE;主函數(shù):%ga_maxmin(80,100,10,4,0,0.6,0.1)Functionga_maxmin=ga_maxmin(pop_size,gen_max,code_length,u_max,u_min,probability_crossover,probability_mutation)%Parameters%參數(shù)Size=pop_size;%種群規(guī)模G=gen_max;%最大進(jìn)化代數(shù)CodeL=code_length;%設(shè)定編碼長(zhǎng)度umax=u_max;%最大值變量范圍umin=u_min;%最小值變量范圍E_min=zeros(Size,CodeL);%初始化最小值編碼隨機(jī)產(chǎn)生需要種群*設(shè)定位數(shù)長(zhǎng)度二進(jìn)制編碼并四舍五入E_max=zeros(Size,CodeL);%初始化最小值編碼隨機(jī)產(chǎn)生需要種群*設(shè)定位數(shù)長(zhǎng)度二進(jìn)制編碼并四舍五入%MainProgram%主程序fork=1:1:G%對(duì)每代進(jìn)行操作time(k)=k;%保存本次進(jìn)化代序號(hào)fors=1:1:Size%對(duì)每條編碼進(jìn)行尋優(yōu)m=E_max(s,:);%提取當(dāng)前編碼m_min=E_min(s,:);%提取最小值部分當(dāng)前編碼%%%%%%%%%解碼x_max=uncodeing(CodeL,m,umax,umin);x_min=uncodeing(CodeL,m_min,umax,umin);%%%%%%%%%計(jì)算適應(yīng)度(函數(shù)值)F(1,s)=fitness_f(x_max);%最大值部分F(2,s)=x_max;%最大值部分保存對(duì)應(yīng)的x值F_min(1,s)=fitness_f(x_min);%最小值部分F_min(2,s)=x_min;%最小值部分保存對(duì)應(yīng)的x值end%Ji=1./F;%求倒數(shù)得出當(dāng)前目標(biāo)函數(shù)值fi=F(1,:);%將適應(yīng)度傳遞給fifi_min=F_min(1,:);%將最小值部分適應(yīng)度傳fi_min[Oderfi,Indexfi]=sort(fi);%將fi進(jìn)行排序Oderfi:由小到大的新排列;Indexfi:元素在原來數(shù)列中序號(hào)[Oderfi_min,Indexfi_min]=sort(fi_min);%將最小值部分fi_min進(jìn)行排序Oderfi_min:由小到大的新排列;Indexfi_min:元素在原來數(shù)列中序號(hào)Bestfi=Oderfi(Size);%得到最大適應(yīng)度的值Bestfi_min=Ode
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025機(jī)器買賣合同
- 2025資金托管合同范本資金托管協(xié)議書
- 2025進(jìn)料加工貿(mào)易合同
- 二零二五年度企業(yè)法人股東退出合同3篇
- 二零二五年度景區(qū)保潔員勞動(dòng)合同3篇
- 2025年度兼職協(xié)議書-企業(yè)數(shù)據(jù)分析師兼職服務(wù)協(xié)議3篇
- 2025年度養(yǎng)牛產(chǎn)業(yè)養(yǎng)殖廢棄物綜合利用合作合同3篇
- 二零二五年度綠色建筑經(jīng)營(yíng)權(quán)承包管理協(xié)議書3篇
- 2025年度退股投資者關(guān)系維護(hù)協(xié)議3篇
- 二零二五年度農(nóng)村自建房農(nóng)村自建房施工安全責(zé)任合同
- ISO15614-1 2017 金屬材料焊接工藝規(guī)程及評(píng)定(中文版)
- 《單片機(jī)技術(shù)》課件-2-3實(shí)現(xiàn)電子門鈴 -實(shí)操
- 《中國(guó)潰瘍性結(jié)腸炎診治指南(2023年)》解讀
- 縣級(jí)臨床重點(diǎn)??平ㄔO(shè)項(xiàng)目申報(bào)書
- 山東省濟(jì)南市2023-2024學(xué)年高一上學(xué)期1月期末英語試題
- 物業(yè)設(shè)施設(shè)備巡查與維護(hù)
- 2024年中電投內(nèi)蒙古西部新能源有限公司招聘筆試參考題庫含答案解析
- 【高中語文】《錦瑟》《書憤》課件+++統(tǒng)編版+高中語文選擇性必修中冊(cè)+
- 2024年上海市高考英語模擬試卷試題答案詳解(含聽力MP3+作文范文)
- 掌握當(dāng)眾講話訣竅范本
- 臨夏州新型城鎮(zhèn)化規(guī)劃(2021-2035年)
評(píng)論
0/150
提交評(píng)論