function[X,MaxFval,BestPop,Trace]=fga(FUN,bounds,MaxEranum,PopSize,options,pCross,pMutation,pInversion)%[X,MaxFval,BestPop,Trace]=fga(FUN,bounds,MaxEranum,PopSize,options,pCross,pMutation,pInversion)%Findsamaximumofafunctionofseveralvariables.%fgasolvesproblemsoftheform:%maxF(X)subjectto:LB<=X<=UB(LB=bounds(:,1),UB=bounds(:,2))%X-最优个体对应自变量值%MaxFval-最优个体对应函数值%BestPop-最优的群体即为最优的染色体群%Trace-每代最佳个体所对应的目标函数值%FUN-目标函数%bounds-自变量范围%MaxEranum-种群的代数,取50--500(默认200)%PopSize-每一代种群的规模;此可取50--200(默认100)%pCross-交叉概率,--()%pMutation-初始变异概率,-()%pInversion-倒位概率,-()%options-1*2矩阵,options(1)=0二进制编码(默认0),option(1)~=0十进制编码,option(2)设定求解精度(默认1e-4)T1=clock;%检验初始参数ifnargin<2,error('FMAXGArequiresatleastthreeinputarguments');endifnargin==2,MaxEranum=150;PopSize=100;options=[11e-4];pCross=;pMutation=;pInversion=;endifnargin==3,PopSize=100;options=[11e-4];pCross=;pMutation=;pInversion=;endifnargin==4,options=[11e-4];pCross=;pMutation=;pInversion=;endifnargin==5,pCross=;pMutation=;pInversion=;endifnargin==6,pMutation=;pInversion=;endifnargin==7,pInversion=;endif(options(1)==0|options(1)==1)&find((bounds(:,1)-bounds(:,2))>0)error('数据输入错误,请重新输入:');end%定义全局变量globalmnNewPopchildren1children2VarNum%初始化种群和变量precision=options(2);bits=ceil(log2((bounds(:,2)-bounds(:,1))'./precision));%由设定精度划分区间VarNum=size
遗传算法Matlab源代码 来自淘豆网m.daumloan.com转载请标明出处.