我正在编写一种遗传算法来解决长方体对象的某些3D打包问题。
这个想法是,给了长方体项目列表,包括其尺寸和值以及容器/箱的大小,目的是找到最有益的包装,使容器的价值最高。
有点像3D背包问题。
由于找到项目的最佳子集及其在容器中的位置是NP难题,因此我正在编写一种遗传算法来尝试解决该问题。 我在遗传算法中将生物的染色体设计为N个基因的序列(N =项目数),这些基因代表每个项目及其状态(获取或未获取)以及垃圾箱内的位置。
当将适应度函数设置为等于代表基因所取项目的总价值时,该算法将在几代人的基础上有所改进,但仅会达到我已知最大解的一半。 我认为部分原因是因为该算法无法很好地压缩项目。
例如,以下是我的算法实现的打包类型的图片:https://i.ibb.co/TmBL88Q/Capture.png
仅填充垃圾箱内部空间的36%。
底线: 有什么方法可以鼓励遗传算法通过适应度函数以更压缩的方式包装物品?现在,它的唯一定义是关心值,但我认为尝试以更压缩的方式打包物品将有助于它放入更多物品。