




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、人工智能大作業班級:021351姓名(學號):2015年12月16號題目一:搜索算法編程及實驗報告題目:八數碼難題的求解1 .實驗目的問題描述:現有一個3*3的棋盤,其中有0-8一共9個數字,0表示空 格,其他的數字可以和0交換位置(只能上下左右移動)。給定一個初始狀 態和一個目標狀態,找出從初始狀態到目標狀態的最短路徑的問題就稱為八數碼問題。例如:實驗問題為283104765從初始狀態:1133到目標狀態:要求編程解決這個問題,在盲目搜索和啟發式搜索方法中分別選擇一種方法 來求解八數碼難題。給出搜索樹從初始節點到目標節點的路徑。2 .實驗設備及軟件環境利用計算機編程軟件Visual C+ 6
2、. 0,用C語言編程解決該問題。3 .實驗方法法1:用啟發式搜索中的有序搜索方法來解決該問題(1) .算法描述: .把初始節點S放到OPEN表中,計算,并把其值與節點S聯系起 來。 .如果OPEN表是個空表,則失敗退出,無解。 .從OPEN表中選擇一個/值最小的節點。結果有幾個節點合格,當其 中有一個為目標節點時,則選擇此目標節點,否則就選擇其中任一節點作為 節點 .把節點,從OPEN表中移出,并把它放入CLOSED的擴展節點表中。 .如果i是目標節點,則成功退出,求得一個解。 .擴展節點i,生成其全部后繼節點。對于i的每一個后繼節點八 a.計算/(力。b.如果,既不在OPEN表中,也不在CL
3、OSED表中,則用估價函數/把 它添加入OPEN表。從,加一指向其父輩節點,的指針,以便一旦找 到目標節點時記住一個解答路徑。c.如果j已在OPEN表或CLOSED表上,則比較剛剛對j計算過的/值 和前面計算過的該節點在表中的/值。如果新的/值較小,則I.以此新值取代舊值。II .從J指向i,而不是指向它的父輩節點。III .如果節點,在CLOSED表中,則把它移回OPEN表。轉向,即GO TO。OPN-NH?Wn«15rt.j.計R0JI,健VttiM的Ri什. M同即持嚀, HR泉干犬系及抵*(3).程序源代碼:首include <stdio. h>#include&
4、lt;stdlib. h>struct nodeint number 3 3; 用二維數組存放8數碼int W;/W表示與目標狀態相比錯放的數碼數int Depth;記錄當前節點的深度struct node "parent; 指向父節點的指針struct node *next;指向鏈表中下一個節點的指針int CounterW(int Number33)(2).流程圖描述:函數說明:計算當前狀態與目標狀態的w值int i, j;int W=0;int Desnode 3 3 = 1, 2, 3, 8, 0, 4, 7, 6, 5;for(i=0; i<3; i+)for(
5、j=0; j<3; j+)if(Numberij != DesnodeEij)W+;return W;)void PrintNode(node *A)(int i, j;for(i=0; i<3; i+)(for(j=0; j<3; j+)printf(/d , A->numberij);printfCW);)printf CXn");)int CheckNode(node *open, node *close, int a33) 檢驗該節點狀態是否出現過的子程序int CheckFlag=0;int flagl, flag2;node *p=open;nod
6、e *q=close;while(p != NULL)(flagl=0;for(int i=0; i<3; i+)for(int j=0; j<3; j+)if(aij=p->numberij) flagl+;)if (flagl = 9)break;elsep=p->next;)while(q != NULL)(flag2=0;for(int i=0; i<3; i+)(for(int j=0; j<3; j+)if (aij = q->numberij) flag2+;)if (flag2 = 9)break;elseQ=q->next;)i
7、f(flagl=9) | (flag2=9)CheckFlag=1 ;如果出現過,置標志位為1 return CheckFlag;)struct node *FindNextNode(node *Prenode, node *open, node *close) 擴展Prenode指向的節點,并將擴展所得結點組成一條單鏈表int n; 循環變量int temp;臨時替換變量int flag=0;int a33;臨時存放二維數組struct node *p, *q, *head;head= (node *)malloc(sizeof (node) ;head 指向該鏈表首結點,并 且作為返回值p
8、二head;q二head;head->next=NULL; 初始化for(i=0;i3;i+)找到二維數組中0的位置(for(j=0;j<3;j+)if(Prenode-numberij=0)(flag=l;break;)if(flag=l)break;)根據0的位置的不同,對a進行相應的變換for (m=0; m<3; m+) /W Prenode->number 賦給 afor (n=0;n<3;n+)amn=Prenode->numbermn;if(i+l<=2)情況1, 0向下移(temp=ai j ; ai j=ai+lj j ; ai+l
9、j=temp;int CheckNum=CheckNode(open, close, a);if(CheckNum = 0) 若該結點未出現過則執行下面的操作 (q= (node *)malloc(sizeof(node);for (m=0;m3;m+) 將 a 賦給擴展節點 q->numberfor (n=0;n<3;n+)q->numbermJn=amn;PrintNode(q);q->parent=Prenode;am n=Prenode->numbermn;if(j-l>=0)情況3,0向左移(temp=ai j ; ai j=ai j-1 ; ai
10、 j-l=temp;int CheckNum=CheckNode(open, close, a);if(CheckNum = 0) 若該結點未出現過則執行下面的操作 (q=(node *)malloc(sizeof(node);for (m=0; m<3; m+) 將 a 賦給 q->numberfor (n=0; n<3; n+)q->numbermJn=amn;PrintNode(q);q->parent=Prenode;q->Depth=q->parent->Depth+l;q->W=CounterW(q->number);q-
11、>next=NULL;p->next=q;p=p->next;)for(m=0;m<3;m+)for (n=0;n<3;n+)amn=Prenode->numbermn;if(j+"=2)情況4,0向右移(temp=ai j ; aij+1 ; ai j+l=temp;int CheckNum=CheckNode(open, close, a);if(CheckNum = 0) 若該結點未出現過則執行下面的操作 (q= (node *)malloc(sizeof(node);for (m=0; m<3 ; m+) 將 a 賦給 q->n
12、umberfor (n=0; n<3; n+)q->numbermJn=amn;PrintNode(q);q->parent=Prenode;q->Depth=q->parent->Depth+l;q->W=CounterW(q->number);q-next=NULL;p->next=q;p=p->next;)head=head->next;return head;)node "insert(node *open,node *head) 將head鏈表的結點依次插入到open鏈表相應的位置,使open表中的結點按從小
13、到大排序。函數返回open指針node *p, *q;p、q均指向open表中的結點,p指向q所指的前一個結占 八、int flag=0;if (open二二NULL) && (head !二 NULL) 初始狀態,open 表為空 首先將head表第一個結點直接放入open表中open=head;q=head;head=head->next;q-next=NULL;)if(open != NULL) && (open->next=NULL) &&(head != NULL)/open表中只有一個元素q=open;if(head-&g
14、t;W + head->Depth) < (open->W + open-Depth)若后一結點的f值小于首結點,則將它插入到首結點位置open=head; head=head->next;open-next=q;)else 或者第二個結點的位置(q->next=head;head=head->next;q=q->next;q->next=NULL;)p=open;)while (head!=NULL)(q=open;if(head->W + head->Depth) < (open-W + open->Depth)插入到
15、表頭open=head;head=head->next;open-next=q;continue;)else(q=q->next; p=open;) 否則,q指像第二個結點,P指向q前一個結點while (q->next! =NULL) 將head的一個結點插入到鏈表中(非表 尾的位置)(if(q->W < head->W)q=q->next;p=p->next;elsep->next=head;head二head-next;p->next->next=q;break;)if (q->next=二NULL)將head的一個
16、結點插入到表尾或倒數第二個 位置(if(q->W + q->Depth) < (head->W + head-Depth)q->next=head;head=head->next;q->next->next=NULL;)else(p->next=head;head=head->next;p->next->next=q;)return open;)void main ()(int i, j;int key=0;node FirstNode;node *open, *close;node *p, *r;node *NodeLi
17、st;printf (請輸入初始狀態的8數碼(按每行從左往右依次輸入,用0表示 空格):n);for(i=0; i<3; i+)for(j=0; j<3; j+)scanf &FirstNode. number i j);printf CW);printf (搜索樹為:n); for(i=0; i<3; i+) (for(j=0; j<3; j+)printf (,z%d ”, FirstNode. numberi j);printf Cn,z);)printf CW);FirstNode. parent=(node *)malloc(sizeof(node);
18、FirstNode. Depth=0; 開始結點深度為零FirstNode. W=CounterW(FirstNode. number);open=&F irstNode;p=&FirstNode;if(open->W二=0)該結點的狀態與目標結點相同 (printf (該結點已為目標結點狀態! n); return;)r=&FirstNode;close=&FirstNode;r->next=NULL;open=NULL;NodeList=FindNextNode (r, open, close) ;/NodeList 指向新擴展 出來的鏈表ope
19、n=insert (open, NodeList); 將擴展出來的結點插入到open表while(open != NULL)r-next=open;將open表的第一個元素加到close表,r始終 指向close表的最后一個元素open=open->next;r=r->next;r->next=NULL;if(r->W = 0) (key=1;printf (n啟發式搜索成功! n); break;)NodeList=FindNextNode (r, open, close);對 close 表最后一 個結點進行擴展,擴展得到的鏈表接到head表open二insert
20、(open, NodeList);將擴展的結點按順序插入到 open表中)if (key = 1)(p=close;printf (最優搜索過程如下:n);printf (結點深度為:%dn,z, FirstNode. Depth);printf (;while(p!=NULL)( for(i=0; i<3; i+) (for(j=0; j<3; j+)printf (/d , p->numberij);printf CXn");)printf(n); p=p->next;if(P != NULL)printf (結點深度為:%dn", p->
21、Depth);printf (n);) elseprintf(查找失敗,該問題無解! n);)法2:用盲目搜索中的寬度優先搜索法解決該問題(1) .算法描述: .把初始節點So放入OPEN表; .如果OPEN表為空,則問題無解,退出;否則繼續。 .把OPEN表的第一個節點(記為n)取出放入CLOSE表; .擴展節點n。如果沒有后繼節點,則轉向上述第步。 .把n的所有后繼節點放到OPEN表的末端,并提供從這些后繼節點回到n的指 針。 .如果n的任一個后繼節點是個目標節點,則找到一個解答,成功退出;否則 轉向第步。(2).流程圖:把5放入open表是:否 用, 赤石 藝否把cpen表中的第一個節點
22、、 n移入close表q,擴舐節點心把苴后商放入 open表的前頭否募屋王目標令占,?一一一一 1功二)程序源代碼:ttinclude <stdio. h>ttinclude <stdlib. h>ttdefine TIME 50限定只搜索前50步,50步以后如果仍然沒有搜索到結果,認為無解。ttdefine MAXSIZE 200int n = 1, i, j, k;int result 9 = 1, 2, 3, 8, 0, 4, 7, 6, 5 ;所要達到的最終狀態,0 代表空格。typedef structint num9;char expension;記錄是否可
23、以擴展,Y代表可以擴展,N代表不可以。char banOperate;表示不可以執行的操作,'L'代表不能左移,R'代表不能右移,'代表不能上移,D'代表不能下移,'C'代表可以任意移動。int father;記錄父節點的下標。Node;Node store MAXSIZE;將搜索過的狀態存儲于該數組中。int same (int temp)判斷是否達到了目標狀態。(for (j = 0; j<9; j+)if (storetemp. numj != resultj)return 0;return 1;)輸出搜索結果。void pr
24、intResult()(for (j = 1; j <= n; j+)printf ("第%d 步搜索后:n,j);printf (,zt%dt%dt%dn/z, storeEj. numLOJ, storej. numl,storej. num2);printf ("t%dt%dt%dn, store j. num5);printf ("t%dt%dt%dn, store j. num8);storeEj. num3,storeEj. num6,storej. num4,storej. num7,printf Cnn");)int left (i
25、nt temp)將空格進行左移操作。(for (j = 0; j<9; j+)判斷空格的位置。if (storetemp. numj= 0) break;if (j = 0 | j = 3 | j = 6) return 0;for (k = 0; k<9; k+)store n. numk = store temp. numk;int tempNum = storen. numj - 1;將移動后的狀態賦給storenJstoren. numj - 1 = 0;storen. numj= tempNum;storetemp, expension ='N' ;sto
26、renJ. banOperate ='R'storenJ. expension ='Y'storenJ. father = temp;if (same(n)判斷storen是否為最終想得到的狀態。printResult();exit (1);n+;return 1;)int right (int temp)將空格進行右移操作。(for (j = 0; j<9; j+)if (storetemp. numj=二 0) break;if (j = 2 | j = 5 | j = 8)return 0;for (k = 0; k<9; k+)store n
27、. numk = store temp. numk;int tempNum 二 store n. num j + 1;storen. numj + 1 = 0;storen. numj = tempNum;storetemp, expension = ' N' ;storen. banOperate ='L'storen. expension ='Y'storen. father = temp;if (same(n)(printResult ();exit (1);)n+;return 1;)int up (int temp)將空格進行上移操作。
28、(for (j = 0; j<9; j+)if (storetemp. numj=二 0) break;if (j - 0 | | J = 1 I I J - 2) return 0;for (k = 0; k<9; k+)storen. numk = storetemp. numk;int tempNum 二 storen. numj - 3;storen. numj - 3 = 0;storen. numj = tempNum;storetempi, expension ='N' ;storenJ. banOperate ='D'storenJ.
29、 expension ='Y' ;storenJ. father = temp;if (same(n)(printResult();exit (1);n+;return 1;int down(int temp)將空格進行下移操作。for (j = 0; j<9; j+)if (storetemp. numj=二 0) break;if (j = 6 | j = 7 | j = 8) return 0;for (k = 0; k<9; k+)store n. numk = store temp. numk;int tempNum 二 store n. num j +
30、3;storen. numj + 3 = 0;storen. numj = tempNum;storetempi, expension ='N' ;storenJ. banOperate ='U'storen. expension ='Y'storen. father = temp;if (same(n)(printResult ();exit (1);)n+;return 1;)void init ()(Node start;printf (請輸入初始狀態,用空格分開,0代表空格:n);輸入初始的狀 態。for (i = 0; i<9;
31、i+)scanf (/d,&start. numi);for (k = 0; k<9; k+)if (start. numk = 0)break;start.banOperate ='C'start, expension ='Y'start, father = 1;store 0 = start;將初始狀態賦于store0o)void main () init();if (same(0)(printf (沒有必要進行搜索,初始狀態即為最終狀態!);exit (1);開始進行寬度搜索,for (i = 0; i<TIME; i+)限定搜索上限為
32、50步。(if (storei. expension ='Y')(if (storei. banOperate = 'L') (up;right (i);down (i);)if (storei. banOperate = ' R') (left (i);up;down (i);)if (storei. banOperate = 'U') (left (i);right (i);down (i);)if (storei. banOperate = ' D') (left (i);up;right (i);)if (
33、storei. banOperate = 'C')left (i);UP; right (i); down (i);)50步以后仍然沒if (n >= TIME)有達到所要求的狀態,認為無解。printResult();printf ("Sorry,在所在搜索范圍內沒有搜索到結果! ); exit (1);)4.實驗結果(1) .有序搜索的搜索結果為: 搜索樹為:時摘人初始狀念的8敷碼(按每行從左在右依次輸入,用。我:示空格), 283104765及南樹知2 8 $10 47 6 52 8 316 47 0 5V * 18 4 7 6 52 8 3 0 I 4
34、7 6 52 8 3 14 0 7 6 50 2 318 47 6 512 3 0 18 4 7 6 52 8 3 7 1 4 0 6 50 8 32 1 4 7 6 51 2 3 0 8 4 7 6 51 2 2 7 8 4 0 6 512 3 0 8 4 7 6 51 2 3 7 8 4 0 6 51 2 3 8 0 4 7 6 5最短路徑為:啟發式搜索成功! 最優搜索過程如下. 結點深度為:03 4 58 0 62 17踣點深度為:13 4 50 8 62 17馀點深度為:13 4 58 162 O 7結點深度為:2結點深度為:2 0 2 31 8 47 6 5結點深度為:3 1 2 3
35、0 2 47 6 5結點深度為:4(2) .寬度優先搜索結果為:請輸入初始狀態用空格分開.。代表空格:|2 8 3 1 0 4 7 第1步搜索后:6 5222014765第2步投索后,2Q3184765第衛步投孝后,第4步搜親后:2231647C第5步搜索后;083214765第6步搜索后,223714065第7步搜索后,023184765第8步搜索后,230184765第g步搜索后,217第1。步搜索后, 2 1 7第11步投索后, 2 1 0笫12步投素后,217第L3步投索后,圖步搜索后;第15步投索后:1 07第步搜索后,17步技索后:2 1窘18步搜索后:21719步搜索后22 01
36、黑2。步搜索后, 2 1721步投索后,827已2步投奈后.七?步技素后,24步接索后,第25步搜索后;1 875 .實驗分析啟發式搜索采用簡單的估價函數:f(n) = d (n) + W (n)其中d()是搜索樹中節點的深度;w()用來計算對應于節點的數據庫中錯 放的棋子個數。例如初始節點的估價函數值為3。估價函數能夠提供一個評定候選擴展節點的方法,以便確定哪個節點時最有 可能在通向目標的最佳路徑上。這樣選擇正確的估價函數,可以減少擴展節點個 數,對于實驗所給的初始節點和估價函數,只用擴展n個節點就能找到目標節 點;相比于盲目搜索可以減少被擴展的節點數,減少很多空間占用和時間損耗。利用啟發信
37、息來決定哪一個是下一步要擴展的節點,這種搜索總是選擇“最 有希望”的節點作為下一步被擴展的節點。這實際上是通過估價函數值的大小 重排OPEN表,小的一直排在OPEN表的前面。每次取OPEN表的第一個節點放 到CLOSED表中進行擴展,這樣一步步靠近目標節點,直到最后找到目標節點, 停止擴展。6 .結論正確選擇估價函數對確定搜索結果具有決定性作用。使用不能識別某些 節點真是希望的估價函數會形成非最小代價路徑;而使用一個過多地估計了 全部節點希望的估價函數,乂會擴展過多的節點。在選對估價函數的前提下, 啟發式搜索能準確識別有希望和沒有希望的節點,從而很快擴展到目標節點, 找到最短路徑。在本次實驗中
38、如果選擇估價函數值為=(W()用來計算對應于節點的數據庫中錯放的棋子個數),將會擴展更少的節點, 更加快的找到到達目標節點的最短路徑。題目二:計算智能編程及實驗報告題目:遺傳算法編程求解最優化問題1 .實驗目的理解基本遺傳算法的原理,編寫MATLAB程序,并利用程序實現利用遺傳算法 優化非線性函數的解。函數f (x) = -x'2 - 4x + 1,求max f (x), x -2, 2, 解的精度保留二位小數。2 .實驗設備及軟件環境利用計算機編程軟件MATLAB 7. 10. 0,用MATLAB編程解決該問題。3 .實驗方法(1)算法描述:遺傳算法概要遺傳算法是具有“生成+檢測”的
39、迭代過程的搜索算法。它的基本處理流程 如圖6.1所示。由此流程圖可見,遺傳算法是一種群體型操作,該操作以群體中 的所有個體為對象。選擇(Selection) 交叉(Crossover)和變異(Mutation) 是遺傳算法的3個主要操作算子,它們構成了所謂的遺傳操作(genetic operation),使遺傳算法具有了其它傳統方法所沒有的特性。遺傳算子包含如 下6個基本因素: 參數編碼:由于遺傳算法不能直接處理解空間的解數據,因此必須通過編碼 將它們表示成遺傳空間的基因型串結構數據。生成初始群體:由于遺傳算法的群體型操作需要,所以必須為遺傳操作準備 一個由若干初始解組成的初始群體。初始群體的
40、每個個體都是通過隨機方法產 生。適應度評估檢測:遺傳算法在搜索進化過程中一般不需要其他外部信息,僅 用適應度(fitness)值來評估個體或解的優劣,并作為以后遺傳操作的依據。 選擇(selection):選擇或復制操作是為了從當前群體中選出優良的個體, 使它們有機會作為父代為下一代繁殖子孫。個體適應度越高,其被選擇的機會就 越多。此處采用與適用度成比例的概率方法進行選擇。具體地說,就是首先計算 群體中所有個體適應度的總和(Z/ ),再計算每個個體的適應度所占的比例 (£/Z/),并以此作為相應的選擇概率。交叉操作:交叉操作是遺傳算法中最主要的遺傳操作。簡單的交叉(即一點 交叉)可分
41、兩步進行:首先對種群中個體進行隨機配對;其次,在配對個體中隨 機設定交叉處,配對個體彼此交換部分信息。©變異:變異操作是按位(bit)進行的,即把某一位的內容進行變異。變異操 作同樣也是隨機進行的。一般而言,變異概率都取得較小。變異操作是十分微 妙的遺傳操作,它需要和交叉操作配合使用,目的是挖掘群體中個體的多樣性, 克服有可能限于局部解的弊病。算法步涯Stepl:參數設置及種群初始化;Step2:適應度評價;Step3:輪盤賭選擇;Step4:交叉;Step5:變異;SteP6:適應度評價;Step7:終止條件判斷,若未達到終止條件,則轉到Step3;Step8:輸出結果。(2)算法
42、流程圖:(3)程序代碼:主函數:clearclcmy_scale=80; %種群規模gen_len=22;%基因長度M=100;為迭代次數pc=0.7;外交叉概率pm=0. 05;%變異概率new_scale=produscale (my_scale, gen_len); 先產生初始種群 fitfit=;fittimer=;best_f 1=;best_xl=;for i=l:Mmy_f=cal_my_f (new_scale) ;%計算函數值my_fit=cal_my_fit (my_f);%計算適應度值next_scale=my_sellect (new_scale, my_fit);先采
43、用賭輪盤法選擇 cross_scale=my_cross (next_scale, pc);先按概率交叉mut_scale=my_mutat (cross_scale, pm);先按概率變異%尋找每一代中的最優適應度值所對應的個體 best_f it=my_f it (1);sx,sy=size(new_scale);for j=2:length(my_fit)if best_f it<my_fit (j) best_f it=my_f it (j); best_f=my_f (j);best_x=my2tol0 (new_scale (j,:);best_x=-2+best_x. *4
44、 / (2 sy-l);endendnew_scale=mut_scale;fitfit=Lfitfit, best_fit;best_f 1= best_f 1, best_f; best_xl= best_xl, best_x; fittimer=fittimer, i;endLbest_fit, loca=max(fitfit); best_f=best_f1(loca);best_x=best_xl(loca);disp(' best_fit, best_f, best_x=,) disp(best_fit, best_f, best_x) subplot(2,2, 1)plo
45、t (fittimer, fitfit)xlabel C 迭代次數(1) -wxb');ylabelC適應度函數')grid on%子函數:產生初始種群function initscale=produscale(my_scale, gen_len) initscale=round(rand(my_scale, gen_len);end%子函數:計算函數值function my_f=ca 1 _my_f (new_scale)mychange=my2tol0 (new_scale);sx, sy=size(new_scale);change_x=-2+mychange. *4/(
46、2 sy-1);my_f=-change_x. 2-4. *change_x+l;end%子函數:計算適應度值function my_f it=cal_my_f it (my_f) f_min=5;for i=l:length(my_f)if my_f (i) +f_min<=0my_fit(i) =0;elsemy_f it (i)=my_f (i)+f_min;endendend%子函數:采用賭輪盤法選擇function next_scale=my_sellect (new_scale, my_f it)sum_of_f=sum(my_f it);accum=my_fit/sum_o
47、f_f;accum=cumsum(accum);sx, sy=size(new_scale);j=l;while j<=sxa=rand;for i=l:sx-1if accum(1)>=anext_scale(j, :)=new_scale(1,:);else if accum(i)<a&&accum(i+l)>=a next_scale(j, :)=new_scale(i+1,:);endendendendend%子函數:按概率交叉function cross_scale=my_cross(new_scale, pc)sx,sy=size(new_s
48、cale);cross_scale=new_scale;for i=l:2:sx-lif rand<pcaground(rand*sy);cross_scale(i, :) = new_scale (i, 1:a), new_scale(i+1, a+1:end);cross_scale(i+1, :) = new_scale(i+1, 1:a), new_scale(i, a+1:end); endend%子函數:按概率變異function mut_scale=my_mutat(new_scale, pm)sx,sy=size(new_scale);mut_scale=new_scal
49、e;for i=l:sxif rand<pma=round(rand*sy);if a<=0a=l;endif mut_scale (i, a) -0mut_scale (i, a) =1;elsemut_scale (i, a) =0;endendend%子函數:2進制轉10進制function mychange=my2toi0(new_scale)sx,sy=size(new_scale);new_scalel=new_scale;for 1=1:synew_scalel(:, i)=2. (sy-i). *new_scale(:, i); endmychange=sum(ne
50、w_scalel, 2);end4 .實驗結果:五次運行后的適應度函數曲線:連續運行30次得到的運行結果如下:(best_fit, best_f, best_x分別代表每一代中最優個體的適應度值,函數值, 以及所對應的自變量x的值)best_fit, best_f, best_x =10. 00005. 0000-1. 9942best_fit, best_f, best_x =11. 00005. 0000-1. 9983best_fit, best_f, best_x =12. 00005. 0000-1. 9970best_fit, best_f, best_x =13. 00005.
51、0000-1. 9994best_fit, best_f, best_x =14. 99994. 9999-1. 9924best_fit, best_f, best_x =15. 00005. 0000-1. 9999best_fit, best_f, best_x =16. 00005. 0000-1. 9994best_fit, best_f, best_x =17. 00005. 0000-1. 9994best fit,best f, best x=9.99994.9999-1.9921 best_fit, best_f, best_x =105-2best_fit, best_f, best_x =18. 00005. 0000-1. 9999be
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動合同中止協議的簽訂地點3篇
- 店鋪股份合作合同范本3篇
- 委托單位施工合同范本
- 擦玻璃合同范本
- 瓷磚材料購銷合同范本
- 證券從業資格證經濟學對證券影響試題及答案
- 項目管理敏捷實踐的考查要點試題及答案
- 注冊會計師應試自信心提升試題及答案
- 項目管理穩步推進方法試題及答案
- 項目管理專業資格考試考核機制試題及答案
- 2025廣東省能源集團西北(甘肅)有限公司招聘18人筆試參考題庫附帶答案詳解
- 面粉代理合同協議
- 2024年5月26日河南省事業單位聯考《職業能力測試》真題及答案
- 基金從業人員資格歷年真題答案2024
- 尋甸城鄉投資開發集團有限公司筆試信息
- 2025年江蘇揚州水利建筑工程有限責任公司招聘筆試參考題庫含答案解析
- 上海市松江區2022-2023學年四年級下學期期中數學試卷(帶答案)
- 2025年中考英語考點單選題100道及答案
- 2025年貴州國企:貴州茅臺酒股份有限公司招聘筆試參考題庫含答案解析
- 樁基行業企業宣傳
- 2025屆名校學術聯盟高三下學期模擬沖刺政治試題及答案
評論
0/150
提交評論