使用遗传算法解决多变量函数优化问题!
2014-01-16 22:17
435 查看
很多朋友在碰到多变量值优化的问题的时候不能很好的将问题转化,利用有效编码的方法将解的个数,解的编码很好的很合理的进行设计,因此不能利用遗传算法进行问题的求解!
其实,简单的来说,就是将多个变量的数值编码编排进去,进行组合,只需要增长基因个体的长度,但是要明确每个变量具体的位置,然后让每个变量转化成二进制的等长编码,组合在一起,就可以来运算了!
当然,我们要利用一个矩阵去跟踪每组迭代的结果的大小:
然后,要构造一个译码矩阵FieldD,由bs2rv函数将种群Chrom根据译码矩阵换成时值向量,返回十进制的矩阵:
且FieldD矩阵的结构如下:
当然我们也要先将目标函数显示出来,看看基本的函数的形式:
还有就是设计遗传算法的参数估计:基本上也都差不太多,更我上一篇博客基本一样!
经遗传算法之后,这个最优解的位置是:(图中标记蓝点的位置)
算法的迭代次数和优化的趋势是:
其实,简单的来说,就是将多个变量的数值编码编排进去,进行组合,只需要增长基因个体的长度,但是要明确每个变量具体的位置,然后让每个变量转化成二进制的等长编码,组合在一起,就可以来运算了!
当然,我们要利用一个矩阵去跟踪每组迭代的结果的大小:
trace = zeros(3,MAXGEN);
然后,要构造一个译码矩阵FieldD,由bs2rv函数将种群Chrom根据译码矩阵换成时值向量,返回十进制的矩阵:
且FieldD矩阵的结构如下:
FieldD=[len;lb;ub;code;scale;lbin;ubin];每个变量的含义最好搞清楚,不然得到的结果就不好了!
ObjV = Y.*sin(2*pi*X)+X.*cos(2*pi*Y); 当然我们也要有一个比较好的代价函数
这个是函数的主体部分:
while gen < MAXGEN FitnV = ranking(-ObjV); Selch = select('sus',Chrom,FitnV,GGAP); Selch = recombin('xovsp',Selch,px); Selch = mut(Selch,pm); XY = bs2rv(Selch,FieldD); X = XY(:,1);Y = XY(:,2); ObjvSel = Y.*sin(2*pi*X)+X.*cos(2*pi*Y); [Chrom,ObjV] = reins(Chrom,Selch,1,1,ObjV,ObjvSel); XY = bs2rv(Chrom,FieldD); gen = gen + 1; [Y,I] = min(ObjV); trace(1:2,gen) = XY(I,:); trace(3,gen) = Y; end
当然我们也要先将目标函数显示出来,看看基本的函数的形式:
还有就是设计遗传算法的参数估计:基本上也都差不太多,更我上一篇博客基本一样!
NIND = 40; MAXGEN = 50; PRECI = 20; GGAP = 0.95; px = 0.7; pm = 0.01;
经遗传算法之后,这个最优解的位置是:(图中标记蓝点的位置)
算法的迭代次数和优化的趋势是:
最优解是:X = -1.2624 Y = 1.9999 Z = -3.2563
相关文章推荐
- 解决设备应用程序无法申请到内存,导致设备无法正常工作的问题---优化设备虚拟内存使用
- 遗传算法解决函数优化问题
- 使用RNN解决NLP中序列标注问题的通用优化思路
- 队列优化并使用邻接表存储的Bellman-Ford算法模板解决最短路径存在负权边问题
- 使用RNN解决NLP中序列标注问题的通用优化思路
- 优化 html 标签 为何能用HTML/CSS解决的问题就不要使用JS?
- 在hibernate框架中如何解决session的使用原则问题,以及hibernate的一点小优化
- 列表中使用Picasso加载图片滑动列表时加载效率优化解决滑动卡顿问题
- 解决visual 2008中error PRJ0003 : 生成 cmd.exe 时出错”的问题---(使用优化大师清理文件之后)
- 解决Mysql数据量大的时候 分页优化(使用limit)的问题
- Python使用遗传算法解决最大流问题
- 使用RNN解决NLP中序列标注问题的通用优化思路
- 转:使用RNN解决NLP中序列标注问题的通用优化思路
- MATLAB(1)基于遗传算法解决最优化问题及相应的MATLAB遗传工具箱使用
- 最大流问题 (使用遗传算法解决 --Python 实现)
- 使用RNN解决NLP中序列标注问题的通用优化思路
- jQuery选择器优化问题,使用$('#a .b')等,IDE会提示这是低效的用法的解决
- 遗传算法解决TSP问题c++ 可使用(找不到出处了)
- 用遗传算法解决多元函数的优化问题