• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

遗传算法MATLAB实现(3):多元函数优化举例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

多峰的Shubert为:

  

求f(x,y)在[-10,10]x[-10,10]上的最大值。

 

MATLAB代码:

    fun_mutv函数为:

function my=fun_mutv(x,y)
t1=zeros(size(x));
t2=t1;
for i=1:5
    t1=t1+i*cos((i+1)*x+i);
    t2=t2+i*cos((i+1)*y+i);
end
my=t1.*t2;

  

opt_minmax=1;   %优化目标类型:1最大化 0最小化
num_ppu=60;     %种群规模,个体个数。
num_gen=100;    %最大遗传代数
num_v=2;        %变量个数
len_ch=20;      %基因长度
gap=0.9;        %代沟
sub=-10;        %变量取值下限
up=10;          %变量取值上限
cd_gray=1;      %是否选择格雷码编码方式 1是,0否
sc_log=0;           %是否选择对数标度:1是,0否
trace=zeros(num_gen,2);     %遗传迭代性能跟踪器
%区域描述器,rep为矩阵复制函数
fieldd=[rep([len_ch],[1,num_v]);rep([sub;up],[1,num_v]);rep([1-cd_gray;sc_log;1;1],[1,num_v])];
chrom=crtbp(num_ppu,len_ch*num_v);  %初始化生产种群
k_gen=0;
x=bs2rv(chrom,fieldd);      %翻译初始化种群为10进制
fun_v=fun_mutv(x(:,1),x(:,2));  %计算目标函数值
[tx,ty]=meshgrid(-10:1:10); 
mesh(tx,ty,fun_mutv(tx,ty));
xlabel(\'x\');ylabel(\'y\');zlabel(\'z\');
title(\'多元函数优化结果\');
hold on;
while k_gen<num_gen
    fit_v=ranking(-opt_minmax*fun_v);      %计算目标函数适应度
    selchrom=select(\'rws\',chrom,fit_v,gap);     %使用轮盘赌方式选择
    selchrom=recombin(\'xovsp\',selchrom);    %交叉
    selchtom=mut(selchrom);                         %变异
    x=bs2rv(selchrom,fieldd);                       %子代个体翻译
    fun_v_sel=fun_mutv(x(:,1),x(:,2));              %计算子代个体对应目标函数值
    fit_v_sel=ranking(-opt_minmax*fun_v_sel);       
    [chrom,fun_v]=reins(chrom,selchrom,1,1,opt_minmax*fun_v,opt_minmax*fun_v_sel);   %根据目标函数值将子代个体插入新种群 
    [f,id]=max(fun_v);                              %寻找当前种群最优解
    x=bs2rv(chrom(id,:),fieldd);
    f=f*opt_minmax;
    fun_v=fun_v*opt_minmax;
    plot3(x(1,1),x(1,2),f,\'k*\');
    hold on;
    k_gen=k_gen+1;
    trace(k_gen,1)=f;
    trace(k_gen,2)=mean(fun_v);
end
figure;
plot(trace(:,1),\'r-*\');
hold on;
plot(trace(:,2),\'b-o\');
legend(\'各子代种群最优解\',\'各子代种群平均值\');
xlabel(\'迭代次数\');ylabel(\'目标函数优化情况\');
title(\'多元函数优化过程\');

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap