## 3 Materials and Methods
### Crossover Operator DPPX
```
Start (Parent1-first parent, Parent2-second parent) Set I = 0 While Parent (Schedules (I)) = true or Child (Schedules (I)) = true then I = I + 1 Parent = Schedules (I) CParent1 = Schedule (Parent1) CParent2 = Schedule (Parent2) SParent = array of integer Used1 = array of integer Used2 = array of integer Repeat for J = 1 to TNO steps of 1 SParent(J) = Random number (1,2) Used1(I) = 1 Next J for J = 1 to the Total number of operations in steps of 1 If Parent (J) = 1 Then Counter = 1 While Used1 (Counter) = 0 do increase Counter by 1 IOp1 = 0 Parent (Schedule (J)) = CParent1 (Schedule (Counter))
```
for InOp = 1 to j in steps of 1  If Parent (Schedule (InOp)) = CParent1 (Schedule (Counter))  Then IOP1 = IOP1 +  Next InOp If the Check Machine (CParent1 (Schedule (Counter)), IOP1, CParent1 (Machine (Counter)) true  Then  SpecifyMachine (CParent1 (Schedule (Pos. )), IOP1) Otherwise Parent (Machine (J)) = CParent1 (Machine (Counter))  Parent (TimeEx (J)) = ReadTimeEx (CParent1 (Schedule (Counter)), IOP1, CParent1 (Machine (J))  Delete withdrawn gene from parent 1 Used1 (Counter)) = 0  Position = 0 Repeat Position = Position + 1 Until CParent2 (Schedule (Position)) = Parent (Schedule (J)) and Used2 (Position) \(<\) 0 Used2 (Position) = 0 If Parent (J) = 2 Then  Counter = 1  While Used2 (Counter) = 0 do increase Counter by 1  IOP2 = 0  Parent (Schedule (J)) = CParent2 (Schedule (Counter)) for InOp = 1 to j in steps of 1  If Parent (Schedule (InOp)) = CParent2 (Schedule (Counter))  Then IOP2 = IOP2 + 1  Next InOp If the Check Machine (CParent2(Schedule (Counter)), IOP2, CParent2 (Machine (Counter)) true  Then  SpecifyMachine (CParent2(Schedule (Counter)), IOP1)  Otherwise PARENT (Machine (J)) = CParent2 (Machine (Counter))  Parent (TimeEx (J)) = ReadTimeEx (CParent2 (Schedule (Counter)), IOP2, CParent2 (Machine (J))  Delete withdrawn gene from parent 2 Used2 (Counter)) = 0  Position = 0 Repeat Position = Position + 1 Until CParent1 (Schedule (Position)) = Parent (Schedule (J)) and Used1 (Position) \(<\) 0 Used1(Position) = 0 Next } Until ((the fitness of the new individual \(<\) from the fitness of the first parent) or (the fitness of the new individual \(<\) from the fitness of the second parent) and the probability is greater than 50%) and K\({}_{i}\) \(\leq\) K\({}_{a}\) End DPPX
```

**Algorithm 2**_Cont. ### Mutation Operator

A swap mutation operator, slightly modified due to the necessity to check the machine, is chosen in this model. The position of genes is randomly chosen. If these genes are the same, then the mutation does not make sense (the same individual was obtained) because the operation schedule must be preserved--operation O\({}_{34}\), which was in the 10 th position when moved to the third position, becomes O\({}_{31}\). On the other hand, if the genes are not the same or do not belong to the same work order, the mutation makes sense because then operation O\({}_{23}\) becomes O\({}_{33}\) and operation O\({}_{32}\) becomes O\({}_{22}\). It is necessary to check the machine for each gene in a new individual and assign a new one from the appropriate subset if necessary. Since the sequence of operations must be preserved within the work order, the genes to be included in the mutation are colored blue in Table 4, because although the same gene distribution remains 2-1-3 between the fourth and eighth positions of the mutated genes, they are not the same operations because the order in the work order has changed. ## 4 Presentation of the Independent Software Solution and Experimental Results

### Application of the Developed Solution

The application in which the previously presented solution is implemented is written in the object-oriented programming language Delphi 10.4. A database, i.e., a table with an example used to execute the application and display experimental results, was created in Microsoft Access 2016, and it consists of one specific table. The user can change the table, entering new work orders, operations, and times so that it is possible to test the displayed solutions for different data.