模拟二进制交叉matlab,SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子...

一起来学演化计算-SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子

觉得有用的话,欢迎一起讨论相互学习~Follow Me

SBX

25b8b974104b5013b57403857d66870a.png

DE

66f50b5fbc31b0cfebe91fe96c2e4377.png

SBX matlab版本实现

function object=crossover(object,p1,p2,cf)

object.rnvec=0.5*((1+cf).*p1.rnvec + (1-cf).*p2.rnvec);

% 截断范围

object.rnvec(object.rnvec>1)=1;

object.rnvec(object.rnvec<0)=0;

end

u = rand(1,D_multitask);

cf = zeros(1,D_multitask);

cf(u<=0.5)=(2*u(u<=0.5)).^(1/(mu+1));

cf(u>0.5)=(2*(1-u(u>0.5))).^(-1/(mu+1));

child(count) = crossover(child(count),population(p1),population(p2),cf);

child(count+1) = crossover(child(count+1),population(p2),population(p1),cf);

SBX java版本实现

/**

* This class allows to apply a SBX crossover operator using two parent

* solutions.

* 关于此代码和Deb论文中代码不一致可以查看http://www.it1352

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值