基于群体编码方式的遗传算法求解装箱问题

问题描述:
n个重量不同的物体放入k个有重量限制的箱子。
**
数学公式表达:
在这里插入图片描述
编码方式:
①基于箱子的编码表示。用基因的位置表示物品,基因的值表示该物品所放入的箱子;
②基于物品的编码表示。只对物品的排列进行编码,然后应用解码器得到其对应的解。

染色体结构:基因的位置代表箱子,基因的值代表所要放入的所有物品。

种群初始化类似贪心,装到装不下为止。
在这里插入图片描述
双亲双子交叉算子,
步骤:
步骤 1 从两个父代中各随机选择两个交叉位置,从而对 每个父代选定交叉部分。

步骤 2 将第 1 个父代交叉部分的内容插入到第 2 个父 代第 1 个交叉位置之前。由于交叉对染色体的部分群体进行 操作,这就意味着从第 1 个父代插入一些群体(箱子)到第 2 个 父代中。

步骤 3 从产生的后代中,去掉所有装有重复出现的物品 的箱子,并使得这些物品原先的从属关系让位于“新”插入的 箱子。如果有消失的箱子,则用优先配合启发式方法 (first-fit heuristic,FFH)将物品放入箱子中。
FFH 是指将每个物品放入 其能够放入的最小下标的已初始化箱子中,如果当前物品无 法放入任何已初始化的箱子,则放入一个新箱子。

步骤 4 改变两个父代的角色并重新应用第 2 步到第 3 步生成第 2 个子代。
在这里插入图片描述
本来我也没看懂这个交叉,但是这是双亲,应该就能理解了。

变异算子:
变异的基本策略为随机消除一个已经使用的箱子。消除的箱子中的物品用上述 FFH 启发式方法插入染色体中。

适应值函数
在这里插入图片描述
式中: N——染色体中使用的箱子数量, Fi——第 个箱子中所有物品的重量之和(箱子的填充程度),C是箱子的重量限制, k是常数( k>1)。常数k表示了对装得满的箱子的重视程度。 箱子填的越满,k越大。根据计算经验,k = 2 得到的结果较好。 N越小 (使用的箱子数量越少),Fi越大 (箱子填的越满), fbpp就越大。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值