MATLAB遗传算法例子二:求多元函数最小值
来源:互联网 发布:sim800c 源码 编辑:程序博客网 时间:2024/06/10 07:31
本文基于谢菲尔德大学遗传算法工具箱。
多元函数表达式如下:
其最小值显然在0处
%定义遗传算法参数NIND=40; %个体数目(Numbe of individuals)MAXGEN=500; %最大遗传代数(Maximum number of generations)NVAR=20; %变量的维数PRECI=20; %变量的二进制位数(Precision of variables)GGAP=0.9; %代沟(Generation gap)trace=zeros(MAXGEN, 2);%建立区域描述器(Build field descriptor)FieldD=[rep([PRECI],[1,NVAR]);rep([-512;512],[1, NVAR]);rep([1;0;1;1],[1,NVAR])];Chrom=crtbp(NIND, NVAR*PRECI); %创建初始种群gen=0; %代计数器ObjV=objfun1(bs2rv(Chrom, FieldD)); %计算初始种群个体的目标函数值while gen<MAXGEN %迭代 FitnV=ranking(ObjV); %分配适应度值(Assign fitness values) SelCh=select('sus', Chrom, FitnV, GGAP); %选择 SelCh=recombin('xovsp', SelCh, 0.7); %重组 SelCh=mut(SelCh); %变异 ObjVSel=objfun1(bs2rv(SelCh, FieldD)); %计算子代目标函数值 [Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入 gen=gen+1; %代计数器增加 trace(gen, 1)=min(ObjV); %遗传算法性能跟踪 trace(gen, 2)=sum(ObjV)/length(ObjV);endplot(trace(:,1));hold on;plot(trace(:,2),'-.');grid;legend(' 种群均值的变化','解的变化')%输出最优解及其对应的20个自变量的十进制值,Y为最优解,I为种群的序号[Y, I]=min(ObjV)X=bs2rv(Chrom, FieldD);X(I,:)
代码来自于雷英杰《MATLAB_遗传算法工具箱与应用》
注意
与一元函数不同,这里的种群是40*400大小的矩阵,40是种群中个体数目,400是20*20,因为有该多元函数有20个变量,每个变量用20位来表示。、
同时,区域描述器FiledD也要跟着变成20列,每一列描述一个变量。
代码运行之后,查看X可以发现,是一个40*20的矩阵,绝大部分都接近于0值,而20个0正好是最小值处。
0 0
- MATLAB遗传算法例子二:求多元函数最小值
- 遗传算法求二元函数的最小值
- 应用遗传算法求函数最小值
- Matlab遗传算法求函数最大值
- 基于实数编码的求函数最小值遗传算法
- MATLAB遗传算法例子一
- MATLAB遗传算法函数总结
- 遗传算法求函数极大值
- matlab遗传算法工具箱函数及…
- MATLAB遗传算法工具箱的函数简介
- 标准的遗传算法求函数最大值
- C# 遗传算法求函数最大值
- 简单遗传算法求函数极值
- 遗传算法工具箱求函数极值
- 标准的遗传算法求函数最大值。
- 遗传算法求函数最优解
- 练习二1002 求函数的最小值
- 遗传算法解决常见多元表达式
- Coursera ML笔记6
- OpenCV I_10 图像算术
- Linux 新的API signalfd、timerfd、eventfd使用说明
- CCFCSP201609-2火车购票
- HDU2955 Robberies(01背包)
- MATLAB遗传算法例子二:求多元函数最小值
- java之组合模式
- bzoj3289 Mato的文件管理
- UML类图
- Web网页的请求数据写入数据库时产生乱码的解决方法
- 4.18
- php笔记
- 图与邻接链表--极简形式
- 两点间距离公式--hypot函数