最近,我一直在改进传统遗传算法以解决多背包问题。因此,我的改进遗传算法比传统遗传算法更好。我测试过了。 (我公开使用OR-Library(http://people.brunel.ac.uk/~mastjjb/jeb/orlib/mknapinfo.html)用于测试GA。)是否有人知道其他改进的GA。我想与其他改进的遗传算法进行比较。其实我在网上搜索过。但是找不到比较好的算法。
答案 0 :(得分:1)
您可以将解决方案仅与具有完全相同的编码和适应度函数的问题进行比较(意味着它们是等效的问题)。如果问题不同,任何比较都会随着问题的变化而迅速变得无关紧要,因为无论你想要解决什么问题,适应度函数几乎都是临时性的。事实上,如果您使用遗传算法工具包,那么健身功能是您需要编码的唯一功能,因为其他一切通常都是开箱即用的。
另一方面,如果适应度函数相同,那么比较给定不同参数的结果是有意义的,例如不同的突变率,不同的交叉实现,甚至完全不同的进化范例,如共同进化,基因表达式,与标准GA相比,等等。
答案 1 :(得分:1)
应该有任何数量的体面GA方法可供您比较。但是,您应该首先明确确定您已经测试过的“传统”GA方法。
我可以推荐的一个好方法是NSGA-II algorithm,它是为多目标优化而开发的。
请参阅以下内容以了解其他想法:
答案 2 :(得分:0)
您是否正在尝试通过使用遗传算法来改进多背包解算器的最新技术?或者您是否正在尝试使用多背包作为测试平台来推进遗传算法技术? (你能说清楚吗?)
根据您的目标,您问题的答案完全不同。由于其他人已经解决了后一个问题,我将假设前者。
基本遗传算法几乎没有什么重大突破。通过使用遗传算法解决多背包的最佳改进将是改进你的变异和交叉算子的编码,这可以使得到的性能产生差异的数量级,并且可以对基本遗传算法进行任何调整。 。您可以做很多事情来使您的突变和交叉运算符适合多背包。
我首先会调查关于多背包的文献,看看人们在多背包上使用的不同类型的搜索空间和解决方案技术。在他们的最优或次优方法中(独立于遗传算法),他们使用什么类型的搜索算子?他们将什么编码为变量以及它们作为值编码的是什么?使用什么启发式评估函数?他们检查了什么限制?然后你会根据你的变异和交叉算子调整它们的编码,看看它们在遗传算法中的表现如何。
多背包问题的高效搜索空间编码或准确的启发式评估功能很可能转化为高效的突变和交叉运算符。由于多背包是一个研究文献大量研究得很好的问题,它应该是你的金矿。