C++遗传算法解决背包问题
题目:
- 背包容量:165
- 每个物品总量:23,31,29,44,53,38,63,85,89,82
- 每个物品价值:92,57,49,6,60,43,67,84,87,72
解决思路:
- 利用遗传算法,基因数组的长度就是物体数目。其0,1表示放与不放。
- 每个个体都有自己的基因数组,实际上每个个体就是一个解决方案,基因数组的序列就分别对应第几个物体放与不放。
- 杂交采用0,2,4。。与1,3,5交换基因序列,用随机数判断是否杂交。
- 变异利用随机数在某基因点位让其取反。
实现效果:
若同时求解多个背包,只需在代码基础上稍作修改。可以从个体(内含基因数组)初始化下手,也可以简单的写多个个体类。
具体实现细节可见代码及其注释
代码下载链接
https://download.csdn.net/download/weixin_41747528/11036971