MATLAB遗传法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB遗传法相关的知识,希望对你有一定的参考价值。
用遗传算法求解下述多元函数的极值问题。
f(x,y)=x(x-5-y)+y(y-4)
要求:
(1)查找资料,了解遗传算法求解最优化问题的具体过程;
(2)根据算法步骤,编写MATLAB程序,实现求解过程,程序中需有相应的注释;
(3)遗传算法中的相关操作应用相应的函数来实现;
(4)报告中除题目外,还应给出单纯形法求多元函数极值问题的计算步骤,程序代码,运行结果以及验算结果。
(求大神给出编程全过程)
x=4.6563310120041;y=4.36109789123097
极值f=20.3321686720185追问
能不能不用工具箱帮我编一下
追答能不能把整个编程发给我不用工具箱
追答代码已私信给你了。
参考技术A options 可以不写 有默认设置 options是一个结构体 要用函数gaoptimset()设置 options=gaoptimset() 然后把options填到ga()里面 gaoptimset('属性名1',数值1,'属性名2',数值2......) 常用设置: 更多设置看帮助吧图像分割基于matlab改进的遗传算法与最大熵法结合图像分割含Matlab源码 2302期
⛄一、改进的遗传算法与最大熵法结合图像分割简介
1 最大熵阈值分割原理
最大熵图像分割算法在图像质量较好和背景稳定变化时,可以取得比较理想的分割结果。对于灰度范围为0 ~ 255的病害叶片图像,假设图中灰度级低于t的像素点构成病斑区域( gi) ,灰度级高于t的像素点构成背景区域( Gi) ,则各个灰度级在两区域的分布概率分别为:
病斑区域和背景区域的熵分别为:
当熵函数取得最大值时,对应的灰度值T就是所求的最佳阈值,即
2 最大熵算法与GA相结合的图像分割方法
最大熵算法的求解原理是在解空间中找到一个最优解, 使得图像中目标与背景分布的熵最大。GA是一种基于生物自然选择和遗传机理的随机搜索算法,具有强大的全局最优解搜索能力和信息处理的隐并行性以及应用的鲁棒性。只要检测少量结构就能反映搜索空间较大的区域,并可获得稳定的最优解。GA是一个以适应度函数为依据,通过对种群中的个体施加遗传操作,实现种群内个体结构重组的迭代过程, 逐渐逼近最优解。将GA与最大熵算法相结合,能够得到病斑图像分割的最佳阈值。其病斑图像分割过程描述如下: ( 1) 数据输入。读入作物病害叶片图像,将其转换为灰度图像。( 2) 编码方式。将种群中的各个个体编码为8位二进制码,每个个体代表1个分割阈值,即用00000000 ~ 11111111之间的一个8位二进制代码代表一个图像分割阈值。( 3) 确定算法参数。种群规模n定为20,最小迭代次数为10。当迭代次数超过该值后,检查每代种群中最优个体适应度的变化, 若变化很小,即终止算法。在运算的初始阶段取较大的交叉概率( Pc= 0. 5) 和较小的变异概率( Pm= 0. 02 ) ,以便尽快搜索出最优个体。当迭代过程中种群个体的适应值难以继续增大时,将交叉概率减小10% 、变异概率增加20% ,由此可提高收敛速度,避免陷入局部极值。( 4) 种群规模设置。随机在0 ~ 255之间以同等概率生成n个个体I1~ In作为第1次寻优的初始种群。种群规模设置应该合理,若种群规模过大,则适应度评估次数增加,计算量增加; 种群规模过小,可能会引起未成熟收敛现象。( 5) 适应度函数设计。适应度函数是对个体进行遗传操作的依据,要能反映个体进化的优良程度,即个体有可能达到或接近问题最优解的程度。本算法采用式 ( 5) 作为适应度函数。( 6) 解码。对二进制个体组解码为0 ~ 255之间的实数,求其适应度值。( 7) 选择操作。选择操作先进行赌轮法,再采用精英策略。其具体过程为先计算各个体的适应度的总和S,再随机生成0 ~ S之间一个随机数k,然后从第1个个体开始累加,直到累加值大于该随机数k,此时最后一个累加的个体便是要选择的个体。如此重复形成用于繁殖的新种群 。( 8) 交叉操作。采用单点交叉,在I’1~ I’n中每次选取2个个体按设定的交叉概率进行交叉操作,生成新代的种群I″1~ I″n。( 9) 变异操作。采用基本变异算子,按设定的变异概率随机从I″1~ I″n中选择若干个个体,再随机从这些个体中选择某一位进行变异运算。从而形成新代种群I’‘‘1~ I’’'n。( 10) 对经过遗传操作后的个体采用小生境技术, 由于对适应度小的个体使用惩罚函数,可大幅提高其被淘汰的概率。( 11) 终止准则。没有满足某种停止条件,则继续上述操作,否则进入( 5) 。以迭代次数为终止条件,达到预定的最大迭代次数,则算法终止。当算法执行到最大进化代数 ( 或满足终止条件) ,种群中的最高适应度值仍未发生变化 ( 稳定条件) 时,算法停止运行,具有最高适应度值的个体即为分割阈值; 否则以新代种群I1~ In转到步骤( 5) 。本算法的终止准则,为当相邻2代的个体的平均适应度值小于0. 001时停止迭代。
⛄二、部分源代码
I = imread(‘lena.tif’);
%imshow(I);
[M,N] = size(I);%图像大小M x N
f = I;%[1 2 3 ;4 5 6 ;7 8 9];
K = 255;%最大灰度值
W = 1;%邻域半径
a = f;%像素点W邻域内的平均灰度
for m=W+1:M-W
for n=W+1:N-W
a(m,n) = round(mean2(f(m-W:m+W,n-W:n+W)));
end
end
c = zeros(K+1,K+1);%二元组(u,v)发生的频数
for m=1:M
for n=1:N
c(f(m,n),a(m,n)) = c(f(m,n),a(m,n)) + 1;
end
end
% disp(‘总频数:’);disp(sum(sum©));
p = c/(M*N);
% disp(‘总概率:’);disp(sum(sum§));
temp1 = 0;
for i=1:K+1
for j=1:K+1
if p(i,j)~=0
temp1 = temp1 + p(i,j)*log(p(i,j));
end
end
end
HL = -temp1;
% %画适应度函数曲面%
% z = zeros(256,256);
% max = 0;
% max_s = 0;max_t=0;tic;
% for i=0:255
% for j=0:255
% %z(i+1,j+1) =
% tem = fitness(i,j,p,HL);
% if tem>max
% max = tem;
% max_s = i;
% max_t = j;
% end
% end
% end
% time_1 = toc;
% disp(‘穷举法最大适应值:’);disp(max);disp(max_s);disp(max_t);disp(‘穷举法时间:’);disp(time_1);
% figure;mesh(z);
%--------遗传算法优化二维熵域值--------%
cn = 30;%初始种群大小
fg = 50;%终止遗传代数
pc = 0.6;%交叉概率
pm = 0.001;%变异概率
cl = 16;%编码长度
% precision = 0.0001;%二维熵精度,遗传算法终止条件之二
x0 = round(rand(cn,cl));%–初始化种群x0
%x = zeros(cn,2,fg);%保存所有代的所有种群
% x0_st = zeros(cn,2);
maxfit = zeros(1,fg+1);%各代的最大适应值
avgfit = zeros(1,fg+1);%各代的平均适应值
x_st = zeros(cn,2,fg+1);%各代种群各个体的s与t值
%-计算并记录初始种群信息
disp(‘迭代计算二维熵阈值--------’);
x0_fit = zeros(cn,1);
for i=1:cn
x0_s = bin2dec(num2str(x0(i,1:8)));
x0_t = bin2dec(num2str(x0(i,9:16)));
x0_fit(i) = fitness(x0_s,x0_t,p,HL);
x_st(i,1,1) = x0_s;
x_st(i,2,1) = x0_t;
end
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]师韵,王震,王旭启,张善文.基于改进遗传算法的最大熵作物病害叶片图像分割算法[J].江苏农业科学. 2015,43(09)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
以上是关于MATLAB遗传法的主要内容,如果未能解决你的问题,请参考以下文章
图像分割基于matlab改进的遗传算法与最大熵法结合图像分割含Matlab源码 2302期
优化求解基于matlab遗传算法求解数控机床加工孔最佳路径优化问题含Matlab源码 2100期