2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、數(shù)學(xué)問題的非傳統(tǒng)解法選講,遺傳算法及其在最優(yōu)化問題中的應(yīng)用神經(jīng)網(wǎng)絡(luò)及其在數(shù)據(jù)擬合中的應(yīng)用,9.1遺傳算法 9.1.1遺傳算法及其在最優(yōu)化問題中的應(yīng)用,遺傳算法是基于進(jìn)化論,在計(jì)算機(jī)上模擬生命進(jìn)化機(jī)制而發(fā)展起來的一門新學(xué)科,它根據(jù)適者生存、優(yōu)勝劣汰等自然進(jìn)化規(guī)則搜索和計(jì)算問題的解。美國 Michigen 大學(xué)的 John Holland 于 1975 年提出的。遺傳算法最優(yōu)化工具箱MATLAB 7.0的遺傳算法與直接搜索工具箱

2、,遺傳算法的基本思想,從一個(gè)代表最優(yōu)化問題解的一組初值開始進(jìn)行搜索,這組解稱為一個(gè)種群,這里種群由一定數(shù)量的、通過基因編碼的個(gè)體組成,其中每一個(gè)個(gè)體稱為染色體,不同個(gè)體通過染色體的復(fù)制、交叉或變異又生成新的個(gè)體,依照適者生存的規(guī)則,個(gè)體也在一代一代進(jìn)化,通過若干代的進(jìn)化最終得出條件最優(yōu)的個(gè)體。,簡單遺傳算法的一般步驟,選擇 n 個(gè)個(gè)體構(gòu)成初始種群 ,并求出種群內(nèi)各個(gè)個(gè)體的函數(shù)值。設(shè)置代數(shù)為 i=1,即設(shè)置其為第一代。計(jì)算選擇函

3、數(shù)的值,所謂選擇即通過概率的形式從種群中選擇若干個(gè)個(gè)體的方式。通過染色體個(gè)體基因的復(fù)制、交叉、變異等創(chuàng)造新的個(gè)體,構(gòu)成新的種群 。i=i+1,若終止條件不滿足,則繼續(xù)進(jìn)化。,遺傳算法和傳統(tǒng)優(yōu)化算法比較,不同于從一個(gè)點(diǎn)開始搜索最優(yōu)解的傳統(tǒng)的最優(yōu)化算法,遺傳算法從一個(gè)種群開始對(duì)問題的最優(yōu)解進(jìn)行并行搜索,所以更利于全局最優(yōu)化解的搜索。遺傳算法并不依賴于導(dǎo)數(shù)信息或其他輔助信息來進(jìn)行最優(yōu)解搜索。遺傳算法采用的是概率型規(guī)則而不是確定

4、性規(guī)則,所以每次得出的結(jié)果不一定完全相同,有時(shí)甚至?xí)休^大的差異。,9.1.2 遺傳算法在求解最優(yōu)化問題中的應(yīng)用舉例,GAOT 工具箱(目標(biāo)求最大) bound=[xm,xM]為求解上下界構(gòu)成的矩陣。a由最優(yōu)解與目標(biāo)構(gòu)成,b為搜索的最終種群,c中間過程參數(shù)表。MATLAB 7.0GA工具箱界面, gatool(),例:繪制目標(biāo)函數(shù)曲線: >> ezplot('x*sin(10*pi*x)

5、+2',[-1,2]),測試不同的初值:>> f=inline('-x.*sin(10*pi*x)-2','x'); v=[];>> for x0=[-1:0.8:1.5,1.5:0.1:2] x1=fmincon(f,x0,[],[],[],[],-1,2); v=[v; x0,x1,f(x1)];end>> vv = -1.0000

6、 -1.0000 -2.0000 -0.2000 -0.6516 -2.6508 0.6000 0.6516 -2.6508 1.4000 1.4507 -3.4503 1.5000 0.2540 -2.2520 1.6000 1.6506 -3.6503 1.7000 1.2508 -3.2504 1.8000

7、1.8505 -3.8503 1.9000 0.4522 -2.4511 2.0000 2.0000 -2.0000,編寫函數(shù):function [sol,y]=c10mga1(sol,options) x=sol(1); y=x.*sin(10*pi*x)+2;%調(diào)用gaopt( )函數(shù)>> [a,b,c,d]=gaopt([-1,2],'c10mga1'

8、;); a,ca = 1.85054746606888 3.85027376676810c = 1.0e+002 * 0.01000000000000 0.01644961385548 0.03624395818177 0.02000000000000 0.01652497353988 0.03647414028140 0.16000000000000 0.01850468596

9、975 0.03850268083951 0.23000000000000 0.01850553961009 0.03850273728228 1.00000000000000 0.01850547466069 0.03850273766768,比較:>> ff=optimset; ff.Display='iter';>> x0=1.8; x1=fmincon(

10、f,x0,[],[],[],[],-1,2,'',ff); f(x1)ans = -3.85027376676808>> f(a(1)) % 遺傳算法結(jié)果ans = -3.85027376676810>> ezplot(‘x*sin(10*pi*x)+2’,[-1,20]) %改變求解區(qū)間>> [a,b,c,d]=gaopt([-1,20],'c10mg

11、a1'); a,ca = 19.45005206632863 21.45002604650601,c = 1.0e+002 * 0.01000000000000 0.17243264358456 0.18858649532480 0.02000000000000 0.19253552639304 0.21133759487918 0.25000000000000 0.194500

12、21530572 0.21450017081177 0.27000000000000 0.19450024961756 0.21450018981219 0.29000000000000 0.19450055493368 0.21450025935531 1.00000000000000 0.19450052066329 0.21450026046506,>> ezplot(‘x

13、*sin(10*pi*x)+2’,[12,20]) %放大區(qū)間>> [a,b,c,d]=gaopt([12,20],'c10mga1'); a,ca = 19.85005104334383 21.85002552164857c = 1.0e+002 * 0.01000000000000 0.17647930304626 0.19610637643594 0.03000

14、000000000 0.17648091337382 0.19616374074697 0.05000000000000 0.18841858256128 0.202288599115410.21000000000000 0.19850064250944 0.21850023812862 0.23000000000000 0.19850055906254 0.21850025289993

15、 1.00000000000000 0.19850051043344 0.21850025521649,例:求最小值編寫函數(shù):function [sol,f]=c10mga3(sol,options) x=sol(1:4); f=-(x(1)+x(2))^2-5*(x(3)-x(4))^2-(x(2)-2*x(3))^4-10*(x(1)-x(4))^4;>> [a,b,c,d]=gaopt

16、([-1,1; -1 1; -1 1; -1 1],'c10mga3'); a,ca = -0.0666 0.0681 -0.0148 -0.0154 -0.0002c =1.0000 -0.3061 0.2075 -0.2235 -0.1206 -0.25805.0000 -0.2294 0.2076 0.0352 -0.1217

17、 -0.125393.0000 -0.0666 0.0682 -0.0148 -0.0154 -0.0002100.0000 -0.0666 0.0681 -0.0148 -0.0154 -0.0002 %求解區(qū)域太小,有誤差,,GAOT 的最優(yōu)化函數(shù),其中:p可給目標(biāo)函數(shù)增加附加參數(shù), v為精度及顯示控制向量,

18、 P0為初始種群, fun1為終止函數(shù)的名稱,默認(rèn)值‘maxGenTerm’, n為最大的允許代數(shù)。,例:求最小值>> tic, xmM=[-ones(4,1),ones(4,1)]*1000;>> [a,b,c,d]=gaopt(xmM,'c10mga3',[],[],[],'maxGenTerm'

19、;,2000);>> a(1:4), dd=[c(1:100:end,:); c(end,:)], tocans = -0.0049 0.0049 -0.0081 -0.0081dd = 1.0e+009 * 0.0000 0.0000 -0.0000 -0.0000 0.0000 -5.9663 0.0000 -0.0000 0.00

20、00 -0.0000 -0.0000 -0.0000elapsed_time = 76.5200,,描述函數(shù):%matlab7.0function f=c10mga3a(x) f=(x(1)+x(2))^2+5*(x(3)-x(4))^2+(x(2)-2*x(3))^4+10*(x(1)-x(4))^4;>>x=ga(@c10mga3a,4) %四個(gè)自變量>>ff=gaop

21、timset; ff.Generations=2000; ff.PopulationSize=80;>>ff.CrossoverFcn=@crossoverheuristic; x=ga(@c10mga3a,4,ff)>> f=inline... % 目標(biāo)函數(shù)描述('(x(1)+x(2))^2+5*(x(3)-x(4))^2+(x(2)-2*x(3))^4+10*(x(1)-x(4

22、))^4','x')>> ff=optimset; ff.MaxIter=10000; ff.TolX=1e-7;>> tic, x=fminsearch(f,10*ones(4,1),ff); toc; x‘ %時(shí)間少,精度高elapsed_time = 0.94200000000000ans = 1.0e-006 * 0.03039572499758 -0.

23、03039585246164 -0.75343487601326 -0.75343518285272,例:求下面的最優(yōu)化問題>> [x,y]=meshgrid(-1:0.1:3,-3:0.1:3); z=sin(3*x.*y+2)+x.*y+x+y;>> surf(x,y,z); >> shading interp % 用光滑曲面表示目標(biāo)函數(shù),函數(shù)描述:%傳統(tǒng)方法 functi

24、on y=c10mga5(x) y=sin(3*x(1)*x(2)+2)+x(1)*x(2)+x(1)+x(2);>> x0=[1,3]; x=fmincon('c10mga5',x0,[],[],[],[],[-1;-3],[3;3])x = -1.00000000000000 1.19031291227215函數(shù)描述:function [sol,y]=c10mga6(sol,opt

25、ions) x=sol(1:2); y=-sin(3*x(1)*x(2)+2)-x(1)*x(2)-x(1)-x(2);>> xmM=[-1 3; -3 3]; [a,b,c,d]=gaopt(xmM,'c10mga6',[],[],[],'maxGenTerm',500); aa = 2.51604948433614 -3.00000000000000 9.007095

26、00762913,遺傳算法優(yōu)化中間結(jié)果(40代即可,無需500代,可用默認(rèn)100),,9.1.3 遺傳算法在有約束最優(yōu)化問題中的應(yīng)用,不能直接用于有約束最優(yōu)化問題求解需通過變換處理劃為無約束最優(yōu)化問題對(duì)等式約束可通過等式求解將若干個(gè)自變量用其它自變量表示。不等式約束可用懲罰函數(shù)方法轉(zhuǎn)移到目標(biāo)函數(shù)中。仍采用 gaopt() 或 ga() 函數(shù)求解,例:描述函數(shù):function [sol,y]=c10mga4(s

27、ol,options) x=sol(1:2); x=x(:); x(3)=(6+4*x(1)-2*x(2))/3; y1=[-2 1 1]*x; y2=[-1 1 0]*x; if (y1>9 | y2<-4 | x(3)<0), y=-100; else, y=-[1 2 3]*x; end,>> [a,b,c]=gaopt([-1000 0; -1000 0],'c10mga4

28、',[],[],[],'maxGenTerm',1000);>> c=[c(1:15:end,:); c(end,:)]; a,ca = -6.99981015633155 -10.99962347934527 28.99905078165773c = 1.0e+003 * 0.00100000000000 -0.32769544124065 -0.2042304939817

29、7 -0.10000000000000 0.05900000000000 -0.00146223175991 0 0.00131115879955 0.10200000000000 -0.00416116639726 -0.00666729713459 0.01480583198631 0.84900000000000 -0.0068

30、9401645967 -0.01080365682806 0.02847008229837 0.89200000000000 -0.00694511749224 -0.01089232545085 0.02872558746118 0.93200000000000 -0.00698531391213 -0.01097813084259 0.02892656956064 0.968000000000

31、00 -0.00699692906988 -0.01099399300138 0.02898464534940 1.00000000000000 -0.00699981015633 -0.01099962347935 0.02899905078166,%可用線性規(guī)劃得出更精確的結(jié)果>> f=[1 2 3]; A=[-2 1 1; 1 -1 0]; B=[9; 4]; Aeq=[4 -2 -3]; Be

32、q=-6;>> x=linprog(f,A,B,Aeq,Beq,[-inf;-inf;0],[0;0;inf]); x'Optimization terminated successfully.ans = -6.99999999999967 -10.99999999999935 0.00000000000000>> f*xans = -28.99999999999836 建

33、議求解方法:用 GA 找出全局最優(yōu)解的大致位置,以其為初值調(diào)用最優(yōu)化函數(shù)求精確解。,9.2神經(jīng)網(wǎng)絡(luò)及其在數(shù)據(jù)擬合中的應(yīng)用9.2.1神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí),單個(gè)人工神經(jīng)元的數(shù)學(xué)表示形式,例:常用傳輸函數(shù)曲線>> x=-2:0.01:2; >> y=tansig(x); plot(x,y)>> x=-2:0.01:2; >> y=logsig(x); plot(x,y),BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

34、示意圖,其中:xm,xM分別為列向量,為各樣本數(shù)據(jù)的最大最小值。 hi為一行向量,各隱層節(jié)點(diǎn)數(shù)。fi每層傳輸函數(shù),同一層應(yīng)使用相同的傳輸函數(shù)。,例: %考慮一個(gè)前饋網(wǎng)絡(luò),2個(gè)隱層,第一個(gè)有8各節(jié)點(diǎn),采用Sigmoid傳輸函數(shù),第二層節(jié)點(diǎn)個(gè)數(shù)應(yīng)該等于輸出信號(hào)的路數(shù),故節(jié)點(diǎn)數(shù)為1,傳輸函數(shù)為對(duì)數(shù)Sigmoid函數(shù)。>> net=newff([0,1; -1,5],[8,1],{'tansig',

35、9;logsig'});%3個(gè)隱層,1層4個(gè)點(diǎn),線性函數(shù);2層6個(gè)點(diǎn), Sigmoid函數(shù);3層1個(gè)點(diǎn), logsig函數(shù)。>> net=newff([0,1; -1,5],[4 6 1],{'purelin','tansig','logsig'});%可用下面的語句格式設(shè)定其它參數(shù)。>> net.trainParam.epochs=300;

36、net.trainFcn='trainlm';,9.2.2 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練與泛化,神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù) X為n*M,n為輸入變量的路數(shù),M為樣本的組數(shù),Y為m*M,m為輸出變量的路數(shù)。tr為結(jié)構(gòu)體數(shù)據(jù),返回訓(xùn)練的相關(guān)跟蹤信息。Y1和E為輸出和誤差矩陣。 可多次訓(xùn)練,原加權(quán)矩陣為初值。目標(biāo)值曲線函數(shù)神經(jīng)網(wǎng)絡(luò)泛化,例:由前面最小擬合的例子中的數(shù)據(jù)進(jìn)行曲線擬合,2個(gè)隱層,隱層節(jié)點(diǎn)選擇為5。&

37、gt;> x=0:.5:10; y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);>> x0=[0:0.1:10]; y0=0.12*exp(-0.213*x0)+0.54*exp(-0.17*x0).*sin(1.23*x0);>> net=newff([0,10],[5,1],{'tansig','tansig'}

38、);>> net.trainParam.epochs=1000; % 設(shè)置最大步數(shù)>> net=train(net,x,y); % 訓(xùn)練神經(jīng)網(wǎng)絡(luò),>> [net.IW{1} net.LW{2,1}'] % 隱層權(quán)值和輸出層權(quán)值ans = 0.4765 -1.9076 0.5784 0.9450 -0.2888 -2.7916 0.

39、3052 -2.9388 0.9780 1.1814%可改變求解算法>> net=newff([0,10],[5,1],{'tansig','tansig'}); net.trainParam.epochs=100;>> net.trainFcn='trainlm'; [net,b1]=train(net,x,y);>> net

40、=newff([0,10],[5,1],{'tansig','tansig'}); net.trainParam.epochs=100;>> net.trainFcn='traincgf'; [net,b2]=train(net,x,y);>> net=newff([0,10],[5,1],{'tansig','tansig'})

41、; net.trainParam.epochs=100;>> net.trainFcn='traingdx'; [net,b3]=train(net,x,y);,%可改變各層傳輸函數(shù)>> net=newff([0,10],[5,1],{'tansig','logsig'}); net.trainParam.epochs=100;>> net.tra

42、inFcn='trainlm'; [net,b2]=train(net,x,y);>> net=newff([0,10],[5,1],{'logsig','tansig'}); [net,b3]=train(net,x,y);>> net=newff([0,10],[5,1],{'logsig','logsig'}); [net,

43、b4]=train(net,x,y);%可改變結(jié)構(gòu),選擇隱層15個(gè)節(jié)點(diǎn)>> net=newff([0,10],[15,1],{'tansig','tansig'}); net.trainParam.epochs=100;>> net.trainFcn='trainlm'; [net,b2]=train(net,x,y);>> figure; y1

44、=sim(net,x0); plot(x0,y0,x0,y1,x,y,'o'),例:二元函數(shù)的擬合>> [x,y]=meshgrid(-3:.6:3, -2:.4:2); x=x(:)'; y=y(:)';>> z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); % 這三個(gè)變量均應(yīng)為行向量>> net=newff([-3 3; -2 2],

45、[10,10,1],{'tansig','tansig','tansig'});>> net.trainParam.epochs=1000; net.trainFcn='trainlm';>> [net,b]=train(net,[x; y],z); % 訓(xùn)練神經(jīng)網(wǎng)絡(luò)>> [x2,y2]=meshgrid(-3:.1:3, -2

46、:.1:2); x1=x2(:)'; y1=y2(:)';>> figure; z1=sim(net,[x1; y1]); z2=reshape(z1,size(x2)); surf(x2,y2,z2),%改變第二層節(jié)點(diǎn)數(shù)>> net=newff([-3 3; -2 2],[10,20,1],{'tansig','tansig','tansig'

47、;});>> [net,b]=train(net,[x; y],z); % 訓(xùn)練神經(jīng)網(wǎng)絡(luò)>> z1=sim(net,[x1; y1]); z2=reshape(z1,size(x2)); surf(x2,y2,z2) %效果不好,%給出密集一點(diǎn)的的樣本點(diǎn)>> [x,y]=meshgrid(-3:.2:3, -2:.2:2); x=x(:)'; y=y(:)';>

48、> z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);>> net=newff([-3 3; -2 2],[10,10,1],{'tansig','tansig','tansig'});>> net.trainParam.epochs=100; net.trainFcn='trainlm';>> net=

49、train(net,[x; y],z);>> [x1,y1]=meshgrid(-3:.1:3, -2:.1:2); a=x1; x1=x2(:)'; y1=y2(:)';>> [x1,y1]=meshgrid(-3:.1:3, -2:.1:2); a=x1; x1=x2(:)'; y1=y2(:)';>> z1=sim(net,[x1; y1]); z2=r

50、eshape(z1,size(a)); surf(x2,y2,z2),>> net=newff([-3 3; -2 2],[10,20,1], {'tansig','tansig','tansig'});>> net=train(net,[x; y],z); % 修改節(jié)點(diǎn)個(gè)數(shù)后的泛化效果>> figure; z1=sim(net,[x1; y1]

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論