遗传算法MATLAB实现(3):多元函数优化举例
多峰的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('多元函数优化过程');
遗传算法MATLAB实现(3):多元函数优化举例的更多相关文章
- 遗传算法MATLAB实现(2):一元函数优化举例
遗传算法提供了一种求解非线性.多模型.多目标等复杂系统优化问题的通用框架. 先从例子开始,慢慢再总结理论... [例]利用遗传算法计算函数f(x)=x*cos(5*pi*x)+3.5在区间[-1,2. ...
- MATLAB实例:多元函数拟合(线性与非线性)
MATLAB实例:多元函数拟合(线性与非线性) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多请看:随笔分类 - MATLAB作图 之前写过一篇博 ...
- 遗传算法MATLAB工具包简介
下面介绍的函数都是Sheriffed大学遗传算法工具包内的常用函数 复制矩阵 B=rep(A,RepN) 1 A表示要被复制的矩阵,RepN包含每个方向的复制次数,RepN(1)代表纵向复制次数,Re ...
- 遗传算法matlab实现
我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 以下运用MATLAB实现遗传算法: clc clear %参数 a = 0 ; b = 4 ; e ...
- [matlab] 6.粒子群优化算法
粒子群优化(PSO, particle swarm optimization)算法是计算智能领域,除了蚁群算法,鱼群算法之外的一种群体智能的优化算法,该算法最早由Kennedy和Eberhart在19 ...
- C# 代码性能优化举例
普通人如果说什么事情慢,指的是 5 分钟,10 分钟,或者 1 个小时.2 个小时.而程序员要说什么事情慢,他们指的是 2 纳秒. 每个纳秒对程序员来说都是非常宝贵的,所以,要对代码进行优化,优化,再 ...
- if-else的优化举例
共有部分: String bookFrom = null; String sheetFrom = null; String bookTo = null; String sheetTo = null; ...
- 遗传算法MATLAB实现(1):工具箱下载及安装
到官网下载谢菲尔德大学的GA工具箱:http://codem.group.shef.ac.uk/index.php/ga-toolbox(其实蛮不懂为什么有人把这个传到某个网上还需要积分才能下载,人家 ...
- 遗传算法Matlab源程序
参考自: http://blog.163.com/zhaoshuyu_thomas/blog/static/461929072009103034816716/ 大家内容上可以参考上述文章,但其代码有很 ...
随机推荐
- CPA专业阶段单科成绩有5年有效期限,即从通过科目考试的第一年算起
你为什么不去参加注册会计师考试? 注册会计师考试出考率极低,大家都有自己的原因,可以客观地说,每年注会考场出考人数不足三成,到底是什么原因不去考试呢?大家是这么说的. 1.没有好好复习呗,还怎么去考试 ...
- [Day6] Nginx 进阶模块
一. 使用变量防盗链referer模块 功能:通过验证referer请求头是否合法,来拒绝非正常的网站访问我们站点的资源 思路:通过referer模块,用invaild_refereri变量根据配置判 ...
- RMQ—ST表
RMQ(Range Minimum/Maximum Query),RMQ是一个求给定范围内最大最小值的问题.我们一般使用st算法来解决这类问题(Sparse Table).这个算法原理不难,主要是各种 ...
- Redis源码解析:13Redis中的事件驱动机制
Redis中,处理网络IO时,采用的是事件驱动机制.但它没有使用libevent或者libev这样的库,而是自己实现了一个非常简单明了的事件驱动库ae_event,主要代码仅仅400行左右. 没有选择 ...
- 技术人自己的KPI
为什么需要技术KPI 在业务技术团队,有一个不好的趋势,就是团队越来越业务,越来越没有技术味道.每个人都在谈业务,技术大会上在谈业务,周会上在聊业务,周报里写的是业务项目......唯独少被谈及的是技 ...
- 抓取B站小视频
抓取B站小视频的代码如下: #请求库import requests #请求头部信息(用户代理)headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; ...
- LTIME16小结(CodeChef)
题目链接 最后一题是Splay...还没有学会..蒟蒻!!! A /****************************************************************** ...
- java并发系列(五)-----如何正确的关闭一个线程
正确的关闭一个线程可不是简单的事情,由于线程调度的复杂性以及不可控性(毕竟运行都由操作系统做主),先来了解一下interrupt() 1.interrupt() 根据jdk文档的介绍,如下: inte ...
- 遍历list时删除元素的正确做法
我们往往会遇到需要删除list中满足条件的元素.举例: List<string> list_str =new List<string>() { "A",&q ...
- CesiumLab 地形数据处理
最近接连有用户反应地形数据处理的各种问题,我也是各种测试,想想还是整理一个文档彻底说明一下. 地形栅格数据格式,一般是tif ,也有dem或者img,但是我个人强烈建议使用tif格式,因为cesium ...