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进行双目标优化
共15个文件
m:8个
asv:7个
5星 · 超过95%的资源 需积分: 42 241 下载量 5 浏览量
2011-03-22
11:16:49
上传
评论 27
收藏 7KB RAR 举报
温馨提示
这个是一个关于双目标优化的内容.大家可以看一下!
资源推荐
资源详情
资源评论
收起资源包目录
双目标.rar (15个子文件)
双目标
mutation.m 238B
decoding.m 2KB
biobjective.m 2KB
selection.asv 1KB
elimination.m 650B
selection.m 1KB
inipop.asv 327B
Pareto.m 918B
crossover.asv 219B
inipop.m 390B
crossover.m 315B
Pareto.asv 606B
mutation.asv 227B
biobjective.asv 2KB
decoding.asv 2KB
共 15 条
- 1
资源评论
- zhangxinchenggong2012-10-29程序可以运行,好棒!
- wangzeyu04252012-10-19关于双目标优化解释的很清楚,很好用,谢谢楼主
- 天使的翅膀mfx2014-03-19不错,挺有用的,正在修改学习中。。。
- luzheqi11242012-12-08很好的程序 很需要 谢谢楼主
newlaoru1216
- 粉丝: 7
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功