2017华为比赛遗传算法总结

1、 问题分析

题目要求在给定的网络节点中选择一些网络节点布置为服务器节点,使整个网络流能够满足消费节点带宽需求。这种选址问题可以用遗传算法来确定服务器位置,用最大流最小费用网络流来确定是否满足消费节点要求。

2、遗传算法几个名词

染色体:1条染色体代表一组服务器节点,染色体上一个点代表1个服务器的位置。针对一条长度为6的染色体,1,3,5处值为1;2,4,6处值为0。代表一共有6个网络节点,其中1、3、5处布置了服务器节点。
种群: 种群是由多条染色体组成的。每次迭代是一个种群在迭代。多样的染色体代表覆盖解空间面积大。
交叉率:在迭代的初期,交叉率一般要比较高。高意味着能覆盖尽可能广的解空间。在迭代后期,交叉率要调低来稳定住最优解。
突变率:突变率一般不能高,1%~2%。突变率一个重要作用是跳出局部最优解。在迭代后期,突变率适当加大,可以使算法有一定可能跳出局部最优。但如果突变率太大,则会出现震荡不收敛的情况。

3、流程

迭代流程一般按 评估->选择->交叉->变异 。

1、评估:对种群中每条染色体,计算适应度值。保存最佳适应度值和对应的染色体。
2、选择:随机两两选择染色体,根据适应度值,保留好的染色体,淘汰差的染色体。
3、交叉:根据交叉率,任意选择两条染色体,可以局部交叉,也可以全部交叉。
4、变异:根据突变率。对每条染色体可以每个点随机突变,也可以只突变一个点。

4、细节

网上有很多遗传算法的论文。一般就是算法内部动态调参,加入移民策略保证种群中染色体的多样性,在一定迭代次数后重置参数重新计算等等。但是具体好不好用,也不好说。

5、总结

遗传算法的实质就是随机选择。要想调的好,很重要的一点就是尽可能的在全局选择。要保证全局选择就要尽可能的随机,尽可能覆盖解空间。参数调的好就是好算法。参数没调好就是瞎比跳。而且遗传算法的参数选择没有一个统一的方法,只能具体问题具体分析。辛辛苦苦调参数,开开心心跳大神。
靠谱的办法还是把一个问题转化成一个凸优化问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值