MATLAB-智能算法案例分析_第1頁(yè)
MATLAB-智能算法案例分析_第2頁(yè)
MATLAB-智能算法案例分析_第3頁(yè)
MATLAB-智能算法案例分析_第4頁(yè)
MATLAB-智能算法案例分析_第5頁(yè)
已閱讀5頁(yè),還剩151頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

MATLAB智能算法30個(gè)案例分析第1章1、案例背景遺傳算法(GeneticAlgorithm,GA)是一種進(jìn)化算法,其基本原理是仿效生物界中的“物競(jìng)天擇、適者生存”的演化法則。遺傳算法的做法是把問(wèn)題參數(shù)編碼為染色體,再利用迭代的方式進(jìn)行選擇、交叉以及變異等運(yùn)算來(lái)交換種群中染色體的信息,最終生成符合優(yōu)化目標(biāo)的染色體。在遺傳算法中,染色體對(duì)應(yīng)的是數(shù)據(jù)或數(shù)組,通常是由一維的串結(jié)構(gòu)數(shù)據(jù)來(lái)表示,串上各個(gè)位置對(duì)應(yīng)基因的取值?;蚪M成的串就是染色體,或者叫基因型個(gè)體(Individuals)

。一定數(shù)量的個(gè)體組成了群體(Population)。群體中個(gè)體的數(shù)目稱為群體大小(PopulationSize),也叫群體規(guī)模。而各個(gè)個(gè)體對(duì)環(huán)境的適應(yīng)程度叫做適應(yīng)度(Fitness)

。2、案例目錄:1.1

理論基礎(chǔ)1.1.1

遺傳算法概述1.

編碼2.

初始群體的生成3.

適應(yīng)度評(píng)估4.

選擇5.

交叉6.

變異1.1.2

設(shè)菲爾德遺傳算法工具箱1.

工具箱簡(jiǎn)介2.

工具箱添加1.2

案例背景1.2.1

問(wèn)題描述1.

簡(jiǎn)單一元函數(shù)優(yōu)化2.

多元函數(shù)優(yōu)化1.2.2

解決思路及步驟1.3MATLAB程序?qū)崿F(xiàn)1.3.1

工具箱結(jié)構(gòu)1.3.2

遺傳算法中常用函數(shù)1.

創(chuàng)建種群函數(shù)—crtbp2.

適應(yīng)度計(jì)算函數(shù)—ranking3.

選擇函數(shù)—select4.

交叉算子函數(shù)—recombin5.

變異算子函數(shù)—mut6.

選擇函數(shù)—reins7.

實(shí)用函數(shù)—bs2rv8.

實(shí)用函數(shù)—rep1.3.3

遺傳算法工具箱應(yīng)用舉例1.

簡(jiǎn)單一元函數(shù)優(yōu)化2.

多元函數(shù)優(yōu)化1.4

延伸閱讀1.5

參考文獻(xiàn)3、主程序:1.簡(jiǎn)單一元函數(shù)優(yōu)化:clcclearallcloseall%%畫出函數(shù)圖figure(1);holdon;lb=1;ub=2;%函數(shù)自變量范圍【1,2】ezplot('sin(10*pi*X)/X',[lb,ub]);%畫出函數(shù)曲線xlabel('自變量/X')ylabel('函數(shù)值/Y')%%定義遺傳算法參數(shù)NIND=40;%個(gè)體數(shù)目MAXGEN=20;%最大遺傳代數(shù)PRECI=20;%變量的二進(jìn)制位數(shù)GGAP=0.95;%代溝px=0.7;%交叉概率pm=0.01;%變異概率trace=zeros(2,MAXGEN);%尋優(yōu)結(jié)果的初始值FieldD=[PRECI;lb;ub;1;0;1;1];%區(qū)域描述器Chrom=crtbp(NIND,PRECI);%初始種群%%優(yōu)化gen=0;%代計(jì)數(shù)器X=bs2rv(Chrom,FieldD);%計(jì)算初始種群的十進(jìn)制轉(zhuǎn)換ObjV=sin(10*pi*X)./X;%計(jì)算目標(biāo)函數(shù)值whilegen<MAXGENFitnV=ranking(ObjV);%分配適應(yīng)度值SelCh=select('sus',Chrom,FitnV,GGAP);%選擇SelCh=recombin('xovsp',SelCh,px);%重組SelCh=mut(SelCh,pm);%變異X=bs2rv(SelCh,FieldD);%子代個(gè)體的十進(jìn)制轉(zhuǎn)換ObjVSel=sin(10*pi*X)./X;%計(jì)算子代的目標(biāo)函數(shù)值[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代到父代,得到新種群X=bs2rv(Chrom,FieldD);gen=gen+1;%代計(jì)數(shù)器增加%獲取每代的最優(yōu)解及其序號(hào),Y為最優(yōu)解,I為個(gè)體的序號(hào)[Y,I]=min(ObjV);trace(1,gen)=X(I);%記下每代的最優(yōu)值trace(2,gen)=Y;%記下每代的最優(yōu)值endplot(trace(1,:),trace(2,:),'bo');%畫出每代的最優(yōu)點(diǎn)gridon;plot(X,ObjV,'b*');%畫出最后一代的種群holdoff%%畫進(jìn)化圖figure(2);plot(1:MAXGEN,trace(2,:));gridonxlabel('遺傳代數(shù)')ylabel('解的變化')title('進(jìn)化過(guò)程')bestY=trace(2,end);bestX=trace(1,end);fprintf(['最優(yōu)解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])多元函數(shù)優(yōu)化clcclearallcloseall%%畫出函數(shù)圖figure(1);lbx=-2;ubx=2;%函數(shù)自變量x范圍【-2,2】lby=-2;uby=2;%函數(shù)自變量y范圍【-2,2】ezmesh('y*sin(2*pi*x)+x*cos(2*pi*y)',[lbx,ubx,lby,uby],50);%畫出函數(shù)曲線holdon;%%定義遺傳算法參數(shù)NIND=40;%個(gè)體數(shù)目MAXGEN=50;%最大遺傳代數(shù)PRECI=20;%變量的二進(jìn)制位數(shù)GGAP=0.95;%代溝px=0.7;%交叉概率pm=0.01;%變異概率trace=zeros(3,MAXGEN);%尋優(yōu)結(jié)果的初始值FieldD=[PRECIPRECI;lbxlby;ubxuby;11;00;11;11];%區(qū)域描述器Chrom=crtbp(NIND,PRECI*2);%初始種群%%優(yōu)化gen=0;%代計(jì)數(shù)器XY=bs2rv(Chrom,FieldD);%計(jì)算初始種群的十進(jìn)制轉(zhuǎn)換X=XY(:,1);Y=XY(:,2);ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y);%計(jì)算目標(biāo)函數(shù)值whilegen<MAXGENFitnV=ranking(-ObjV);%分配適應(yīng)度值SelCh=select('sus',Chrom,FitnV,GGAP);%選擇SelCh=recombin('xovsp',SelCh,px);%重組SelCh=mut(SelCh,pm);%變異XY=bs2rv(SelCh,FieldD);%子代個(gè)體的十進(jìn)制轉(zhuǎn)換X=XY(:,1);Y=XY(:,2);ObjVSel=Y.*sin(2*pi*X)+X.*cos(2*pi*Y);%計(jì)算子代的目標(biāo)函數(shù)值[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代到父代,得到新種群XY=bs2rv(Chrom,FieldD);gen=gen+1;%代計(jì)數(shù)器增加%獲取每代的最優(yōu)解及其序號(hào),Y為最優(yōu)解,I為個(gè)體的序號(hào)[Y,I]=max(ObjV);trace(1:2,gen)=XY(I,:);%記下每代的最優(yōu)值trace(3,gen)=Y;%記下每代的最優(yōu)值endplot3(trace(1,:),trace(2,:),trace(3,:),'bo');%畫出每代的最優(yōu)點(diǎn)gridon;plot3(XY(:,1),XY(:,2),ObjV,'bo');%畫出最后一代的種群holdoff%%畫進(jìn)化圖figure(2);plot(1:MAXGEN,trace(3,:));gridonxlabel('遺傳代數(shù)')ylabel('解的變化')title('進(jìn)化過(guò)程')bestZ=trace(3,end);bestX=trace(1,end);bestY=trace(2,end);fprintf(['最優(yōu)解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\nZ=',num2str(bestZ),'\n'])第2章基于遺傳算法和非線性規(guī)劃的函數(shù)尋優(yōu)算法1.1案例背景

1.1.1

非線性規(guī)劃方法

非線性規(guī)劃是20世紀(jì)50年代才開始形成的一門新興學(xué)科。1951年H.W.庫(kù)恩和A.W.塔克發(fā)表的關(guān)于最優(yōu)性條件(后來(lái)稱為庫(kù)恩.塔克條件)的論文是非線性規(guī)劃正式誕生的一個(gè)重要標(biāo)志。

非線性規(guī)劃研究一個(gè)n元實(shí)函數(shù)在一組等式或不等式的約束條件下的極值問(wèn)題,且目標(biāo)函數(shù)和約束條件至少有一個(gè)是未知量的非線性函數(shù)。非線性規(guī)劃的一個(gè)重要理論是1951年Kuhn-Tucker最優(yōu)條件(簡(jiǎn)稱KT條件)的建立。此后的50年代主要是對(duì)梯度法和牛頓法的研究。以Davidon(1959),F(xiàn)letcher和Powell(1963)提出的DFP方法為起點(diǎn),60年代是研究擬牛頓方法活躍時(shí)期,同時(shí)對(duì)共軛梯度法也有較好的研究。在1970年由Broyden,F(xiàn)letcher、Goldfarb

和Shanno從不同的角度共同提出的BFGS方法是目前為止最有效的擬牛頓方法。由于Broyden,Dennis

和More的工作使得擬牛頓方法的理論變得很完善。

70年代是非線性規(guī)劃飛速發(fā)展時(shí)期,

約束變尺度(SQP)方法(Han和Powell為代表)和Lagrange乘子法(代表人物是Powell

和Hestenes)是這一時(shí)期主要研究成果.計(jì)算機(jī)的飛速發(fā)展使非線性規(guī)劃的研究如虎添翼。80年**始研究信賴域法、稀疏擬牛頓法、大規(guī)模問(wèn)題的方法和并行計(jì)算,90年代研究解非線性規(guī)劃問(wèn)題的內(nèi)點(diǎn)法和有限儲(chǔ)存法??梢院敛豢鋸埖恼f(shuō),這半個(gè)世紀(jì)是最優(yōu)化發(fā)展的黃金時(shí)期。

1.1.2非線性規(guī)劃函數(shù)

fmincon函數(shù)是Matlab最優(yōu)化工具箱中用來(lái)求解非線性規(guī)劃問(wèn)題的重要函數(shù),它從一個(gè)預(yù)估值出發(fā),搜索約束條件下非線性多元函數(shù)的最小值。

1.1.3

案例

1.2

模型建立

算法流程圖如下:

1.3仿真結(jié)果

非線性遺傳算法尋優(yōu)結(jié)果如下:

普通遺傳算法尋優(yōu)結(jié)果如下:

主函數(shù)代碼如下:%%清空環(huán)境clcclear%%遺傳算法參數(shù)maxgen=30;%進(jìn)化代數(shù)sizepop=100;%種群規(guī)模pcross=[0.6];%交叉概率pmutation=[0.01];%變異概率lenchrom=[11111];%變量字串長(zhǎng)度bound=[00.9*pi;00.9*pi;00.9*pi;00.9*pi;00.9*pi];%變量范圍%%個(gè)體初始化individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);%種群結(jié)構(gòu)體avgfitness=[];%種群平均適應(yīng)度bestfitness=[];%種群最佳適應(yīng)度bestchrom=[];%適應(yīng)度最好染色體%初始化種群fori=1:sizepopindividuals.chrom(i,:)=Code(lenchrom,bound);%隨機(jī)產(chǎn)生個(gè)體x=individuals.chrom(i,:);individuals.fitness(i)=fun(x);%個(gè)體適應(yīng)度end%找最好的染色體[bestfitnessbestindex]=min(individuals.fitness);bestchrom=individuals.chrom(bestindex,:);%最好的染色體avgfitness=sum(individuals.fitness)/sizepop;%染色體的平均適應(yīng)度%記錄每一代進(jìn)化中最好的適應(yīng)度和平均適應(yīng)度trace=[avgfitnessbestfitness];%%進(jìn)化開始fori=1:maxgen%選擇操作individuals=Select(individuals,sizepop);avgfitness=sum(individuals.fitness)/sizepop;%交叉操作individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);%變異操作individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[imaxgen],bound);%計(jì)算適應(yīng)度f(wàn)orj=1:sizepopx=individuals.chrom(j,:);individuals.fitness(j)=fun(x);end%找到最小和最大適應(yīng)度的染色體及它們?cè)诜N群中的位置[newbestfitness,newbestindex]=min(individuals.fitness);[worestfitness,worestindex]=max(individuals.fitness);%代替上一次進(jìn)化中最好的染色體ifbestfitness>newbestfitnessbestfitness=newbestfitness;bestchrom=individuals.chrom(newbestindex,:);endindividuals.chrom(worestindex,:)=bestchrom;individuals.fitness(worestindex)=bestfitness;avgfitness=sum(individuals.fitness)/sizepop;trace=[trace;avgfitnessbestfitness];%記錄每一代進(jìn)化中最好的適應(yīng)度和平均適應(yīng)度end%進(jìn)化結(jié)束%%結(jié)果顯示[rc]=size(trace);plot([1:r]',trace(:,1),'r-',[1:r]',trace(:,2),'b--');title(['函數(shù)值曲線''終止代數(shù)='num2str(maxgen)]);xlabel('進(jìn)化代數(shù)');ylabel('函數(shù)值');legend('各代平均值','各代最佳值');disp('函數(shù)值變量');%窗口顯示disp([bestfitnessx]);第3章基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)優(yōu)化算法1、案例背景

BP網(wǎng)絡(luò)是一類多層的前饋神經(jīng)網(wǎng)絡(luò)。它的名字源于在網(wǎng)絡(luò)訓(xùn)練的過(guò)程中,調(diào)整網(wǎng)絡(luò)的權(quán)值的算法是誤差的反向傳播的學(xué)習(xí)算法,即為BP學(xué)習(xí)算法。BP算法是Rumelhart等人在1986年提出來(lái)的。由于它的結(jié)構(gòu)簡(jiǎn)單,可調(diào)整的參數(shù)多,訓(xùn)練算法也多,而且可操作性好,BP神經(jīng)網(wǎng)絡(luò)獲得了非常廣泛的應(yīng)用。據(jù)統(tǒng)計(jì),有80%~90%的神經(jīng)網(wǎng)絡(luò)模型都是采用了BP網(wǎng)絡(luò)或者是它的變形。BP網(wǎng)絡(luò)是前向網(wǎng)絡(luò)的核心部分,是神經(jīng)網(wǎng)絡(luò)中最精華、最完美的部分。BP神經(jīng)網(wǎng)絡(luò)雖然是人工神經(jīng)網(wǎng)絡(luò)中應(yīng)用最廣泛的算法,但是也存在著一些缺陷,例如:①、學(xué)習(xí)收斂速度太慢;②、不能保證收斂到全局最小點(diǎn);③、網(wǎng)絡(luò)結(jié)構(gòu)不易確定。另外,網(wǎng)絡(luò)結(jié)構(gòu)、初始連接權(quán)值和閾值的選擇對(duì)網(wǎng)絡(luò)訓(xùn)練的影響很大,但是又無(wú)法準(zhǔn)確獲得,針對(duì)這些特點(diǎn)可以采用遺傳算法對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化。

本節(jié)以某型號(hào)拖拉機(jī)的齒輪箱為工程背景,介紹使用基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行齒輪箱故障的診斷。2、案例目錄:第3章

基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)優(yōu)化算法3.1

理論基礎(chǔ)

3.1.1BP神經(jīng)網(wǎng)絡(luò)概述

3.1.2

遺傳算法概述3.2

案例背景

3.2.1

問(wèn)題描述

3.2.2

解決思路及步驟

1.

算法流程

2.

神經(jīng)網(wǎng)絡(luò)算法實(shí)現(xiàn)

3.

遺傳算法實(shí)現(xiàn)3.3MATLAB程序?qū)崿F(xiàn)

3.3.1

神經(jīng)網(wǎng)絡(luò)算法

3.3.2

遺傳算法主函數(shù)

3.3.3

比較使用遺傳算法前后的差別

3.3.4

結(jié)果分析3.4

延伸閱讀3.5

參考文獻(xiàn)3、主程序:clcclearallcloseall%%加載神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本測(cè)試樣本每列一個(gè)樣本輸入P輸出T%樣本數(shù)據(jù)就是前面問(wèn)題描述中列出的數(shù)據(jù)loaddata%初始隱層神經(jīng)元個(gè)數(shù)hiddennum=31;%輸入向量的最大值和最小值threshold=[01;01;01;01;01;01;01;01;01;01;01;01;01;01;01];inputnum=size(P,1);%輸入層神經(jīng)元個(gè)數(shù)outputnum=size(T,1);%輸出層神經(jīng)元個(gè)數(shù)w1num=inputnum*hiddennum;%輸入層到隱層的權(quán)值個(gè)數(shù)w2num=outputnum*hiddennum;%隱層到輸出層的權(quán)值個(gè)數(shù)N=w1num+hiddennum+w2num+outputnum;%待優(yōu)化的變量的個(gè)數(shù)%%定義遺傳算法參數(shù)NIND=40;%個(gè)體數(shù)目MAXGEN=50;%最大遺傳代數(shù)PRECI=10;%變量的二進(jìn)制位數(shù)GGAP=0.95;%代溝px=0.7;%交叉概率pm=0.01;%變異概率trace=zeros(N+1,MAXGEN);%尋優(yōu)結(jié)果的初始值FieldD=[repmat(PRECI,1,N);repmat([-0.5;0.5],1,N);repmat([1;0;1;1],1,N)];%區(qū)域描述器Chrom=crtbp(NIND,PRECI*N);%初始種群%%優(yōu)化gen=0;%代計(jì)數(shù)器X=bs2rv(Chrom,FieldD);%計(jì)算初始種群的十進(jìn)制轉(zhuǎn)換ObjV=Objfun(X,P,T,hiddennum,P_test,T_test);%計(jì)算目標(biāo)函數(shù)值whilegen<MAXGENfprintf('%d\n',gen)FitnV=ranking(ObjV);%分配適應(yīng)度值SelCh=select('sus',Chrom,FitnV,GGAP);%選擇SelCh=recombin('xovsp',SelCh,px);%重組SelCh=mut(SelCh,pm);%變異X=bs2rv(SelCh,FieldD);%子代個(gè)體的十進(jìn)制轉(zhuǎn)換ObjVSel=Objfun(X,P,T,hiddennum,P_test,T_test);%計(jì)算子代的目標(biāo)函數(shù)值[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代到父代,得到新種群X=bs2rv(Chrom,FieldD);gen=gen+1;%代計(jì)數(shù)器增加%獲取每代的最優(yōu)解及其序號(hào),Y為最優(yōu)解,I為個(gè)體的序號(hào)[Y,I]=min(ObjV);trace(1:N,gen)=X(I,:);%記下每代的最優(yōu)值trace(end,gen)=Y;%記下每代的最優(yōu)值end%%畫進(jìn)化圖figure(1);plot(1:MAXGEN,trace(end,:));gridonxlabel('遺傳代數(shù)')ylabel('誤差的變化')title('進(jìn)化過(guò)程')bestX=trace(1:end-1,end);bestErr=trace(end,end);fprintf(['最優(yōu)初始權(quán)值和閾值:\nX=',num2str(bestX'),'\n最小誤差err=',num2str(bestErr),'\n'])第4章基于遺傳算法的TSP算法1、案例背景

TSP(旅行商問(wèn)題—TravelingSalesmanProblem),是典型的NP完全問(wèn)題,即其最壞情況下的時(shí)間復(fù)雜性隨著問(wèn)題規(guī)模的增大按指數(shù)方式增長(zhǎng),到目前為止不能找到一個(gè)多項(xiàng)式時(shí)間的有效算法。遺傳算法是一種進(jìn)化算法,其基本原理是仿效生物界中的“物競(jìng)天擇、適者生存”的演化法則。遺傳算法的做法是把問(wèn)題參數(shù)編碼為染色體,再利用迭代的方式進(jìn)行選擇、交叉以及變異等運(yùn)算來(lái)交換種群中染色體的信息,最終生成符合優(yōu)化目標(biāo)的染色體。實(shí)踐證明,遺傳算法對(duì)于解決TSP問(wèn)題等組合優(yōu)化問(wèn)題具有較好的尋優(yōu)性能。

2、案例目錄:第4章

基于遺傳算法的TSP算法

4.1理論基礎(chǔ)

4.1.1

遺傳算法概述

4.1.2

TSP問(wèn)題介紹

4.2案例背景

4.2.1

問(wèn)題描述

4.2.2解決思路及步驟

算法流程

遺傳算法實(shí)現(xiàn)

1.編碼

2.種群初始化

3.適應(yīng)度函數(shù)

4.選擇操作

5.交叉操作

6.變異操作

7.進(jìn)化逆轉(zhuǎn)操作

4.3MATLAB程序?qū)崿F(xiàn)

4.3.1

種群初始化

4.3.2適應(yīng)度函數(shù)

4.3.3

選擇操作

4.3.4

交叉操作

4.3.5

變異操作

4.3.6

進(jìn)化逆轉(zhuǎn)操作

4.3.7

畫路線軌跡圖

4.3.8

遺傳算法主函數(shù)

4.3.9

結(jié)果分析

4.4延伸閱讀

4.4.1

應(yīng)用擴(kuò)展

4.4.2

遺傳算法的改進(jìn)

4.4.3

算法的局限性

4.5參考文獻(xiàn)

3、案例實(shí)例及結(jié)果:

本案例以14個(gè)城市為例,假定14個(gè)城市的位置坐標(biāo)為:

表4.1

14個(gè)城市的位置坐標(biāo)城市編號(hào)X坐標(biāo)Y坐標(biāo)116.4796.1216.4794.44320.0992.54422.3993.37525.2397.2462296.05720.4797.02817.296.29916.397.381014.0598.121116.5397.381221.5295.591319.4197.131420.0992.55從某個(gè)城市出發(fā)訪問(wèn)每個(gè)城市一次且僅一次,

最后回到出發(fā)城市,如何安排才使其所走路線最短。結(jié)果:優(yōu)化前的一個(gè)隨機(jī)路線軌跡圖圖4.1

隨機(jī)路線圖隨機(jī)路線為:11—>7—>10—>4—>12—>9—>14—>8—>13—>5—>2—>3—>6—>1—>11總距離:71.1144優(yōu)化后的路線圖:圖4.2

最優(yōu)解路線圖最優(yōu)解路線:5—>4—>3—>14—>2—>1—>10—>9—>11—>8—>13—>7—>12—>6—>5總距離:29.3405優(yōu)化迭代過(guò)程:圖4.3

遺傳算法進(jìn)化過(guò)程圖

4、主程序:clearclccloseallloadCityPosition1;%個(gè)城市坐標(biāo)位置NIND=100;%種群大小MAXGEN=200;Pc=0.9;%交叉概率Pm=0.05;%變異概率GGAP=0.9;%代溝(Generationgap)D=Distanse(X);%生成距離矩陣N=size(D,1);%(34*34)%%初始化種群Chrom=InitPop(NIND,N);%%在二維圖上畫出所有坐標(biāo)點(diǎn)%figure%plot(X(:,1),X(:,2),'o');%%畫出隨機(jī)解的路線圖DrawPath(Chrom(1,:),X)pause(0.0001)%%輸出隨機(jī)解的路線和總距離disp('初始種群中的一個(gè)隨機(jī)值:')OutputPath(Chrom(1,:));Rlength=PathLength(D,Chrom(1,:));disp(['總距離:',num2str(Rlength)]);disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')%%優(yōu)化gen=0;figure;holdon;boxonxlim([0,MAXGEN])title('優(yōu)化過(guò)程')xlabel('代數(shù)')ylabel('最優(yōu)值')ObjV=PathLength(D,Chrom);%計(jì)算路線長(zhǎng)度preObjV=min(ObjV);whilegen<MAXGEN%%計(jì)算適應(yīng)度ObjV=PathLength(D,Chrom);%計(jì)算路線長(zhǎng)度%fprintf('%d%1.10f\n',gen,min(ObjV))line([gen-1,gen],[preObjV,min(ObjV)]);pause(0.0001)preObjV=min(ObjV);FitnV=Fitness(ObjV);%%選擇SelCh=Select(Chrom,FitnV,GGAP);%%交叉操作SelCh=Recombin(SelCh,Pc);%%變異SelCh=Mutate(SelCh,Pm);%%逆轉(zhuǎn)操作SelCh=Reverse(SelCh,D);%%重插入子代的新種群Chrom=Reins(Chrom,SelCh,ObjV);%%更新迭代次數(shù)gen=gen+1;end%%畫出最優(yōu)解的路線圖ObjV=PathLength(D,Chrom);%計(jì)算路線長(zhǎng)度[minObjV,minInd]=min(ObjV);DrawPath(Chrom(minInd(1),:),X)%%輸出最優(yōu)解的路線和總距離disp('最優(yōu)解:')p=OutputPath(Chrom(minInd(1),:));disp(['總距離:',num2str(ObjV(minInd(1)))]);disp('')第5章基于遺傳算法的LQR控制器優(yōu)化設(shè)計(jì)1、案例背景

LQR控制在工程中得到了廣泛的應(yīng)用,對(duì)于LQR最優(yōu)控制,其最優(yōu)性完全取決于加權(quán)矩陣的選擇,然而該加權(quán)矩陣如何選擇并沒有解析方法,只能定性地去選擇矩陣參數(shù),所以這樣的“最優(yōu)”控制事實(shí)上完全是認(rèn)為的。如果選擇不當(dāng),雖然可以求出最優(yōu)解,但這樣的“最優(yōu)解”沒有任何意義。另一方面,加權(quán)矩陣的選擇依賴于設(shè)計(jì)者的經(jīng)驗(yàn),需要設(shè)計(jì)者根據(jù)系統(tǒng)輸出逐步調(diào)整加權(quán)矩陣,直到獲得滿意的輸出響應(yīng)量為止,這樣不僅費(fèi)時(shí),而且無(wú)法保證獲得最優(yōu)的權(quán)重矩陣,因此獲得的最優(yōu)控制反饋系數(shù)不能保證使系統(tǒng)達(dá)到最優(yōu)。遺傳算法(GeneticAlgorithm,GA)是模仿自然界生物進(jìn)化機(jī)制發(fā)展起來(lái)的全局搜索優(yōu)化方法,它在迭代過(guò)程中使用適者生存的原則,采用交叉、變異等操作使得種群朝著最優(yōu)的方向進(jìn)化,最終獲得最優(yōu)解。鑒于LQR控制方法權(quán)重矩陣確定困難的問(wèn)題,本案例以汽車主動(dòng)懸架作為被控對(duì)象,將遺傳算法應(yīng)用于LQR控制器的設(shè)計(jì)中,利用遺傳算法的全局搜索能力,以主動(dòng)懸架的性能指標(biāo)作為目標(biāo)函數(shù)對(duì)加權(quán)矩陣進(jìn)行優(yōu)化設(shè)計(jì),以提高LQR的設(shè)計(jì)效率和性能。

2、案例目錄:

第5章

基于遺傳算法的LQR控制器優(yōu)化設(shè)計(jì)

5.1

案例背景

5.1.1LQR控制

5.1.2基于遺傳算法設(shè)計(jì)LQR控制器

5.2

模型建立

5.2.1

主動(dòng)懸架及其LQR控制器

5.2.2

基于遺傳算法的主動(dòng)懸架LQR控制器優(yōu)化設(shè)計(jì)

5.3

模型及算法實(shí)現(xiàn)

5.3.1

模型實(shí)現(xiàn)

5.3.2

遺傳算法實(shí)現(xiàn)

5.3.3

結(jié)果分析

5.4

參考文獻(xiàn)3、案例實(shí)例及結(jié)果:

4、主程序:clearclcfitnessfcn=@GA_LQR;%適應(yīng)度函數(shù)句柄nvars=3;%個(gè)體變量數(shù)目LB=[0.10.10.1];%下限UB=[1e61e61e6];%上限options=gaoptimset('PopulationSize',100,'PopInitRange',[LB;UB],'EliteCount',10,'CrossoverFraction',0.4,'Generations',20,'StallGenLimit',20,'TolFun',1e-100,'PlotFcns',{@gaplotbestf,@gaplotbestindiv});%算法參數(shù)設(shè)置[x_best,fval]=ga(fitnessfcn,nvars,[],[],[],[],LB,UB,[],options);%運(yùn)行遺傳算法第6章遺傳算法工具箱詳解及應(yīng)用1、案例背景

MATLAB自帶的遺傳算法與直接搜索工具箱(GeneticAlgorithmandDirectSearchToolbox,GADST),可以較好地解決與遺傳算法相關(guān)的各種問(wèn)題。GADST可以通過(guò)GUI界面調(diào)用,也可以通過(guò)命令行方式調(diào)用,使用簡(jiǎn)單方便。本案例將對(duì)GADST函數(shù)庫(kù)的遺傳算法部分進(jìn)行詳細(xì)的代碼分析和講解,并通過(guò)求解非線性方程組介紹GADST的使用方法。

2、案例目錄:

第6章

遺傳算法工具箱詳解及應(yīng)用

6.1

遺傳算法與直接搜索工具箱

6.1.1遺傳算法與直接搜索工具箱簡(jiǎn)介

6.1.2

GADST詳解

遺傳算法的一些基本概念

stepGA函數(shù)

fitscalingrank函數(shù)和selectionstochunif函數(shù)

crossoverscattered函數(shù)mutationgaussian函數(shù)

6.1.3

GADST的使用

GUI方式使用GADST

命令行方式使用GADST

6.2

案例分析

6.2.1模型建立

6.2.2GADST的應(yīng)用

使用GUI

使用命令行

6.2.3結(jié)果分析

6.3

參考文獻(xiàn)

3、案例實(shí)例及結(jié)果:

作為案例,這里將使用遺傳算法與直接搜索工具箱(GADST)求解一個(gè)非線性方程組。求解以下非線性方程組:

優(yōu)化過(guò)程如下:

得到的最優(yōu)解為

[x1,x2]=[-0.247800834353742,1.62131572868496]

4、主程序:clearclcfitnessfcn=@GA_demo;%適應(yīng)度函數(shù)句柄nvars=2;%個(gè)體所含的變量數(shù)目options=gaoptimset('PopulationSize',100,'EliteCount',10,'CrossoverFraction',0.75,'Generations',500,'StallGenLimit',500,'TolFun',1e-100,'PlotFcns',{@gaplotbestf,@gaplotbestindiv});%參數(shù)設(shè)置[x_best,fval]=ga(fitnessfcn,nvars,[],[],[],[],[],[],[],options);%調(diào)用ga函數(shù)第7章多種群遺傳算法的函數(shù)優(yōu)化算法1、案例背景

針對(duì)遺傳算法所存在的問(wèn)題,一種多種群遺傳算法結(jié)構(gòu)模型(MultiplePopulationGA,簡(jiǎn)稱MPGA)可以用來(lái)取代常規(guī)的標(biāo)準(zhǔn)計(jì)算模型(SGA)。MPGA在SGA的基礎(chǔ)上主要引入了以下幾個(gè)概念:(1)突破SGA僅靠單個(gè)群體進(jìn)行遺傳進(jìn)化的框架,引入多個(gè)種群同時(shí)進(jìn)行優(yōu)化搜索;不同的種群賦以不同的控制參數(shù),實(shí)現(xiàn)不同的搜索目的。(2)各個(gè)種群之間通過(guò)移民算子進(jìn)行聯(lián)系,實(shí)現(xiàn)多種群的協(xié)同進(jìn)化;最優(yōu)解的獲取是多個(gè)種群協(xié)同進(jìn)化的綜合結(jié)果。(3)通過(guò)人工選擇算子保存各種群每個(gè)進(jìn)化代中的最優(yōu)個(gè)體,并作為判斷算法收斂的依據(jù)。

7-1MPGA的算法結(jié)構(gòu)示意圖

復(fù)雜二元函數(shù)求最值:

7-2

二元函數(shù)圖像

2、案例目錄:

第7章多種群遺傳算法的函數(shù)優(yōu)化算法7.1

理論基礎(chǔ)

7.1.1遺傳算法早熟問(wèn)題

7.1.2多種群遺傳算法概述7.2案例背景

7.2.1問(wèn)題描述

7.2.2解決思路及步驟7.3MATLAB程序?qū)崿F(xiàn)

7.3.1移民算子

7.3.2人工選擇算子

7.3.3目標(biāo)函數(shù)

7.3.4標(biāo)準(zhǔn)遺傳算法主函數(shù)

7.3.5多種群遺傳算法主函數(shù)

7.3.6結(jié)果分析7.4延伸閱讀7.5

參考文獻(xiàn)3、主程序:%%多種群遺傳算法clear;clccloseallNIND=40;%個(gè)體數(shù)目NVAR=2;%變量的維數(shù)PRECI=20;%變量的二進(jìn)制位數(shù)GGAP=0.9;%代溝MP=10;%種群數(shù)目FieldD=[rep(PRECI,[1,NVAR]);[-3,4.1;12.1,5.8];rep([1;0;1;1],[1,NVAR])];%譯碼矩陣fori=1:MPChrom{i}=crtbp(NIND,NVAR*PRECI);%創(chuàng)建初始種群endpc=0.7+(0.9-0.7)*rand(MP,1);%在【0.7,0.9】范圍i內(nèi)隨機(jī)產(chǎn)生交叉概率pm=0.001+(0.05-0.001)*rand(MP,1);%在【0.001,0.05】范圍內(nèi)隨機(jī)產(chǎn)生變異概率gen=0;%初始遺傳代數(shù)gen0=0;%初始保持代數(shù)MAXGEN=10;%最優(yōu)個(gè)體最少保持代數(shù)maxY=0;%最優(yōu)值fori=1:MPObjV{i}=ObjectFunction(bs2rv(Chrom{i},FieldD));%計(jì)算各初始種群個(gè)體的目標(biāo)函數(shù)值endMaxObjV=zeros(MP,1);%記錄精華種群MaxChrom=zeros(MP,PRECI*NVAR);%記錄精華種群的編碼whilegen0<=MAXGENgen=gen+1;%遺傳代數(shù)加1fori=1:MPFitnV{i}=ranking(-ObjV{i});%各種群的適應(yīng)度SelCh{i}=select('sus',Chrom{i},FitnV{i},GGAP);%選擇操作SelCh{i}=recombin('xovsp',SelCh{i},pc(i));%交叉操作SelCh{i}=mut(SelCh{i},pm(i));%變異操作ObjVSel=ObjectFunction(bs2rv(SelCh{i},FieldD));%計(jì)算子代目標(biāo)函數(shù)值[Chrom{i},ObjV{i}]=reins(Chrom{i},SelCh{i},1,1,ObjV{i},ObjVSel);%重插入操作end[Chrom,ObjV]=immigrant(Chrom,ObjV);%移民操作[MaxObjV,MaxChrom]=EliteInduvidual(Chrom,ObjV,MaxObjV,MaxChrom);%人工選擇精華種群YY(gen)=max(MaxObjV);%找出精華種群中最優(yōu)的個(gè)體ifYY(gen)>maxY%判斷當(dāng)前優(yōu)化值是否與前一次優(yōu)化值相同maxY=YY(gen);%更新最優(yōu)值gen0=0;elsegen0=gen0+1;%最優(yōu)值保持次數(shù)加1endend%%進(jìn)化過(guò)程圖plot(1:gen,YY)xlabel('進(jìn)化代數(shù)')ylabel('最優(yōu)解變化')title('進(jìn)化過(guò)程')xlim([1,gen])%%輸出最優(yōu)解[Y,I]=max(MaxObjV);%找出精華種群中最優(yōu)的個(gè)體X=(bs2rv(MaxChrom(I,:),FieldD));%最優(yōu)個(gè)體的解碼解disp(['最優(yōu)值為:',num2str(Y)])disp(['對(duì)應(yīng)的自變量取值:',num2str(X)])4、運(yùn)行結(jié)果:

標(biāo)準(zhǔn)遺傳算法運(yùn)行5次得到的結(jié)果圖:

多種群遺傳算法運(yùn)行5次得到的結(jié)果圖:

第8章基于量子遺傳算法的函數(shù)尋優(yōu)算法1、案例背景量子遺傳算法就是基于量子計(jì)算原理的一種遺傳算法。將量子的態(tài)矢量表達(dá)引入了遺傳編碼,利用量子邏輯門實(shí)現(xiàn)染色體的演化,實(shí)現(xiàn)了比常規(guī)遺傳算法更好的效果。量子遺傳算法建立在量子的態(tài)矢量表示的基礎(chǔ)之上,將量子比特的幾率幅表示應(yīng)用于染色體的編碼,使得一條染色體可以表達(dá)多個(gè)態(tài)的疊加,并利用量子邏輯門實(shí)現(xiàn)染色體的更新操作,從而實(shí)現(xiàn)了目標(biāo)的優(yōu)化求解。復(fù)雜二元函數(shù)求最值:

8-1

二元函數(shù)圖像

2、案例目錄:

第8章

基于量子遺傳算法的函數(shù)尋優(yōu)算法8.1

理論基礎(chǔ)

8.1.1

量子遺傳算法概述

8.1.2

量子比特編碼

8.1.3

量子門更新8.2案例背景

8.2.1

問(wèn)題描述

8.2.2

解決思路及步驟

量子遺傳算法流程

量子遺傳算法實(shí)現(xiàn)

1.

量子比特編碼

2.

量子旋轉(zhuǎn)門8.3MATLAB程序?qū)崿F(xiàn)

8.3.1

種群初始化—量子比特編碼

8.3.2測(cè)量函數(shù)—得到二進(jìn)制編碼

8.3.3

量子旋轉(zhuǎn)門函數(shù)

8.3.4

適應(yīng)度函數(shù)

8.3.5

量子遺傳算法主函數(shù)

8.3.6

結(jié)果分析8.4

延伸閱讀8.5

參考文獻(xiàn)

3、主程序:clc;clearall;closeall;%參數(shù)設(shè)置MAXGEN=200;%最大遺傳代數(shù)sizepop=40;%種群大小lenchrom=[2020];%每個(gè)變量的二進(jìn)制長(zhǎng)度trace=zeros(1,MAXGEN);%%最佳個(gè)體記錄其適應(yīng)度值、十進(jìn)制值、二進(jìn)制編碼、量子比特編碼best=struct('fitness',0,'X',[],'binary',[],'chrom',[]);%%初始化種群chrom=InitPop(sizepop*2,sum(lenchrom));%%對(duì)種群實(shí)施一次測(cè)量得到二進(jìn)制編碼binary=collapse(chrom);%%求種群個(gè)體的適應(yīng)度值,和對(duì)應(yīng)的十進(jìn)制值[fitness,X]=FitnessFunction(binary,lenchrom);%使用目標(biāo)函數(shù)計(jì)算適應(yīng)度%%記錄最佳個(gè)體到best[best.fitnessbestindex]=max(fitness);%找出最大值best.binary=binary(bestindex,:);best.chrom=chrom([2*bestindex-1:2*bestindex],:);best.X=X(bestindex,:);trace(1)=best.fitness;fprintf('%d\n',1)%%進(jìn)化forgen=2:MAXGENfprintf('%d\n',gen)%提示進(jìn)化代數(shù)%%對(duì)種群實(shí)施一次測(cè)量binary=collapse(chrom);%%計(jì)算適應(yīng)度[fitness,X]=FitnessFunction(binary,lenchrom);%%量子旋轉(zhuǎn)門chrom=Qgate(chrom,fitness,best,binary);[newbestfitness,newbestindex]=max(fitness);%找到最佳值%記錄最佳個(gè)體到bestifnewbestfitness>best.fitnessbest.fitness=newbestfitness;best.binary=binary(newbestindex,:);best.chrom=chrom([2*newbestindex-1:2*newbestindex],:);best.X=X(newbestindex,:);endtrace(gen)=best.fitness;end%%畫進(jìn)化曲線plot(1:MAXGEN,trace);title('進(jìn)化過(guò)程');xlabel('進(jìn)化代數(shù)');ylabel('每代的最佳適應(yīng)度');%%顯示優(yōu)化結(jié)果disp(['最優(yōu)解X:',num2str(best.X)])disp(['最大值Y:',num2str(best.fitness)]);4、運(yùn)行結(jié)果:

最優(yōu)解X:11.6255

5.72504

最大值Y:17.3503

量子遺傳算法優(yōu)化200代得到的進(jìn)化過(guò)程圖如圖8-3所示。圖

8-3QGA進(jìn)化過(guò)程圖第9章基于遺傳算法的多目標(biāo)優(yōu)化算法1、案例背景

目前的多目標(biāo)優(yōu)化算法有很多,KalyanmoyDeb的NSGA-II(NondominatedSortingGeneticAlgorithmII,帶精英策略的快速非支配排序遺傳算法)無(wú)疑是其中應(yīng)用最為廣泛也是最為成功的一種。MATLAB自帶的gamultiobj函數(shù)所采用的算法,就是基于NSGA-II改進(jìn)的一種多目標(biāo)優(yōu)化算法(avariantofNSGA-II)。gamultiobj函數(shù)的出現(xiàn),為在MATLAB平臺(tái)下解決多目標(biāo)優(yōu)化問(wèn)題提供了良好的途徑。gamultiobj函數(shù)包含在遺傳算法與直接搜索工具箱(GeneticAlgorithmandDirectSearchToolbox,GADST)中,這里我們稱gamultiobj函數(shù)為基于遺傳算法的多目標(biāo)優(yōu)化函數(shù),相應(yīng)的算法為基于遺傳算法的多目標(biāo)優(yōu)化算法。本案例將以gamultiobj函數(shù)為基礎(chǔ),對(duì)基于遺傳算法的多目標(biāo)優(yōu)化算法進(jìn)行講解,并詳細(xì)分析其代碼,同時(shí)通過(guò)一個(gè)簡(jiǎn)單的案例介紹gamultiobj函數(shù)的使用。

2、案例目錄:

第9章

基于遺傳算法的多目標(biāo)優(yōu)化算法

9.1

案例背景

9.1.1多目標(biāo)優(yōu)化及Pareto最優(yōu)解

9.1.2

gamultiobj函數(shù)

9.2

程序?qū)崿F(xiàn)

9.2.1

gamultiobj組織結(jié)構(gòu)

9.2.2

gamultiobj函數(shù)中的一些基本概念

9.2.3

stepgamultiobj函數(shù)分析

stepgamultiobj函數(shù)結(jié)構(gòu)及圖形描述

選擇(selectiontournament.m)

交叉、變異、產(chǎn)生子種群和父子種群合并

計(jì)算序值和擁擠距離(nonDominatedRank.m,distancecrowding.m,trimPopulation.m)

distanceAndSpread函數(shù)

9.2.4

gamultiobj函數(shù)的調(diào)用

通過(guò)GUI方式調(diào)用gamultiobj函數(shù)

通過(guò)命令行方式調(diào)用gamultiobj函數(shù)

9.3

案例分析

9.3.1模型建立

9.3.2使用gamultiobj函數(shù)求解多目標(biāo)優(yōu)化問(wèn)題

9.3.3結(jié)果分析

9.4

參考文獻(xiàn)

3、案例實(shí)例及結(jié)果:

作為案例,這里將使用MATLAB自帶的基于遺傳算法的多目標(biāo)優(yōu)化函數(shù)gamultiobj求解一個(gè)簡(jiǎn)單的多目標(biāo)優(yōu)化問(wèn)題。待優(yōu)化的多目標(biāo)問(wèn)題表述如下:

可以看到,在基于遺傳算法的多目標(biāo)優(yōu)化算法的運(yùn)行過(guò)程中,自動(dòng)繪制了第一前端中個(gè)體的分布情況,且分布隨著算法進(jìn)化一代而更新一次。當(dāng)?shù)V购螅玫饺鐖D9.5所示的第一前端個(gè)體分布圖。同時(shí),Worksapce中返回了gamultiobj函數(shù)得到的Pareto解集x及與x對(duì)應(yīng)的目標(biāo)函數(shù)值,如表9.2所示。

4、主程序:clearclcfitnessfcn=@my_first_multi;%Functionhandletothefitnessfunctionnvars=2;%Numberofdecisionvariableslb=[-5,-5];%Lowerboundub=[5,5];%UpperboundA=[];b=[];%NolinearinequalityconstraintsAeq=[];beq=[];%Nolinearequalityconstraintsoptions=gaoptimset('ParetoFraction',0.3,'PopulationSize',100,'Generations',200,'StallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto);[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options);第10章基于粒子群算法的多目標(biāo)搜索算法1、案例背景

在實(shí)際工程優(yōu)化問(wèn)題中,多數(shù)問(wèn)題是多目標(biāo)優(yōu)化問(wèn)題。相對(duì)于單目標(biāo)優(yōu)化問(wèn)題,多目標(biāo)優(yōu)化問(wèn)題的顯著特點(diǎn)是優(yōu)化各個(gè)目標(biāo)使其同時(shí)達(dá)到綜合的最優(yōu)值。然而,由于多目標(biāo)優(yōu)化問(wèn)題的各個(gè)目標(biāo)之間往往是相互沖突的,在滿足其中一個(gè)目標(biāo)最優(yōu)的同時(shí),其他的目標(biāo)往往可能會(huì)受其影響而變得很差。因此,一般適用于單目標(biāo)問(wèn)題的方法難以用于多目標(biāo)問(wèn)題的求解。多目標(biāo)優(yōu)化問(wèn)題很早就引起了人們的重視,現(xiàn)已經(jīng)發(fā)展出多種求解多目標(biāo)優(yōu)化問(wèn)題的方法。多目標(biāo)優(yōu)化問(wèn)題求解中的最重要概念是非劣解和非劣解集,兩者的定義如下。非劣解(noninferiorsolution):在多目標(biāo)優(yōu)化問(wèn)題的可行域中存在一個(gè)問(wèn)題解,若不存在另一個(gè)可行解,使得一個(gè)解中的目標(biāo)全部劣于該解,則該解稱為多目標(biāo)優(yōu)化問(wèn)題的非劣解。所有非劣解的集合叫做非劣解集(noninferiorSet)。

2、案例目錄

本案例的目錄為:案例十

基于粒子群算法的多目標(biāo)搜索算法...

1

10.1

理論基礎(chǔ)...

1

10.2

案例背景

...

2

10.2.1

問(wèn)題描述...

2

10.2.3

適應(yīng)度計(jì)算...

3

10.2.4

篩選非劣解集...

3

10.2.5

粒子速度和位置更新...

3

10.2.6

粒子最優(yōu)...

4

10.3MATLAB程序?qū)崿F(xiàn)...

4

10.3.1

種群初始化...

4

10.3.2

種群更新...

4

10.3.3

更新個(gè)體最優(yōu)粒子...

5

10.3.4非劣解篩選...

5

10.3.5

仿真結(jié)果...

6

10.4

延伸閱讀...

7

10.5

參考文獻(xiàn)...

8

3、主程序%%循環(huán)迭代foriter=1:MaxIt%權(quán)值更新w=wmax-(wmax-wmin)*iter/MaxIt;%從非劣解中選擇粒子作為全局最優(yōu)解s=size(fljx,1)index=randi(s,1,1);gbest=fljx(index,:);%%群體更新fori=1:xSize%速度更新v(i,:)=w*v(i,:)+c1*rand(1,1)*(xbest(i,:)-x(i,:))+c2*rand(1,1)*(gbest-x(i,:));%位置更新x(i,:)=x(i,:)+v(i,:);x(i,:)=rem(x(i,:),objnum)/double(objnum);index1=find(x(i,:)<=0);iflength(index1)~=0x(i,index1)=rand(size(index1));endx(i,:)=ceil(4*x(i,:));end%%更新粒子歷史最佳fori=1:xSize%現(xiàn)在的支配原有的,替代原有的if((px(i)<ppx(i))&&(rx(i)<rrx(i)))||((abs(px(i)-ppx(i))<tol)...&&(rx(i)<rrx(i)))||((px(i)<ppx(i))&&(abs(rx(i)-rrx(i))<tol))||(cx(i)>weight)xbest(i,:)=x(i,:);%沒有記錄目標(biāo)值pxbest(i)=ppx(i);rxbest(i)=rrx(i);cxbest(i)=ccx(i);end%%更新非劣解集合px=ppx;rx=rrx;cx=ccx;%更新升級(jí)非劣解集合s=size(flj,1);%目前非劣解集合中元素個(gè)數(shù)%先將非劣解集合和xbest合并pppx=zeros(1,s+xSize);rrrx=zeros(1,s+xSize);cccx=zeros(1,s+xSize);pppx(1:xSize)=pxbest;pppx(xSize+1:end)=flj(:,1)';rrrx(1:xSize)=rxbest;rrrx(xSize+1:end)=flj(:,2)';cccx(1:xSize)=cxbest;cccx(xSize+1:end)=flj(:,3)';xxbest=zeros(s+xSize,Dim);xxbest(1:xSize,:)=xbest;xxbest(xSize+1:end,:)=fljx;%篩選非劣解flj=[];fljx=[];k=0;tol=1e-7;fori=1:xSize+sflag=0;%沒有被支配%判斷該點(diǎn)是否非劣forj=1:xSize+sifj~=iif((pppx(i)<pppx(j))&&(rrrx(i)<rrrx(j)))||((abs(pppx(i)-pppx(j))<tol)...&&(rrrx(i)<rrrx(j)))||((pppx(i)<pppx(j))&&(abs(rrrx(i)-rrrx(j))<tol))...||(cccx(i)>weight)%有一次被支配flag=1;break;endendend%去掉重復(fù)粒子repflag=0;%重復(fù)標(biāo)志k=1;%不同非劣解粒子數(shù)flj2=[];%存儲(chǔ)不同非劣解fljx2=[];%存儲(chǔ)不同非劣解粒子位置flj2(k,:)=flj(1,:);fljx2(k,:)=fljx(1,:);forj=2:size(flj,1)repflag=0;%重復(fù)標(biāo)志fori=1:size(flj2,1)result=(fljx(j,:)==fljx2(i,:));iflength(find(result==1))==Dimrepflag=1;%有重復(fù)endend%粒子不同,存儲(chǔ)ifrepflag==0k=k+1;flj2(k,:)=flj(j,:);fljx2(k,:)=fljx(j,:);endend%非劣解更新flj=flj2;fljx=fljx2;end4、運(yùn)行結(jié)果第11章基于多層編碼遺傳算法的車間調(diào)度算法1案例背景

遺傳算法具有較強(qiáng)的問(wèn)題求解能力,能夠解決非線性優(yōu)化問(wèn)題。對(duì)于遺傳算法中的染色體表示問(wèn)題中的一個(gè)潛在最優(yōu)解,對(duì)于簡(jiǎn)單的問(wèn)題來(lái)說(shuō),染色體可以方便的表達(dá)問(wèn)題的潛在解,然而,對(duì)于較為復(fù)雜的優(yōu)化問(wèn)題,一個(gè)染色體難以準(zhǔn)確表達(dá)問(wèn)題的解。多層編碼遺傳算法,把個(gè)體編碼分為多層,每層編碼均表示不同的含義,多層編碼共同完整表達(dá)了問(wèn)題的解,從而用一個(gè)染色體準(zhǔn)確表達(dá)出了復(fù)雜問(wèn)題的解。多層編碼遺傳算法擴(kuò)展了遺傳算法的使用領(lǐng)域,使得遺傳算法可以方便用于復(fù)雜問(wèn)題的求解。

2、案例目錄

第十一章

基于多層編碼遺傳算法的車間調(diào)度算法...

1

11.1

理論基礎(chǔ)...

1

11.2

案例背景...

1

11.2.1

問(wèn)題描述...

1

11.2.2

模型建立...

2

11.2.3

算法實(shí)現(xiàn)...

3

11.3MATLAB程序?qū)崿F(xiàn)...

4

11.3.1

主函數(shù)...

4

11.3.2

適應(yīng)度值計(jì)算...

5

11.3.3

交叉函數(shù)...

7

11.3.4

變異函數(shù)...

8

11.3.5

仿真結(jié)果...

8

11.4

案例擴(kuò)展...

10

11.4.1

模糊目標(biāo)...

10

11.4.2

代碼分析...

11

11.4.3

仿真結(jié)果...

12

11.5

參考文獻(xiàn)...

12

3、主程序:%%基本參數(shù)NIND=40;%個(gè)體數(shù)目MAXGEN=50;%最大遺傳代數(shù)GGAP=0.9;%代溝XOVR=0.8;%交叉率MUTR=0.6;%變異率gen=0;%代計(jì)數(shù)器%PNumber工件個(gè)數(shù)MNumber工序個(gè)數(shù)[PNumberMNumber]=size(Jm);trace=zeros(2,MAXGEN);%尋優(yōu)結(jié)果的初始值WNumber=PNumber*MNumber;%工序總個(gè)數(shù)%%初始化Number=zeros(1,PNumber);%PNumber工件個(gè)數(shù)fori=1:PNumberNumber(i)=MNumber;%MNumber工序個(gè)數(shù)end%代碼2層,第一層工序,第二層機(jī)器Chrom=zeros(NIND,2*WNumber);forj=1:NINDWPNumberTemp=Number;fori=1:WNumber%隨機(jī)產(chǎn)成工序val=unidrnd(PNumber);whileWPNumberTemp(val)==0val=unidrnd(PNumber);end%第一層代碼表示工序Chrom(j,i)=val;WPNumberTemp(val)=WPNumberTemp(val)-1;%第2層代碼表示機(jī)器Temp=Jm{val,MNumber-WPNumberTemp(val)};SizeTemp=length(Temp);%隨機(jī)產(chǎn)成工序機(jī)器Chrom(j,i+WNumber)=unidrnd(SizeTemp);endend%計(jì)算目標(biāo)函數(shù)值[PValObjVPS]=cal(Chrom,JmNumber,T,Jm);%%循環(huán)尋找whilegen<MAXGEN%分配適應(yīng)度值FitnV=ranking(ObjV);%選擇操作SelCh=select('rws',Chrom,FitnV,GGAP);%交叉操作SelCh=across(SelCh,XOVR,Jm,T);%變異操作SelCh=aberranceJm(SelCh,MUTR,Jm,T);%計(jì)算目標(biāo)適應(yīng)度值[PValObjVSelPS]=cal(SelCh,JmNumber,T,Jm);%重新插入新種群[ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%代計(jì)數(shù)器增加gen=gen+1;%保存最優(yōu)值trace(1,gen)=min(ObjV);trace(2,gen)=mean(ObjV);%記錄最佳值ifgen==1Val1=PVal;Val2=P;MinVal=min(ObjV);%最小時(shí)間STemp=S;end%記錄最小的工序ifMinVal>trace(1,gen)Val1=PVal;Val2=P;MinVal=trace(1,gen);STemp=S;endend第12章免疫優(yōu)化算法在物流配送中心選址中的應(yīng)用.1、案例背景

12.1.1

物流中心選址問(wèn)題隨著世界經(jīng)濟(jì)的快速發(fā)展以及現(xiàn)代科學(xué)技術(shù)的進(jìn)步,物流業(yè)作為國(guó)民經(jīng)濟(jì)的一個(gè)新興服務(wù)部門,正在全球范圍內(nèi)迅速發(fā)展。物流業(yè)的發(fā)展給

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論