我正在尝试在大型图表上查找似乎是复杂且耗时的多目标优化。
这是问题所在:我想找到一个n顶点(n恒定为100)和m边(m可以改变)的图形,其中一组度量已优化:
我最好的猜测是选择GA。我对遗传算法不是很熟悉,但是我可以花一些时间来学习基础知识。从到目前为止的内容来看,我需要这样:
如果是,那么完美。如果不:
现在,我通常使用Python进行小实验。DEAP(https://code.google.com/p/deap/)可以帮助我解决这个问题吗?如果是这样,我还有更多问题(尤其是在交叉和变异步骤上),但总之:这些步骤(在Python中,使用DEAP)是否足够容易在这里解释或总结?
如果需要,我可以尝试详细说明。干杯。
免责声明:我是DEAP首席开发人员之一。
您的个人可以用二进制字符串表示。每一位将指示两个顶点之间是否存在边。因此,您的个人将由n *(n-1)/ 2位组成,其中n是顶点数。要评估您的个体,您只需要根据个体基因型构建一个邻接矩阵。有关评估功能示例,请参见以下要点https://gist.github.com/cmd-ntrf/7816665。
您的适应度将由4个目标组成,根据您所说的关于最小化和最大化每个目标的内容,适应度类将这样创建:
creator.create("Fitness", base.Fitness, weights=(1.0, -1.0, 1.0, -1.0)
交叉和变异运算符可以与OneMax示例中的相同。http://deap.gel.ulaval.ca/doc/default/examples/ga_onemax_short.html
但是,由于要执行多目标操作,因此需要一个多目标选择运算符,即NSGA2或SPEA2。最后,该算法必须是mu + lambda。有关多目标选择和mu + lambda算法的用法,请参见GA背包示例。http://deap.gel.ulaval.ca/doc/default/examples/ga_knapsack.html
因此,从本质上讲,要启动并运行,您只需在使用建议的评估功能时将onemax示例的一部分与背包合并即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句