function [pop,objective]=decoding(pop,oldpop)
% 解码操作,先修复不可行解,再计算目标值。
global popsize L
x=zeros(popsize,1);
y=zeros(popsize,1);
for i=1:popsize
x(i)=bin2dec(pop(i,1:L/2));
y(i)=bin2dec(pop(i,L/2+1:end));
% x、y和小于100, 且均不为零
if x(i)+y(i)>99
switch 1
case x(i)>98&y(i)>98
pop(i,:)=oldpop(i,:);
x(i)=bin2dec(pop(i,1:L/2));
y(i)=bin2dec(pop(i,L/2+1:end));
case x(i)>98&y(i)<=98
x(i)=ceil(rand*(99-y(i)));
a=dec2bin([x(i),100]);
pop(i,1:L/2)=a(1,:);
case x(i)<=98&y(i)>98
y(i)=ceil(rand*(99-x(i)));
a=dec2bin([y(i),100]);
pop(i,L/2+1:end)=a(1,:);
otherwise
if rand<0.5
x(i)=ceil(rand*(99-y(i)));
a=dec2bin([x(i),100]);
pop(i,1:L/2)=a(1,:);
else
y(i)=ceil(rand*(99-x(i)));
a=dec2bin([y(i),100]);
pop(i,L/2+1:end)=a(1,:);
end
end
end
if x(i)*y(i)==0
switch 1
case x(i)==0&y(i)~=0&y(i)~=99
x(i)=ceil(rand*(99-y(i)));
a=dec2bin([x(i),100]);
pop(i,1:L/2)=a(1,:);
case y(i)==0&x(i)~=0&x(i)~=99
y(i)=ceil(rand*(99-x(i)));
a=dec2bin([y(i),100]);
pop(i,L/2+1:end)=a(1,:);
otherwise
pop(i,:)=oldpop(i,:);
x(i)=bin2dec(pop(i,1:L/2));
y(i)=bin2dec(pop(i,L/2+1:end));
end
end
end
objective=[300./x+500./y+300./(100-x-y),30*(300./x-3)+12*(500./y-5)+(300./(100-x-y)-3)];
没有合适的资源?快使用搜索试试~ 我知道了~
Matlab 多目标优化 遗传算法
共16个文件
m:8个
asv:7个
url:1个
4星 · 超过85%的资源 需积分: 46 324 下载量 53 浏览量
2018-08-27
16:02:31
上传
评论 22
收藏 11KB ZIP 举报
温馨提示
Matlab 多目标优化 遗传算法 源程序 很好的应用案例 基于MATLAB
资源推荐
资源详情
资源评论
收起资源包目录
Matlab 多目标优化 遗传算法 源程序 很好的应用案例 基于MATLAB.zip (16个子文件)
Matlab 多目标优化 遗传算法 源程序 很好的应用案例 基于MATLAB
【源码使用必读】.url 55B
多目标优化MATLAB程序
双目标
Pareto.m 918B
biobjective.asv 2KB
Pareto.asv 606B
biobjective.m 2KB
selection.m 1KB
inipop.asv 327B
decoding.asv 2KB
elimination.m 650B
inipop.m 390B
selection.asv 1KB
crossover.asv 219B
mutation.m 238B
mutation.asv 227B
decoding.m 2KB
crossover.m 315B
共 16 条
- 1
资源评论
- 橙红蓝粉2020-07-22已下载,感觉还不错
- sleiao2020-03-13只有一个约束,而且约束那里写的很垃圾,其他部分还可以。
qq_43075162
- 粉丝: 42
- 资源: 44
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功