freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

用于軟件測試生成的微粒群優(yōu)化方法研究畢業(yè)論文-資料下載頁

2025-06-28 05:25本頁面
  

【正文】 s[i]=‘0’。Char s[4]={39。39。\039。39。}。//存放路徑編碼Void triangle(inta,intb,intc){if((a+b=c)||(a+c=b)||(b+c=a))//分支?{s[0]=39。139。printf(39。39。Not_a_Triangle !\n39。39。)。} else{s[0]=39。039。If(a!=bamp。amp。b!=camp。amp。a!=c)//分支? {s[1]=39。139。printf(39。39。Scalene!\n39。39。)。}else{s[1]=39。039。if(a==bamp。amp。a==c)//分支?{s[2]=39。139。printf(39。39。Equilateral!\n39。39。}else{s[2]=39。039。printf(39。39。Isosceles!\n39。39。)。}}}}三角形分類程序插樁后如上c語言代碼所示,帶下劃線部分為插樁的語句。 適應(yīng)值計(jì)算由于將目標(biāo)路徑用赫夫曼編碼表示,因此,設(shè)計(jì)適應(yīng)度函數(shù)與已有的工作有很大的區(qū)別。思想是:考察PSO產(chǎn)生的所有測試數(shù)據(jù)穿越的路徑編碼,逐一與每個目標(biāo)路徑編碼子串對比,有完全相同的說明已經(jīng)找到該子串對應(yīng)路徑的測試數(shù)據(jù),就保存該測試數(shù)據(jù),并把該子串從目標(biāo)路徑編碼串中刪除;通過比較測試數(shù)據(jù)穿越的路徑編碼與每個目標(biāo)路徑編碼的匹配程度,計(jì)算該測試數(shù)據(jù)的適應(yīng)值。記第t代進(jìn)化種群的個體為,在不引起混淆的情況下,仍記解碼后的測試數(shù)據(jù)為x。以x為被測試程序的輸入,穿越的路徑記為字符串p(x),字符串的位數(shù)記為|p(x)|。設(shè)此時目標(biāo)路徑還有n( x)個,記第j條目標(biāo)路徑為pj,根據(jù)p( x)與pj,j=1,2,3,n(t)的匹配程度,計(jì)算該個體的適應(yīng)值,記為f(x)。記| pj|為目標(biāo)路徑pj的編碼位數(shù),從左向右依次比較p(x)與pj,各位的編碼.記djk(p(x))為反映p(x)與pj第k位編碼是否相同的量,如果相同,則令djk (p(x))為1;否則,令djk(p(x))為0,這樣最多比較min(|p(x)|,|pj|)次??紤]到按位比較時相同位的個數(shù)越多,說明個體越接近目標(biāo)路徑對應(yīng)的測試數(shù)據(jù)。因此,在編碼按位比較的同時,用計(jì)數(shù)器mj標(biāo)記p(x)與pj相同位的個數(shù)。由于在適應(yīng)值計(jì)算之前找到測試數(shù)據(jù)的目標(biāo)路徑編碼已經(jīng)刪除,所以mjmin(|p(x)|,|pj|)。為了加大不同編碼位對應(yīng)的匹配程度之間的區(qū)別,對不同的編碼位設(shè)計(jì)了不同的權(quán)值,權(quán)值的大小取決于比較過程中的相同位的個數(shù)mj,mj越大權(quán)值越大。記比較到第k位時相同位的個數(shù)為mjk,并記P(x)與Pj的匹配程度為f39。j (x),則f39。j (x)可表示為: ()式()表明,p(x)與pj的相同位數(shù)越多,二者越匹配,則f39。j (x)越大.不同的編碼位對接近目標(biāo)路徑的貢獻(xiàn)不同。一般來講,越是先比較的編碼位,對接近目標(biāo)路徑的貢獻(xiàn)越大,即從前向后比較連續(xù)相同的位數(shù)越多,個體越接近目標(biāo)路徑的測試數(shù)據(jù)。因此,在計(jì)算x的適應(yīng)值時,為了增大進(jìn)化個體間適應(yīng)值的差別,盡量保留接近某個目標(biāo)路徑的測試數(shù)據(jù),對式()進(jìn)行如下修正:在p(x)與pj從前向后按位比較過程中,記錄從第一位開始連續(xù)相同的位數(shù),記為cj(p(x)),并記修正后的匹配程度為fj(x),則有: ()式()保證了從前向后比較過程中,連續(xù)相同位數(shù)越多的路徑,與目標(biāo)路徑的匹配程度越高。比如,若第位不相同,則cj,(p(x))=0,fj(x)=f39。j (x);若第一位相同,第二位不同,則cj(p(x))=1,fj(x)=2f39。j (x);依此類推.考慮p(x)與此時所有目標(biāo)路徑的匹配程度,取其平均值作為個體x的適應(yīng)值f(x),則有: ()以三個數(shù)排序程序?yàn)槔?,假設(shè)進(jìn)化到第t代時目標(biāo)路徑編碼為“010 100 111”,則目標(biāo)路徑數(shù)n(t)=3,三個目標(biāo)路徑分別為p1=“010”,p2=“100”,p3=“111”。若第1個個體x1穿越的路徑p(x1)為“101”,第2個個體x2穿越的路徑p(x2)為“001”,從直觀看來,第一個個體穿越路徑“101”和目標(biāo)路徑“100”相同位數(shù)為2,比較接近;而第二個個體穿越路徑“001”和任何一個目標(biāo)路徑比較相同位數(shù)都未達(dá)到2,所以,第一個個體優(yōu)于第二個個體.下面分別計(jì)算兩個個體的適應(yīng)值。先計(jì)算x1的適應(yīng)值:首先用“101”與“010”比較,得到d11(p(x1))=0,d12(p(x1))=0,d13(p(x1))=0,相同位的個數(shù)也為0,即m1l=ml2=m13=0,c1(p(x1))=0。則有:再用“101”與“100”比較,得到:最后,用“101”與“111”比較,得到:這樣一來,個體x1的適應(yīng)值為:采用同樣的方法,可以得到個體 x2的適應(yīng)值為:進(jìn)化過程中,若所有目標(biāo)路徑的測試數(shù)據(jù)都找到,則終止進(jìn)化;若進(jìn)化一定代數(shù)后,還有某一(些)路徑?jīng)]有找到,認(rèn)為該路徑是不可行路徑,結(jié)束進(jìn)化。根據(jù)粒子群算法機(jī)制,粒子的極值點(diǎn)有兩類:個體極值點(diǎn)(pbest)和全局極值點(diǎn)(gbest)。假設(shè)討論的粒子位置均不在障礙物以內(nèi),因此粒子均可獲得相應(yīng)的適應(yīng)值。對于第個粒子,在第()代的個體極值為,第代的適應(yīng)值為,則第代的個體極值更新公式為: ()所有粒子在第()代的全局極值為,第代的最大適應(yīng)值為,則第代的全局極值更新公式為: () 粒子位置的更新上一章中已經(jīng)闡述了粒子的速度和未知的更新方法,其速度和位置的更新方程為: () () 最初的PSO是從解決連續(xù)優(yōu)化問題發(fā)展起來的,Eberhart等又提出了PSO 的離散二進(jìn)制版[22],用來解決工程實(shí)際中的組合優(yōu)問題。他們在提出的模型中將每一維x id和pbestid限制為1 或者為0,而速度vid不作這種限制。用速度來更新位置時,如果vid高一些,粒子的位置x id更有可能選1 , vid低一點(diǎn)則選0,閾值在[ 0 , 1 ] 之間,而有這種特點(diǎn)的函數(shù)就是Sigmoid 函數(shù): () 二進(jìn)制版本PSO 的公式為: If then ;Else ()向量 的各個分量是[ 0 , 1 ] 之間的隨機(jī)數(shù)[1 ]。為了防止Sigmoid函數(shù)飽和, 可以將鉗位在[ , + ] 之間。二進(jìn)制PSO其他部分與基本連續(xù)PSO 類似[23]。實(shí)驗(yàn)結(jié)果顯示, 在大多數(shù)測試函數(shù)中, 二進(jìn)制PSO都比遺傳算法速度快,尤其在問題的維數(shù)增加時?;诤辗蚵木幋a方式以及PSO的二進(jìn)制算法,具體的算法步驟如下步驟 1 用PSO初始化一群隨即粒子,對每個粒子進(jìn)行賦值、編碼;步驟 2 在算法中對控制參數(shù)賦值,對被測的粒子進(jìn)行程序編碼,插樁被測程序;步驟 3 執(zhí)行被測試程序;步驟 4 判斷是否有完全匹配的粒子,若有,保存與該進(jìn)化粒子對應(yīng)的測試數(shù)據(jù),從目標(biāo)路徑編碼中刪除該被匹配的路徑對應(yīng)的編碼;步驟 5 判斷是否滿足終止準(zhǔn)則,若是,轉(zhuǎn)步驟8;步驟 6 根據(jù)式計(jì)算進(jìn)化個體適應(yīng)值;步驟 7 用PSO計(jì)算更新進(jìn)化粒子,生成子代進(jìn)化種群,轉(zhuǎn)步驟3;步驟 8 停止進(jìn)化,解碼進(jìn)化個體,輸出測試數(shù)據(jù)及最優(yōu)粒子解。最后,將提出的方法用于基準(zhǔn)程序的路徑覆蓋測試數(shù)據(jù)生成,并與已有方法比較,驗(yàn)證所提方法的有效性。 本章小結(jié)本章闡述了微粒群優(yōu)化算法的編碼過程,利用赫夫曼編碼方式,改進(jìn)PSO中的微粒極值點(diǎn)和位置及速度的更新方法,設(shè)計(jì)了一種用于路徑覆蓋的微粒群優(yōu)化算法。下章我們將提出的方法用于基準(zhǔn)程序的路徑覆蓋測試數(shù)據(jù)生成,并與已有方法比較,驗(yàn)證所提方法的有效性。第四章 實(shí)驗(yàn)仿真上述章節(jié)已詳細(xì)介紹了PSO的編碼方式、極值點(diǎn)的更新、位置及速度的更新方式,以及用于路徑覆蓋數(shù)據(jù)PSO生成算法。本章將基于C語言編程完成上述算法的實(shí)例仿真,并與遺傳算法截稿對比,驗(yàn)證其可行性。 C語言的開發(fā)環(huán)境簡介 C語言的發(fā)展過程 C語言是在70年代初問世的。一九七八年由美國電話電報(bào)公司(ATamp。T)貝爾實(shí)驗(yàn)室正式發(fā)表了C語言。“THE C PROGRAMMING LANGUAGE”一書。通常簡稱為《Kamp。R》,也有人稱之為《Kamp。R》標(biāo)準(zhǔn)。但是,在《Kamp。R》中并沒有定義一個完整的標(biāo)準(zhǔn)C語言,后來由美國國家標(biāo)準(zhǔn)學(xué)會在此基礎(chǔ)上制定了一個C語言標(biāo)準(zhǔn),于一九八三年發(fā)表,通常稱之為ANSIC。 早期的C語言主要是用于UNIX系統(tǒng)。由于C語言的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識,到了八十年代,C開始進(jìn)入其它操作系統(tǒng),并很快在各類大、中、小和微型計(jì)算機(jī)上得到了廣泛的使用。成為當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語言之一。 C語言的特點(diǎn) C語言是一種結(jié)構(gòu)化語言。它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。C語言的表現(xiàn)能力和處理能力極強(qiáng)。它不僅具有豐富的運(yùn)算符和數(shù)據(jù)類型,便于實(shí)現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實(shí)用性結(jié)合起來。C語言可以象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作, 而這三者是計(jì)算機(jī)最基本的工作單元。C的運(yùn)算符包含的范圍很廣泛,共有種34個運(yùn)算符。C語言把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極其豐富表達(dá)式類型多樣化[27],靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級語言中難以實(shí)現(xiàn)的運(yùn)算。 C的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語言具有強(qiáng)大的圖形功能, 支持多種顯示器和驅(qū)動器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。C語法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大 一般的高級語言語法檢查比較嚴(yán),能夠檢查出幾乎所有的語法錯誤。而C語言允許程序編寫者有較大的自由度。C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作 因此既具有高級語言的功能,又具有低級語言的許多功能,能夠象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元,可以用來寫系統(tǒng)軟件。C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高一般只比匯編程序生成的目標(biāo)代碼效率低10へ20%。C語言適用范圍大,可移植性好 語言有一個突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機(jī)型[26]。它還可以直接訪問內(nèi)存的物理地址,進(jìn)行位(bit)一級的操作。由于C語言實(shí)現(xiàn)了對硬件的編程操作,因此C語言集高級語言和低級語言的功能于一體[224]。既可用于系統(tǒng)軟件的開發(fā),也適合于應(yīng)用軟件的開發(fā)。此外,C語言還具有效率高,可移植性強(qiáng)等特點(diǎn)。因此廣泛地移植到了各類各型計(jì)算機(jī)上,從而形成了多種版本的C語言。 C語言版本 目前最流行的C語言有以下幾種:    Microsoft C 或稱 MS C    Borland Turbo C 或稱 Turbo C    ATamp。T C   這些C語言版本不僅實(shí)現(xiàn)了ANSI C標(biāo)準(zhǔn),而且在此基礎(chǔ)上各自作了一些擴(kuò)充,使之更加方便、完美。 C和C++ 但是,C是C++的基礎(chǔ),C++語言和C語言在很多方面是兼容的。因此,掌握了C語言,再進(jìn)一步學(xué)習(xí)C++就能以一種熟悉的語法來學(xué)習(xí)面向?qū)ο蟮恼Z言,從而達(dá)到事半功倍的目的。 面向?qū)ο蟮某绦蛟O(shè)計(jì)語言 在C的基礎(chǔ)上,一九八三年又由貝爾實(shí)驗(yàn)室的Bjarne Stroustrup推出了C++。 C++進(jìn)一步擴(kuò)充和完善了C語言,成為一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。C++目前流行的最新版本是Borland C++,Symantec C++,和Microsoft VisualC++ 。C++提出了一些更為深入的概念[25],它所支持的這些面向?qū)ο蟮母拍钊菀讓栴}空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)程序設(shè)計(jì)不同的思維方式和編程方法。因而也增加了整個語言的復(fù)雜性,掌握起來有一定難度。 源程序的結(jié)構(gòu)特點(diǎn) 為了說明C語言源程序結(jié)構(gòu)的特點(diǎn),先看以下幾個程序。這幾個程序由簡到難,表現(xiàn)了C語言源程序在組成結(jié)構(gòu)上的特點(diǎn)。雖然有關(guān)內(nèi)容還未介紹,但可從這些例子中了解到組成一個C源程序的基本部分和書寫格式。 main() { printf(,您好!\n)。 }   main是主函數(shù)的函數(shù)名,表示這是一個主函數(shù)。每一個C源程序都必須有,且只能有一個主函數(shù)(main函數(shù))。函數(shù)調(diào)用語句,printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示。printf函數(shù)是一個由系統(tǒng)定義的標(biāo)準(zhǔn)函數(shù),可在程序中直接調(diào)用。 include include main() { double x,s。 printf(input number:\n)。 scanf(%lf,amp。x)。 s=sin(x)。 printf(sine of %lf is %lf\n,x,s)。 } 上述程序的功能是從鍵盤輸入一個數(shù)x,求x的正弦值,然后輸出結(jié)果。在main()之前的兩行稱為預(yù)處理命令。預(yù)處理命令還有其它幾種,這里的include 稱為文件包含命令,其意義是把尖括號或引號內(nèi)指定的文件包含到本程序來,成為本程序的一部分。被包含的文件通常是由系統(tǒng)提供的。因此也稱為頭文件或首部文件。C語言的頭文件中包括了各個標(biāo)準(zhǔn)庫函數(shù)的函數(shù)原型。因此,凡是在程序中調(diào)用一個庫函數(shù)時,都必須包含該函數(shù)原型所在的頭文件。在本例中,使用了三個庫函數(shù):輸入函數(shù)scanf,正弦函數(shù)sin,輸出函數(shù)printf。sin函數(shù)是數(shù)學(xué)函數(shù)。scanf和printf是標(biāo)準(zhǔn)輸入輸出函數(shù)。 實(shí)驗(yàn)內(nèi)容 參數(shù)設(shè)置為了驗(yàn)證本文方法的性能,選擇了三角形分類、求最大最小值、冒泡排序 ,以及三個數(shù)排序4個基準(zhǔn)程序。它們的結(jié)構(gòu)各不相同,每組實(shí)驗(yàn)在相同參數(shù)、相同的初始種群下使用本文方法和GA方法各運(yùn)行100次,比較兩算法在找到覆蓋相同目標(biāo)路徑測試數(shù)據(jù)的運(yùn)行時間、進(jìn)化代數(shù)等指標(biāo)。所有程序均用C語言編寫,在VC++,內(nèi)存為2GB,: 被測程序的參數(shù) 程序名分支語句及個數(shù)分支語句構(gòu)成三角形分類3個選擇構(gòu)成3個選擇嵌套求最大最小值1個循環(huán)、2個選擇循環(huán)中嵌套2個并列的選擇冒泡排序2個循環(huán)、1個選擇構(gòu)成2層循環(huán)嵌套,內(nèi)層嵌套中有1個選擇三個數(shù)排序3個選擇構(gòu)成選擇并列關(guān)系 PSO參數(shù)設(shè)置參數(shù)加速系數(shù)c1加速系數(shù)c2隨機(jī)數(shù)rr2速度最大值位置編碼方式取值22[0,1]VmaxZmax二進(jìn)制 GA參數(shù)設(shè)置參數(shù)種群規(guī)模變異概率交叉概率終止條件取值30100 在三角形分類程序中的實(shí)驗(yàn)首先,針對三角形分類程序的不同數(shù)據(jù)范圍,目標(biāo)路徑選擇全部4條可行路徑,設(shè)定找到全部路徑為結(jié)束條件。實(shí)驗(yàn)時記錄每次找到各條路徑的進(jìn)化代數(shù),并求100次進(jìn)化代數(shù)的平均值。由于每次運(yùn)行的進(jìn)化時間只有幾毫秒,所以只是記錄了100次的總進(jìn)化時間。表中的代數(shù)比和時間比均通過本文方法/GA方法得到::(1)隨著輸入數(shù)據(jù)范圍的增大,兩種方法找到目標(biāo)路徑的進(jìn)化代數(shù)和進(jìn)化時問增加,這是由于輸入數(shù)據(jù)范圍的增大使得搜索難度加大所致;(2)對于不同的輸人數(shù)據(jù)范圍,兩種方法的代數(shù)比和時間比不同,%% ,說明找到覆蓋目標(biāo)路徑的數(shù)據(jù),本文方法最多只需要GA方法約五分之四的進(jìn)化代數(shù)和進(jìn)化時間;(3)隨著輸入數(shù)據(jù)范圍的增大,時間比越來越小,說明本文方法在大輸入數(shù)據(jù)范圍下的優(yōu)越性更明顯。 三角形實(shí)驗(yàn)結(jié)果數(shù)據(jù)范圍種群規(guī)模平均進(jìn)化代數(shù)總進(jìn)化時間(s)本文方法GA方法代數(shù)比(%)本文方法GA方法時間比(%)[0,100]330[0,200]350[0,500]380[0,1000]3100[0,2000]3200現(xiàn)在考察找到覆蓋每一個目標(biāo)路徑的測試數(shù)據(jù)的進(jìn)化代數(shù)。為此,以輸入數(shù)據(jù)范圍[0,1000]為例,記錄了100次找到覆蓋每一個目標(biāo)路徑的測試數(shù)據(jù)的進(jìn)化代數(shù),并計(jì)算其平均值,:非三角形非等邊三角形等腰三角形等邊三角形本文方法11GA方法11:(1)覆蓋非三角形和非等邊三角形路徑的測試數(shù)據(jù)容易尋找,兩種方法均在第1代找到這些數(shù)據(jù);(2)覆蓋等腰三角形的測試數(shù)據(jù)也在較少的進(jìn)化代數(shù)找到,兩個方法差別不大;(3)覆蓋等邊三角形的測試數(shù)據(jù)難以尋找,;。由此可以看出,對于難以覆蓋路徑的測試數(shù)據(jù)尋找,本文方法在進(jìn)化代數(shù)方面明
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1