我想为 SGI UV 系统(核心 = 512,共享内存 = 4TB)实现一个基于 GA 的特征选择程序,其运行方式如下:(特征选择是找到原始特征的最小子集的过程,这使得对于给定的数据,输出类之间的区分比使用原始特征集(或只是相同)更好,例如数据包括:{Atmospheric Pressure, Temperature, myShoeSize} 作为自变量,输出是降雨,可能是特征的结果选择将是 {Atm.Pressure, Temperature})。
GA 保留了一个父池,每个父池代表一个不同的特征子集。这些父母需要使用支持向量机或任何其他机器学习方法(神经网络等)进行评估,所以我希望每个父母都被发送到下一个可用的 cpu 核心,使用任何程序进行评估并将适合度发送回GA。因此,GA 将负责除每个父级的评估(适应度)之外的所有事情 - 相反,GA 会将父级发送到可用核心并等待适应度结果。这就是该方法的分布式特征所在(所以我不希望在不同的核心上运行各种 GA,只在一个核心上运行一个 GA 并在不同的核心中产生适应度评估器)。
为了利用我的硬件的分布式计算特性,我希望 GA 在异步模式下运行,而有两组父母,一组接受过健康评估,另一组正在等待。当有一个空闲核心时,GA 从未评估池中取出一个父级并将其发送到核心。与此同时,GA 从评估池中获取父母,对他们进行变异等。交叉他们并将其孩子发送到未评估池等等。
所以,我的想法是获取一个开源的 GA 库,并就其评估功能对其进行一些修改。如果库提供这种“异步”模式,那就太好了。除了所有这些之外,我还希望该库提供许多功能,例如蜂窝GA。无论结果如何,也将是开源的。
有没有人有什么建议?顺便说一句,有没有人知道任何关于这种“异步”模式的出版物的引用——或者你认为有什么缺点吗?