{'fraction_non_alphanumeric': 0.018301610541727673, 'fraction_numerical': 0.0014641288433382138, 'mean_word_length': 5.242009132420091, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Non-revisiting Genetic Algorithm with Constant Memory

The continuous Non-revisiting Genetic Algorithm (cNrGA) uses the entire search history and parameter-less adaptive mutation to significantly enhance search performance. Experimental results show that it has better performance than Covariance Matrix Adaptation Evolution Strategy (CMA-ES), a state of the art evolutionary algorithm. Storing the search history is natural and costs little when fitness evaluations are expensive. However, if the number of evaluations required is substantial, some memory management is desirable. In this paper, we propose two pruning mechanisms to keep the memory used constant. They are Random pruning and Least Recently Used pruning. The idea is to prune a node when a memory threshold is reached and a new node is required to be inserted, thus keeping the overall memory used constant. Experimental results show that both strategies can maintain the performance of cNrGA, up to the limit when 90% of the nodes are not recorded. This suggests that cNrGA can be extended to use in situations when the number of fitness evaluations are much larger than before with no significant effect on statistical performance, which widens the applicability of cNrGA to include more practical problems that require larger number of fitness evaluations before converging to the global optimum.