各位谁擅长遗传算法呀,我这有个函数得用遗传算法编一下,进行最优化求解的过程,最好是用Matlab.函数是Z=X²+Y²,0≤X≤2,10≤Y≤20,..
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/27 16:15:04
![各位谁擅长遗传算法呀,我这有个函数得用遗传算法编一下,进行最优化求解的过程,最好是用Matlab.函数是Z=X²+Y²,0≤X≤2,10≤Y≤20,..](/uploads/image/z/4516814-38-4.jpg?t=%E5%90%84%E4%BD%8D%E8%B0%81%E6%93%85%E9%95%BF%E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95%E5%91%80%2C%E6%88%91%E8%BF%99%E6%9C%89%E4%B8%AA%E5%87%BD%E6%95%B0%E5%BE%97%E7%94%A8%E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95%E7%BC%96%E4%B8%80%E4%B8%8B%2C%E8%BF%9B%E8%A1%8C%E6%9C%80%E4%BC%98%E5%8C%96%E6%B1%82%E8%A7%A3%E7%9A%84%E8%BF%87%E7%A8%8B%2C%E6%9C%80%E5%A5%BD%E6%98%AF%E7%94%A8Matlab.%E5%87%BD%E6%95%B0%E6%98%AFZ%3DX%26sup2%3B%2BY%26sup2%3B%2C0%E2%89%A4X%E2%89%A42%2C10%E2%89%A4Y%E2%89%A420%2C..)
各位谁擅长遗传算法呀,我这有个函数得用遗传算法编一下,进行最优化求解的过程,最好是用Matlab.函数是Z=X²+Y²,0≤X≤2,10≤Y≤20,..
各位谁擅长遗传算法呀,我这有个函数得用遗传算法编一下,进行最优化求解的过程,最好是用Matlab.
函数是Z=X²+Y²,0≤X≤2,10≤Y≤20,
..
各位谁擅长遗传算法呀,我这有个函数得用遗传算法编一下,进行最优化求解的过程,最好是用Matlab.函数是Z=X²+Y²,0≤X≤2,10≤Y≤20,..
% 主程序
%遗传算法主程序
%Name:genmain.m
%author:杨幂
clear
clf
%%初始化
popsize=50; %群体大小
chromlength=30; %字符串长度(个体长度)
pc=0.6; %交叉概率
pm=0.1; %变异概率
pop=initpop(popsize,chromlength); %随机产生初始群体
%%开始迭代
for i=1:20 %20为迭代次数
[objvalue]=calobjvalue(pop); %计算目标函数
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
[newpop]=selection(pop,fitvalue); %复制
[newpop]=crossover(pop,pc); %交叉
[newpop]=mutation(pop,pm); %变异
[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值
y(i)=max(bestfit);%储存最优个体适应值
n(i)=i;
pop5=bestindividual;%储存最优个体
%解码
x1(i)=decodechrom(pop5,1,chromlength/2)*2/32767;
x2(i)=10+decodechrom(pop5,chromlength/2+1,chromlength/2)*10/32767;
pop=newpop;%将新产生的种群作为当前种群
end
%%绘图
figure(1)%最优点变化趋势图
i=1:20;
plot(y(i),'-r*')
xlabel('迭代次数');
ylabel('最优个体适应值');
title('最优点变化趋势');
legend('最优点');
grid on
figure(2)%最优点分布图
[X1,X2]=meshgrid(0:0.1:2,10:0.1:20);
Z=X1.^2+X2.^2;
mesh(X1,X2,Z);
xlabel('自变量x1'),ylabel('自变量x2'),zlabel('函数值f(x1,x2)');
hold on
plot3(x1,x2,y,'ro','MarkerEdgeColor','r','MarkerFaceColor','r','MarkerSize',5)
title('最优点分布');
legend('最优点');
hold off
[z index]=max(y); %计算最大值及其位置
x5=[x1(index),x2(index)]%计算最大值对应的x值
z
这个,嘿嘿,还是简单的,记得MATLAB讲解的书上看到过相似的例题,本人暂时还不会