我想为SGI UV系统(核心= 512,共享内存= 4TB)实现基于GA的功能选择程序,其运行方式如下: (特征选择是找到原始特征的最小子集的过程,这使得输出类别之间的区分优于使用原始特征集合 - 或者对于给定数据而言恰好相同 - 例如数据包括:{大气压力,Temperature,myShoeSize}作为自变量和输出是降雨,特征选择的可能结果将是{Atm.Pressure,Temperature}。
GA保留一组父母,每个父母代表不同的特征子集。这些父母需要使用支持向量机或任何其他机器学习方法(神经网络等)进行评估,因此我希望将每个父母发送到下一个可用的cpu核心,使用任何程序进行评估并将健身发送回GA。因此,GA将负责除了每个父母的评估(适应性)之外的所有事项 - 而GA将将父母发送到可用核心并等待健身结果。这就是该方法的分布式特征所在(因此我不希望在不同的核心上运行各种GA,只需要在一个核心上运行一个GA并在不同的核心中生成健身评估器)。
为了利用我的硬件的分布式计算功能,我希望GA能够以异步模式运行,而有两组父母,那些经过评估的人和那些等待他们的人。 。当有一个免费核心时,GA从未评估的池中获取父级并将其发送到核心。 与此同时,GA从被评估的池中取出父母对它们进行变异等等。交叉它们并将其子节点发送到未评估的池中等等。
所以,我的想法是获得一个开源的GA库,并就其评估功能而言稍微修改一下。如果库提供这种“异步”模式,那么这将是好的。除了所有这些,我希望该库提供许多功能,例如cellularGA。 无论发生什么,也将是开源的。
有没有人有任何建议? btw有没有人知道有关这种“异步”模式的出版物的任何引用 - 或者你认为有什么不利之处?
答案 0 :(得分:1)
试试JGAP。它更多的是关于遗传编程,但有GA支持,它是opeensource,所以你可以修改它。并且它具有分布式计算支持。
答案 1 :(得分:0)
最近,有各种编程语言的开源项目允许这样做。我熟悉的是python的DEAP,但是还有其他Python软件包,以及R类似的软件包能够完成这类工作。