# Evolutionary Algorithms for Optimization Sequence of Cut in the Laser Cutting Path Problem
## 4 Overview of Application of ABRKGA to LCPP
### An Eulerian Heuristic to Generate Improved Individuals for LCPP
```
1:\(\mathcal{A}\), \(\mathcal{B}\), \(\mathcal{C}\), \(\mathcal{D}\),


```
Input :\(E=(uv_{1},uv_{2},...,uv_{n})\) Output :\(E^{\prime}=(uv^{\prime}_{1},uv^{\prime}_{2},...,uv^{\prime}_{n})\)
1\(E^{\prime}\leftarrow\emptyset\);
2\(listVertexDegreeCun\leftarrow\emptyset\);
3\(listVertexDegreeOdd\leftarrow\emptyset\);
4 for\(i=0\)to\(\texttt{length}(E)\)do
5\(edge\gets E[i]\);
6\(listVertexDegreeEven\gets listVertexDegreeEven\cup\) VertexDegreeEven\((edge[0])\cup\) VertexDegreeOdd\((edge[1])\);
7\(listVertexDegreeOdd\leftarrow listVertexDegreeOdd\cup\) VertexDegreeOdd\((edge[0])\cup\) VertexDegreeOdd\((edge[1])\);
8
9 end for
10 if\(\texttt{length}(listVertexDegreeOdd)=0\) & \(\texttt{length}(listVertexDegreeOdd)=2\)then
11\(E^{\prime}\gets E\);
12
13 else
14 while\(\texttt{length}(listVertexDegreeOdd)>0\)do
15 if\(\texttt{length}(listVertexDegreeOdd)=1\)then
16\(edge\gets listVertexDegreeOdd.remove(0)\);
17\(E^{\prime}\gets E^{\prime}\cup edge\);
18
19 else
20\(vertex\leftarrow\texttt{choiceRandomVertex}(listVertexDegreeOdd)\);
21\(displacement\leftarrow\texttt{generateDisplacement}(vertex)\);
22\(listVertexDegreeOdd.remove(vertex)\);
23\(E^{\prime}\gets E^{\prime}\cup displacement\);
24
25
26 end if
27
28 end for
29
30 end for
31 return\(E^{\prime}\);
```
**Algorithm 1**Eulerian Heuristic Algorithm
```
Input :\(E=(u_{1}v_{1},u_{2}v_{2},...,u_{n}v_{n})\) Output :\(I=(u_{1}v^{\prime}_{1},u_{2}v^{\prime}_{2},...,u_{n}v^{\prime}_{n})\)
1\(I\leftarrow\emptyset\);
2\(vertex=SelectRandomVertex(E)\);
3\(edge=SelectRandomEdgeFromVertex(vertex)\);
4 while\(\texttt{length}(E)>0\)do
5\(I\gets I\cup\{edge\}\);
6\(E\gets E-\{edge\}\);
7 if\(VertexHasEdgeIn(edge[1],E)\)then
8\(vertex=edge[1]\);
9\(edge=SelectRandomEdgeFromVertex(vertex)\);
10
11 else
12\(vertex=SelectRandomVertex(E)\);
13\(edge=\{edge[1],vertex\}\);
14
15 end if
16
17 end for
18 returnI;
```
**Algorithm 2**Eulerian Heuristic Individual Generation

### New Generation Process

During the core stage of the algorithm, the ABRKGA metaheuristic comprises six components in every successive iteration. The first step is to decode each individual, describedin Section 4.2. The upper limit of generations determines the termination condition for ABRKGA, computed using the parameter \(\gamma\). The population size in each generation is adjusted using the same parameter. Note that the value of \(\gamma\) is determined in the initialization phase, considering the allotted run time. The parameters undergo updates based on deterministic rules that consider the advancement of the evolutionary process. The evolutionary process defines the two self-adaptive parameters \(\rho_{e}\) and \(\beta\) as they are included within the chromosomes; see Figure 3. We explain the methodology of online parameter control during the search process, aiming to enhance population variance and prevent premature convergence, considering population size, number of generations, top/mutation partitions, and the crossover process. Defining the parameter \(p\) is complex for real-instance problems. Furthermore, varying sizes could be advantageous during different stages of the search. For instance, at the beginning of the process, a larger population size may be beneficial to explore the search space and discover promising regions. As the subsequent generations progress, reducing the population size could be advantageous for refining the solutions. According to [39], users of BRKGA typically select a population size ranging from 100 to 1000 individuals. It is worth noting that choosing smaller populations may lead to premature convergence towards local minima due to the limited information in the elite partition. Conversely, employing substantial populations increases computational time. In this context, the new generation process initiates with the maximum population size (\(p=p_{max}\)).