Article Preview
TopIntroduction
Genetic programming (GP) was one of the manifestations of the development of automatic programming; GP developed because the genetic algorithm provided it with theoretical support. Koza (1992) systematically introduced GP. One of the highlights of GP is that the correlation between the data and the structural nature of the generated program can be expressed in a tree structure. Since GP was launched, people have been committed to discovering its potential to address practical problems in life. Many variants of GP have also been identified. One of these is linearly represented genotypes, such as gene expression programming (GEP, Ferreira, 2001), Cartesian GP (Miller, 2011), multi-expression programming (Oltean & Dumitrescu, 2002), grammatical evolution (O'Neill & Ryan, 2001), linear GP (Brameier & Banzhaf, 2007), and Hoare logic-based GP (He et al., 2011). Since linear genotypes are mapped into phenotypes through different decoding methods, these approaches enrich the structural nature of the data.
As a variant of GP, GEP is favored by researchers for its ability to address complex structural problems using simple linear coding techniques; it has been improved in many respects in the past two decades. For example, through exploiting such methods as improving individual structure (Sun et al., 2024), using genetic recombination (Li et al., 2016), exploring search space (Ari & Alagoz, 2023; Sen Fong & Motani, 2023), and applying multi-threading technology (Ni et al., 2012), we can see improvements in both evolutionary performance and computational performance. Generally speaking, these efforts either focus on dealing with individual structure or the optimization of the individual evolution mode, but they pay insufficient attention to the advantages of genotypic representation itself, such as by dividing individual structure into two parts—the head and tail parts—that meet specific constraints. Because the head length of genes belongs to a parameter configuration that is established before the initialization of the population, each gene will have a fixed length head and tail—and several genes, meanwhile, constitute the individuals we are interested in. This is how standardization and simplicity are reflected in the canonical GEP.
In order to improve the expressiveness of GEP while inheriting the earlier conciseness of the representation, we can make an extension to its genotypic representation in light of the GP's code reuse idea. This extended technology, also called automatically defined function (ADF), was first proposed by Koza (1992, 1994) and was later studied in GEP (Ferreira, 2006; Peng et al., 2005; Peng et al., 2008; Zhong et al., 2016).
Without changing the individual structure of GEP, the ability of fixed-length individuals to be expressed mathematically is limited. To obtain a more diversified expression effect, making the gene fragment potentially play a role as a functional block is the central idea of this paper. Therefore, in this paper, the following improvements are made to the standard GEP method.
- 1.
First, we maintain the conciseness of the linear coding method and the intuitiveness of the head-tail gene structure that standard GEP possesses.
- 2.
Second, we use the code reuse strategy by making calls to the functional blocks (gene fragments) to enhance both the expression ability and the evolutionary efficiency of individuals.
- 3.
Third, we apply the semantic reuse strategy to reduce the repeated evaluation of some gene fragments and finally to improve the evaluation performance of the algorithm by preserving and reusing the decoding result of existing gene fragments. Therefore, in this article we propose GEP with structured reusability (SR-GEP).