% Directional Crossover (DX) for real parameter optimization
% A. K. Das and D. K. Pratihar, "A directional crossover (DX) operator for real parameter
% optimization using genetic algorithm," Applied Intelligence, vol. 49, pp. 1841-1865, 2019.
function pop_crossover = DX( pop_selection, xmin, xmax,p_crossover_var,pc,p_crossover,mf,pd)
[N, d] = size(pop_selection); % Population size & Number of variables
pop_crossover = zeros( size(pop_selection) );
p = randperm(N);
for ind=1:2:N
p1 = p(ind);
p2 = p(ind+1);
parent1 = pop_selection(p1,:);
parent2 = pop_selection(p2,:);
child1 = zeros(1, d);
child2 = zeros(1, d);
if rand <= p_crossover % a pair is crossed with prob p_cross
for i=1:d
if rand<=p_crossover_var
y3=pc(1,i);
if (isequal( parent1(i),parent2(i) )==0)
y1 = parent1(i);
y2 = parent2(i);
yl = xmin(i);
yu = xmax(i);
rand_var = (rand);
val=1-((0.5)^((exp(abs(y2-y1)/(yu-yl)))));
y4=0.5*(y1+y2);
beta=rand_var/(mf^2);
if(y3>=y4)
if(rand<=pd)
c1=val*(y1+y2)+((mf^(rand_var))*(exp(1-beta)))*(1-val)*abs(y2-y1);
c2=(1-val)*(y1+y2)-((mf^(1-rand_var))*exp(-beta))*val*abs(y2-y1);
else
c1=val*(y1+y2)-((mf^(rand_var))*(exp(1-beta)))*(1-val)*abs(y2-y1);
c2=(1-val)*(y1+y2)+((mf^(1-rand_var))*exp(-beta))*val*abs(y2-y1);
end
else
if(rand<=pd)
c1=val*(y1+y2)-((mf^(rand_var))*(exp(1-beta)))*(1-val)*abs(y2-y1);
c2=(1-val)*(y1+y2)+((mf^(1-rand_var))*exp(-beta))*val*abs(y2-y1);
else
c1=val*(y1+y2)+((mf^(rand_var))*(exp(1-beta)))*(1-val)*abs(y2-y1);
c2=(1-val)*(y1+y2)-((mf^(1-rand_var))*exp(-beta))*val*abs(y2-y1);
end
end
if (c1 < yl), c1 = yl; end
if (c2 < yl), c2 = yl; end
if (c1 > yu), c1 = yu; end
if (c2 > yu), c2 = yu; end
if rand <= 0.5
child1(i) = c2;
child2(i) = c1;
else
child1(i) = c1;
child2(i) = c2;
end
else
y4=parent1(i);
if(y3~=y4)
yl = xmin(i);
yu = xmax(i);
rand_var=rand;
beta=rand_var/(mf^2);
val=1-((0.5)^((exp(abs(y4-y3)/(yu-yl)))));
if(rand<=pd)
c1=val*(y3+y4)+((mf^(rand_var))*(exp(1-beta)))*(1-val)*(y3-y4);
c2=(1-val)*(y3+y4)-((mf^(1-rand_var))*exp(-beta))*val*(y3-y4);
else
c1=val*(y3+y4)-((mf^(rand_var))*(exp(1-beta)))*(1-val)*(y3-y4);
c2=(1-val)*(y3+y4)+((mf^(1-rand_var))*exp(-beta))*val*(y3-y4);
end
if (c1 < yl), c1 = yl; end
if (c2 < yl), c2 = yl; end
if (c1 > yu), c1 = yu; end
if (c2 > yu), c2 = yu; end
if rand <= 0.5
child1(i) = c2;
child2(i) = c1;
else
child1(i) = c1;
child2(i) = c2;
end
else
child1(i) = parent1(i);
child2(i) = parent2(i);
end
end
else
child1(i) = parent1(i);
child2(i) = parent2(i);
end
end
else
child1 = parent1;
child2 = parent2;
end
pop_crossover(ind,:) = child1;
pop_crossover(ind+1,:) = child2;
end
没有合适的资源?快使用搜索试试~ 我知道了~
基于改进遗传算法求解非线性目标函数最小值问题含Matlab源码
共8个文件
m:7个
png:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 3 下载量 113 浏览量
2022-10-16
10:56:26
上传
评论 2
收藏 20KB ZIP 举报
温馨提示
1.版本:matlab2019a,不会运行可私信 2.领域:【智能优化算法-遗传算法】 3.内容:基于改进遗传算法求解非线性目标函数最小值问题含Matlab源码 4.适合人群:本科,硕士等教研学习使用
资源推荐
资源详情
资源评论
收起资源包目录
【智能优化算法-遗传算法】基于改进遗传算法求解非线性目标函数最小值问题含Matlab源码 上传.zip (8个子文件)
InitializePopulation.m 240B
DX.m 4KB
IRGA.m 4KB
1.png 19KB
recombine.m 623B
DM.m 882B
Sphere.m 70B
Tournament.m 611B
共 8 条
- 1
资源评论
- m0_750927022022-12-21感谢资源主的分享,很值得参考学习,资源价值较高,支持!
- a7368278492024-06-05发现一个宝藏资源,资源有很高的参考价值,赶紧学起来~
- 2301_768119552024-03-11资源内容详实,描述详尽,解决了我的问题,受益匪浅,学到了。
天天Matlab科研工作室
- 粉丝: 4w+
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功