% 主函数
clc;
clear all;
M = 30;N =60; %N为染色体长度、M为种群(规模)个体数
generation = 100; %遗传代数
gen = 1; %从第一代开始遗传
maxdata = -10; %初始化一个最大
pm = 0.08; %变异概率
pc = 0.60; %交叉概率
%sum1_fit_eve(0)=0.00; %总适应度
pop = round(rand(M,N)); %随机初始化矩阵,产生初始种群(取整)
x = decode_x(pop(:,1:30)); %选取前半染色体
y = decode_y(pop(:,31:end));%选取后半染色体
%对x1 x2进行解码
fitness = y.*3.226+((6.452*(x.*1+y.*0.125).*(cos(x.*1)-cos(y.*2)).^2)./((0.8+(x.*1-4.2).^2).^0.5+2.*(y.*1-7).^2)); %自己定义的适应度函数
while gen < generation
[B] = seclection(fitness,pop); %轮盘赌选择
[newpop] = crossover(pc,B); %单点交叉
[B] = mutation(pm,newpop); %单点变异操作
pop = B;
x = decode_x(pop(:,1:30));
y = decode_y(pop(:,31:end));
fitness = y.*3.226+((6.452*(x+y.*0.125).*(cos(x)-cos(y.*2)).^2)./((0.8+(x-4.2).^2).^0.5+2.*(y-7).^2)); %计算适应度
[fit_best,index] = max(fitness);%本代中的最优目标值
sum(gen)=fit_best+sum(gen-1);
sum1_fit_eve(gen)=sum(gen)/gen; %求平均适应度
if fit_best >= maxdata
maxdata = fit_best;
verter = pop(index,:);
x_1 = decode_x(verter(1:30));%找到最优解的这个染色体
y_1 = decode_y(verter(31:end));
end
num(gen) = maxdata;
numx(gen) = x_1;
numy(gen) = y_1;
gen = gen + 1;
end
disp(sprintf('max=:%.15f',num(gen-1))); %输出最优解
disp(sprintf('x=:%.15f y=:%.15f',x_1,y_1));%最优解对应的x1 x2的值
figure(1)
plot(num,'k');%绘制最佳适应度图形
xlabel('迭代次数');
ylabel('最佳适应度');
hold on;
figure(2)
%hold on;
plot(numx,'r--');%绘制x最佳解图形
hold on;
plot(numy,'b');%绘制y最佳解图形
legend('x值','y值')
figure(3)
plot(sum1_fit_eve,'b*');%绘制平均适应度图形
GA两个变量求函数最小值
需积分: 49 91 浏览量
2018-04-12
16:26:57
上传
评论 3
收藏 3KB ZIP 举报
yu_xin510
- 粉丝: 0
- 资源: 1
最新资源
- 《软件测试训练营》学习笔记-举例注册测试用例
- 机器学习预测.rar机器学习预测.rar机器学习预测.rar
- VIS 110Nm lib ip
- 848694479200715布谷鸟配音_1.10.8.0.apk
- 基于改进粒子群算法微电网日前优化(matlab程序)
- Energy Hub Integration: Optimizing Electricity and Heat Market P
- 基于C51单片机蓝牙控制小车proteus仿真程序源码+相关技术文档资料.zip
- Integrated-Energy-Systems-with-CAES-(注释完全,可直接运行)
- PDF为英语文本绘制热区(DEMO)
- Python一种新的需求响应机制DR-VCG研究(注释完全,可直接运行)(文档加Matlab源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈