遗传算法Matlab源代码.doc

上传人:文库****9 文档编号:151685055 上传时间:2020-11-16 格式:DOC 页数:10 大小:48KB
返回 下载 相关 举报
遗传算法Matlab源代码.doc_第1页
第1页 / 共10页
遗传算法Matlab源代码.doc_第2页
第2页 / 共10页
遗传算法Matlab源代码.doc_第3页
第3页 / 共10页
遗传算法Matlab源代码.doc_第4页
第4页 / 共10页
遗传算法Matlab源代码.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《遗传算法Matlab源代码.doc》由会员分享,可在线阅读,更多相关《遗传算法Matlab源代码.doc(10页珍藏版)》请在金锄头文库上搜索。

1、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)% Finds a maximum of a function of several variables.% fga solves problems of the form: % max F(X) subj

2、ect to: LB = X = UB (LB=bounds(:,1),UB=bounds(:,2) % X - 最优个体对应自变量值% MaxFval - 最优个体对应函数值% BestPop - 最优的群体即为最优的染色体群% Trace - 每代最佳个体所对应的目标函数值% FUN - 目标函数% bounds - 自变量范围% MaxEranum - 种群的代数,取50-500(默认200)% PopSize - 每一代种群的规模;此可取50-200(默认100)% pCross - 交叉概率,一般取0.5-0.85之间较好(默认0.8)% pMutation - 初始变异概率,一般取

3、0.05-0.2之间较好(默认0.1)% pInversion - 倒位概率,一般取0.050.3之间较好(默认0.2)% options - 1*2矩阵,options(1)=0二进制编码(默认0),option(1)=0十进制编码,option(2)设定求解精度(默认1e-4)T1=clock;%检验初始参数if nargin0) error(数据输入错误,请重新输入:);end% 定义全局变量global m n NewPop children1 children2 VarNum% 初始化种群和变量precision = options(2);bits = ceil(log2(bound

4、s(:,2)-bounds(:,1) ./ precision);%由设定精度划分区间VarNum = size(bounds,1);Pop = InitPop(PopSize,bounds,bits,options);%初始化种群m,n = size(Pop);fit = zeros(1,m);NewPop = zeros(m,n);children1 = zeros(1,n);children2 = zeros(1,n);pm0 = pMutation;BestPop = zeros(MaxEranum,n);%分配初始解空间BestPop,TraceTrace = zeros(1,Max

5、Eranum);Lb = ones(PopSize,1)*bounds(:,1);Ub = ones(PopSize,1)*bounds(:,2);%二进制编码采用多点交叉和均匀交叉,并逐步增大均匀交叉概率%浮点编码采用离散交叉(前期)、算术交叉(中期)、AEA重组(后期)OptsCrossOver = ones(1,MaxEranum)*options(1);. round(unidrnd(2*(MaxEranum-1:MaxEranum)/MaxEranum);%浮点编码时采用两种自适应变异和一种随机变异(自适应变异发生概率为随机变异发生的2倍)OptsMutation = ones(1,

6、MaxEranum)*options(1);unidrnd(5,1,MaxEranum);if options(1)=3 D=zeros(n); CityPosition=bounds; D = sqrt(CityPosition(:, ones(1,n) - CityPosition(:, ones(1,n).2 +. (CityPosition(:,2*ones(1,n) - CityPosition(:,2*ones(1,n).2 );end%=% 进化主程序 %=eranum = 1;H=waitbar(0,Please wait.);while(eranum0,1 ,Pop-(Pop

7、-Lb)./(Ub-Lb) end switch round(unifrnd(0,eranum/MaxEranum)%进化前期尽量使用实行锦标赛选择,后期逐步增大非线性排名选择 case 0 selectpop=TournamentSelect(Pop,fit,bits);%锦标赛选择 case 1 selectpop=NonlinearRankSelect(Pop,fit,bits);%非线性排名选择 end CrossOverPop=CrossOver(selectpop,pCross,OptsCrossOver(eranum,:);%交叉 MutationPop=Mutation(Cro

8、ssOverPop,fit,pMutation,VarNum,OptsMutation(eranum,:); %变异 InversionPop=Inversion(MutationPop,pInversion);%倒位 %更新种群 if options(1)=1 Pop=Lb+InversionPop.*(Ub-Lb);%还原Pop else Pop=InversionPop; end pMutation=pm0+(eranum3)*(pCross/2-pm0)/(eranum4); %逐步增大变异率至1/2交叉率 percent=num2str(round(100*eranum/MaxEra

9、num); waitbar(eranum/MaxEranum,H,Evolution complete ,percent,%); eranum=eranum+1;endclose(H);% 格式化输出进化结果和解的变化情况t=1:MaxEranum;plot(t,Trace,t,Meanfit);legend(解的变化,种群的变化);title(函数优化的遗传算法);xlabel(进化世代数);ylabel(每一代最优适应度);MaxFval,MaxFvalIn=max(Trace);if options(1)=1|options(1)=3 X=BestPop(MaxFvalIn,:);elseif options(1)=0 X=b2f(BestPop(MaxFvalIn,:),bounds,bits);endhold on; plot(MaxFvalIn,MaxFval,*);text(MaxFvalIn+5,MaxFval,FMAX= num2str(MaxFval);str1=sprintf( Best generation:n %dnn Best X:n %snn MaxFvaln %fn,.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号