## 5 Resolution Methods
### Genetic Algorithm
#### 5.1.5 Crossover Operator  
After the selection of chromosomes for reproduction, a crossover operator is applied to combine the features of the parent chromosomes in order to produce a new child. The individuals in the mating population are randomly paired to create child individuals. For two parents, the algorithm arbitrarily selects one of the available crossover operators and applies it with a certain probability to create two child individuals by exchanging information contained in the parent chromosomes. Different crossover operators are proposed and can be categorized as assignment or sequence crossover operators. The assignment crossover operators consist of generating offsprings by exchanging the assignment of operations to machines in the parent chromosomes. The role of sequence crossover operators is to produce two new offspring by exchanging partial information of the sequences of operations on machines in the parent chromosomes. The assignment and sequence crossover operators developed in the proposed genetic algorithm are: OMAC (operation to machine assignment crossover), JLOSC (job-level operation sequence crossover), and SLOSC (sub-lot-level operation sequence crossover). From a given pair of parent chromosomes, OMAC creates two child chromosomes, preserving the sequence of operations in each parent chromosome and modifying the machines' affectation. The creation of a child chromosome using an OMAC crossover operator is illustrated in Figure 4. We assume that in the first step, the operations located in genes 1, 3, 4, 7, 12, 13, 14, and 15 are selected from parent 1 to change their assignments. Then, the second step is to copy all the genetic information of parent 1 to the offspring, except for the assignment information of the selected operations. The final step is to obtain the assignment information of the selected operations from parent 2 and then copy them to the corresponding genes in the offspring to produce a new child chromosome. The same process is repeated to create child 2 by starting to select the operations from the chromosome parent 2. Three versions of OMAC were developed to correspond to different ways of selecting the operations for which the assignment will be modified:  
* OMAC 1: A set of operations of a sub-lot of jobs is chosen randomly. * OMAC 2: A set of operations of sub-lots assigned to the loaded machines is selected. * OMAC 3: A set of operations of sub-lots of jobs with larger completion times is chosen. The objective of the crossover operator OMAC 2 is to balance the workload between the machines, whereas the goal of the crossover operator OMAC 3 is to reduce the ending dates of jobs with longer completion times. The crossover sequencing operators JLOSC and SLOSC produce two new offspring by exchanging the sequencing information of parent chromosomes while keeping the assignment of machines in a gene unmodified. They are applied with given probabilities. The creation of the child chromosome by JLOSC and SLOSC with the preservation of the assignment information of parent chromosomes is illustrated in Figures 5 and 6. In the JLOSC crossover operator, the first step is to select a set of operations from parent 1. The next step is to copy all of the genetic information of the genes that are associated with the chosen operations to the offspring. The final step is to fill the empty genes in the offspring chromosome, while the machine assignment information of the empty genes is preserved from parent 1. This is done by copying the remaining operations from parent 2 to the empty genes, while the operations retain their appearance order from the second parent. The same procedure is repeated to create child 2 by starting to select the operations from parent 2. SLOSC is identical to JLOSC, with a difference in the second step of SLOSC: Only the genetic information of the chosen genes with the same sub-lot and job indexes is copied to the offspring.