多目标遗传算法优化
来源:互联网 发布:淘宝降权该怎么办 编辑:程序博客网 时间:2024/04/27 14:23
function MultiGA()
%% 遗传算法求解多目标优化案例
%% 将原多目标函数改写为f1=(x^2+y^2)/4;f2=x(1-y)+10;
% 运用线性叠加法,F=a*f1(x)+b*f2(x) ,a+b=1
% 总目标函数改写为 f=0.6*(x^2+y^2)/4+0.4*(x*(1-y)+10);
popse=100; % 种群数目
maxgen=50; % 最大迭代次数
preci=20; % 编码长度
gap=0.95; % 代沟大小
px=0.7; % 交叉概率
pm=0.01; %变异概率
lbx=1; % 变量下界
lby=1;
ubx=4; % 变量上界
uby=2;
trace=zeros(3,maxgen); % 定义寻优结果的初始值
FieldD=[preci preci;lbx lby;ubx uby;1 1;0 0;1 1;1 1]; % 区域描述器
chrom=crtbp(popse,preci*2); % 创建随机种群
% 优化
gen=0;
pop=bs2rv(chrom,FieldD); % 进制转换
X=pop(:,1);Y=pop(:,2);
objv=0.15*(X.^2+Y.^2)+0.4*(X.*(1-Y)+10); % 目标函数
while gen < maxgen
fitnv=ranking(-objv);
selch=select('sus',chrom,fitnv,gap); % 选择 ‘sus’表示为随机遍历抽样
selch=recombin('xovmp',selch,px); % 重组 ‘xovmp’表示多点交叉
selch=mut(selch,pm);
pop=bs2rv(selch,FieldD); % 子代个体进行进制转换
X=pop(:,1);Y=pop(:,2);
objvsel=0.15*(X.^2+Y.^2)+0.4*(X.*(1-Y)+10);
[chrom,objv]=reins(chrom,selch,1,1,objv,objvsel);
pop=bs2rv(chrom,FieldD);
gen=gen+1;
[Y,I]=max(objv);
trace(1:2,gen)=pop(I,:);
trace(3,gen)=Y;
end
%% 画出求解结果
figure(1)
plot3(trace(1,:),trace(2,:),trace(3,:),'b'); % 画出每代最优点
xlabel('x')
ylabel('y')
zlabel('f')
figure(2)
plot(1:maxgen,trace(3,:));
xlabel('迭代次数')
ylabel('最优解')
bestz=trace(3,end);
bestX=trace(1,end);
bestY=trace(2,end);
fprintf(['最优解:\n X=',num2str(bestX),'\n Y=',num2str(bestY),'\n z=',num2str(bestz)])
%% 遗传算法求解多目标优化案例
%% 将原多目标函数改写为f1=(x^2+y^2)/4;f2=x(1-y)+10;
% 运用线性叠加法,F=a*f1(x)+b*f2(x) ,a+b=1
% 总目标函数改写为 f=0.6*(x^2+y^2)/4+0.4*(x*(1-y)+10);
popse=100; % 种群数目
maxgen=50; % 最大迭代次数
preci=20; % 编码长度
gap=0.95; % 代沟大小
px=0.7; % 交叉概率
pm=0.01; %变异概率
lbx=1; % 变量下界
lby=1;
ubx=4; % 变量上界
uby=2;
trace=zeros(3,maxgen); % 定义寻优结果的初始值
FieldD=[preci preci;lbx lby;ubx uby;1 1;0 0;1 1;1 1]; % 区域描述器
chrom=crtbp(popse,preci*2); % 创建随机种群
% 优化
gen=0;
pop=bs2rv(chrom,FieldD); % 进制转换
X=pop(:,1);Y=pop(:,2);
objv=0.15*(X.^2+Y.^2)+0.4*(X.*(1-Y)+10); % 目标函数
while gen < maxgen
fitnv=ranking(-objv);
selch=select('sus',chrom,fitnv,gap); % 选择 ‘sus’表示为随机遍历抽样
selch=recombin('xovmp',selch,px); % 重组 ‘xovmp’表示多点交叉
selch=mut(selch,pm);
pop=bs2rv(selch,FieldD); % 子代个体进行进制转换
X=pop(:,1);Y=pop(:,2);
objvsel=0.15*(X.^2+Y.^2)+0.4*(X.*(1-Y)+10);
[chrom,objv]=reins(chrom,selch,1,1,objv,objvsel);
pop=bs2rv(chrom,FieldD);
gen=gen+1;
[Y,I]=max(objv);
trace(1:2,gen)=pop(I,:);
trace(3,gen)=Y;
end
%% 画出求解结果
figure(1)
plot3(trace(1,:),trace(2,:),trace(3,:),'b'); % 画出每代最优点
xlabel('x')
ylabel('y')
zlabel('f')
figure(2)
plot(1:maxgen,trace(3,:));
xlabel('迭代次数')
ylabel('最优解')
bestz=trace(3,end);
bestX=trace(1,end);
bestY=trace(2,end);
fprintf(['最优解:\n X=',num2str(bestX),'\n Y=',num2str(bestY),'\n z=',num2str(bestz)])
1 0
- 多目标遗传算法优化
- 多目标遗传算法研究
- 多目标遗传算法研究
- 多目标遗传算法NSGA
- 学习-基于遗传算法的多目标优化算法
- 遗传算法与多目标遗传算法
- 多目标优化算法学习
- 多目标优化算法day1
- 多目标优化的遗传算法及其改进(浮点数编码),对多个函数进行测试
- 遗传算法求解多约束、多类型车辆、多目标优化的车辆路径问题
- 多目标遗传算法NSGA-II在工业机器人关节空间轨迹优化上的应用
- 优化算法 - 遗传算法
- 优化算法-遗传算法
- 优化算法-遗传算法
- C++实现多目标遗传算法(0/1背包问题)
- 遗传算法优化策略
- 分享多目标蝙蝠优化算法MATLAB程序
- 全局优化算法:遗传算法
- 【C语言】实现一个变色的进度条
- python error-object() takes no parameters
- Java sdut acm 2504 多项式求和
- 六、jvm之如何判断对象已死?
- 合并两个排序链表
- 多目标遗传算法优化
- 矩阵乘法——区间DP
- 优化后的单例模式
- Codeforces Round #321 (Div. 2)
- POJ 1700 过河问题(Crossing River)
- 多线程方式2
- VS2012使用技巧总结 (自动添加注释)
- 无线通信wireless延伸的
- Vmware安装Kali6.2(rolling)后续之 更新Kali