The first step of the GA is to construct the "gene pool" that will be used to create the initial parent polymers. We used the "Breaking of Retrosynthetically Interesting Chemical Substructures" (BRICS) algorithm as implemented in the RDKit Python package to get the chemical building blocks, or fragments, from our polymer library . A total of 79 unique fragments were extracted from 780 reference polymers. Figure shows six functional groups that appear most frequently in our library. To initiate the GA process, 100 parent polymers consisting of 4 building blocks in their monomer unit were created in the first generation. The fragments were chosen randomly from our gene pool of the 79 chemical fragments. Then, 15 families with the smallest Tanimoto similarity score , with 3 parents in each family, were chosen to perform crossover and mutation operations to alter their sequence of chemical building blocks, resulting in 12 offspring polymers in each family. During crossover, two parents generate an offspring by combining one random segment from a parent with another random segment from the other parent. The segmentation point of a parent polymer was chosen according to a Gaussian distribution with a mean at the center of the sequence and standard deviation of 0.3 blocks. We also applied mutation operations on 60% of the genes to increase the chemical diversity, where we randomly selected the building block in the sequence and replaced it with a new building block randomly chosen from the list of the 79 blocks. In each GA iteration, the top performing offspring polymers with the highest fitness evaluation were retained as parents to create the next generation offspring polymers. We also assigned 10% migration rate between different families, whereby the highest-scoring polymers that were not selected as a parent migrated to a different family. An essential component in this evolutionary process is the polymer property estimation, which traditionally has been evaluated by experiments that are very time-consuming and expensive; here, we use our ML models for on-the-fly polymer property estimation.