In many applications of evolutionary algorithms the computational cost of applying operators and storing populations is comparable to the cost of fitness evaluation. Furthermore, by knowing what exactly has changed in an individual by an operator, it is possible to recompute fitness value much more efficiently than from scratch. The associated time and memory improvements have been available for simple evolutionary algorithms, few specific genetic algorithms and in the context of gray-box optimization, but not for all algorithms, and the main reason is that it is difficult to achieve in algorithms using large arbitrarily structured populations. This paper makes a first step towards improving this situation. We show that storing the population as a minimum spanning tree, where vertices correspond to individuals but only contain meta-information about them, and edges store structural differences, or patches, between the individuals, is a viable alternative to the straightforward implementation. Our experiments suggest that significant, even asymptotic, improvements -- including execution of crossover operators! -- can be achieved in terms of both memory usage and computational costs.
翻译:在许多进化算法的应用中,执行算子和存储种群的运算成本与适应度评估的成本相当。此外,通过了解算子对个体具体改变了什么,可以远比从头计算更高效地重新计算适应度值。相关的时间与内存改进虽已应用于简单进化算法、少数特定遗传算法以及灰箱优化场景,但尚未覆盖所有算法,其主要原因是难以在包含大型任意结构种群的算法中实现。本文迈出了改善该状况的第一步。我们证明,将种群存储为最小生成树(其中顶点对应个体但仅包含其元信息,边存储个体间的结构差异或补丁)是传统实现方法的可行替代方案。我们的实验表明,在内存占用和计算成本方面均可实现显著(甚至渐近式)的改进——包括交叉算子的执行!