遗传算法代码_遗传算法代码优化加速技巧

这篇文章是我在做 scikit-opt 的时候,对一些常用算子进行深入思考,得到的优化经验。会持续更新。(知乎的排版不尽如人意,如果感觉有违和的地方,去这里看 https://scikit-opt.github.io/scikit-opt/#/zh/speed_up)(再注明:下面把一次矢量化运算的复杂度记为O(1),虽然这样相当不准确,但方便说明问题)0/1 基因的mutation做一个mask...
摘要由CSDN通过智能技术生成

这篇文章是我在做 scikit-opt 的时候,对一些常用算子进行深入思考,得到的优化经验。会持续更新。

(知乎的排版不尽如人意,如果感觉有违和的地方,去这里看 https://scikit-opt.github.io/scikit-opt/#/zh/speed_up)

(再注明:下面把一次矢量化运算的复杂度记为O(1),虽然这样相当不准确,但方便说明问题)

0/1 基因的mutation

做一个mask,是一个与 Chrom 大小一致的0/1矩阵,如果值为1,那么对应位置进行变异(0变1或1变0)
自然想到用整除2的方式进行

def mutation(self):
    # mutation of 0/1 type chromosome
    mask = (np.random.rand(self.size_pop, self.len_chrom) < self.prob_mut) * 1
    self.Chrom = (mask + self.Chrom) % 2
    return self.Chrom

如此就实现了对整个种群全基因的矢量化运算。用pycharm的profile功能试了一下,效果良好

再次改进。我还嫌求余数这一步速度慢,画一个真值表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值