# A New Meta-Heuristic Algorithm for Solving the Flexible Dynamic Job-Shop Problem with Parallel Machines

^{1}

^{2}

^{3}

^{4}

^{5}

^{6}

^{*}

## Abstract

**:**

## 1. Introduction

## 2. Related Work

_{max}).

## 3. Problem Definition and Mathematical Model

#### 3.1. Problem Definition

^{th}component enters the dynamic job-shop at a non-zero time (r

_{i}). The J

^{th}component consists of a chain of operations, $\{{o}_{i},1,{o}_{i},2,\dots ,{o}_{i},{n}_{i}\}$ which, without losing the generality, we can assume is the same as the order of processing tasks in JS. The order of movement between workstations is different for various tasks (the main feature of manufacturing tasks). The number of operations needed for task completion is smaller or equal to the number of processing steps. In each step of processing, M

_{k}, we need l

_{k}versions of parallel machines with various speeds. Each of them can process the assigned operations to that step. In a flexible workstation, this parameter (l

_{k}) is larger than 1. Each operation can be processed by at least one workstation, and because of the operational flexibility, there is at least one operation which can be processed on more than on a workstation.

_{i,j}on a machine with S

_{k,pm}= 1 in the k

^{th}step is equal to P

_{pm,j,k}, if this operation is processed on a machine with S

_{k,pm}> 1 the time may be reduced to ${P}_{i,j,k/}{S}_{k,pm}$. The aim of this paper is to reduce the maximum flow time of components $\left({F}_{max}\right)$.

- At a given time, each machine can process only one operation.
- JS is dynamic and tasks enter to JS at a non-zero time.
- At a given time, each task can be processed by only on one machine.
- All machines are available at time 0 and never break down.
- Interrupting the operation is not allowed and the processing time of each task is definite and known.
- Available depot is allowed and its capacity is infinite.
- Preparation time between operations is negligible. It’s either a part of the processing time or the transportation time and can be ignored.

#### 3.2. Sets, Parameters, and Variables Definition

- n: The number of entered tasks to the JS at the non-zero time
- n
_{i}: The number of operations of i^{th}component - r
_{i}: Entered the time of i^{th}component to the JS - m: The number of processing steps (workstations)
- k: Index of steps (workstations) k = 1, …, m
- M
_{k}: k^{th}step of processing - M
_{k,r}: r^{th}parallel machine of k^{th}step - O
_{i,j}: i^{th}operation of j^{th}task - St
_{i,j}: Step in which operation o_{i,j}will be processed - l
_{k}: The number of parallel machines in k^{th}step - l
_{max}: Maximum of l_{k} - pm: Index of parallel machines in workstations; pm=1, …, l
_{k} - S
_{k,r}: Speed of M_{k,r} - P
_{i,j}: Time units to process the operation o_{i,j}on a machine with unit speed - A: An optional big number
- F
_{max}: Maximum flow time - c
_{i,j}: Earliest finish time of o_{i,j} - $F{t}_{k,pm}^{(i,j)}$: Finish time of o
_{i,j}on machine M_{k,pm}

^{th}step are possible machines for o

_{i,j}, this variable is 1, otherwise, it is 0.

_{i,j}be processed on machine M

_{k,pm}this variable is 1, otherwise, it is 0.

_{p,q}be processed before o

_{i,j}on M

_{k,pm}this variable is 1, otherwise it is 0.

#### 3.3. Mathematical Models

#### 3.3.1. Objective Function

#### 3.3.2. Constraints of the Problem

#### 3.4. Model Description

- (a)
- Equations (5) and (6) ensure each operation of each task is assigned to one machine. In other words, Equation (5) ensures that each task must be processed only on one machine and be processed just one time. These equations are generated due to the flexibility of parallel machines in workstations. Beside these equations, Equation (7) explain that if in step K, O
_{i,j}isn’t assigned to each machine, its completion time on all machines must be 0. These equations are generated due to the flexibility considered in JS. - (b)
- On the other hand, because the objective function $\left({F}_{max}\right)$ is based on the completion (finish) time, Equation (8) computes the maximum finish time. Equation (9) is considered to study the dynamic property of the problem due to differences in the arrival time of jobs in the workshop.

#### 3.5. NP-Hard Problem

#### 3.6. Problem-Solving Approach

## 4. The Proposed Algorithm

_{c}), and probability of mutation (p

_{m}), must be predefined [22].

#### 4.1. Chromosome Representation (Problem Encoding)

#### 4.2. Initial Population

#### 4.3. Crossover Operation

_{c}. Position-based crossover can be applied to the machine allocation row (rows 1 and 2 of the chromosome) and RMX crossover can be applied to the sequence of operations (row 3 of the chromosome). In position-based crossover, some genes are selected randomly from the first parent (P

_{1}) and are exactly copied in the child chromosome (O

_{1}). To complete the remaining genes, we use the second parent (P

_{2}) and copy the non-repetitive genes to the same positions in O

_{1}.

_{1}and P

_{2}must be cut at a random position. This position is called the “mapping point”. Genes between these two mapping points are exchanged between P

_{1}and P

_{2}. Now, to create the third row of O

_{1}, we must permutate the genes of P

_{1}and P

_{2}in O

_{1}and O

_{2}until there is no inconsistency in terms of non-identical sequence numbers. These genes are obtained by one-to-one correspondence obtained from the exchange of genes between the two cut points.

#### 4.4. Mutation Operation

_{32}is mutated on the basis of the probability of mutation $P{m}_{1}$ and further, based on the probability of the mutation $P{m}_{2}$, the order of execution $Jo{b}_{3}$ is completely changed. The result of the jump operator is shown in Figure 3. The mutated sections are underlined.

#### 4.5. Selection Method

- (1)
- In general, some chromosomes in each generation have the highest degree of fitness. These chromosomes have the best genes and, due to having the best fitness, can produce better chromosomes for subsequent generations.
- (2)
- This method increases the likelihood of the best parents moving to the next generation.

#### 4.6. Fitness Function

_{max}), so a low fitness is assigned to solutions which have the highest F

_{max}. Here, the fitness function of the i

^{th}chromosome is $f(i)=1\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}{F}_{\mathrm{max}}(i)$ and F

_{max}(i) is the maximum flow time in chromosome i

^{th}.

#### 4.7. Strategy for Dealing with Restrictions

#### 4.8. Termination of Genetic Algorithm

## 5. Numerical Experiments

#### 5.1. Comparison Method

#### 5.2. Generate Random Problems

#### 5.3. Design of Experiments

^{++}5.02. Each algorithm (proposed GA and RKGA) runs with 720 sets of information.

#### 5.4. Setting Parameters

## 6. Computational Results

- According to the “the minimum value of the minimization of the maximum flow time of tasks” index, and for 10 runs of each of the 72 scenarios of different sizes (small, medium, large), the proposed GA has an average improvement of 0.57%, 1.02%, and 1.17%, and an overall improvement of 0.92% above RKGA.
- “Average objective function” for 10 runs on 72 datasets seems the best criterion for evaluating these algorithms. As seen in Table 3, according to this criterion for small, medium, and large size problems, the proposed algorithm has 1.17%, 1.35%, and 1.49% average improvement and an overall improvement of 1.34% higher than RKGA.
- According to the “improvement of objective function” index for small, medium, and large size problems, the proposed algorithm has 50, 46.7, and 52-fold improvement, respectively, and on average has a 49.6-foldimprovement over RKGA.
- According to “average objective function” index for small, medium, and large size problems, the proposed algorithm has an average improvement of 40, 42, and 49-fold from 72 runs, respectively, and, overall, has an average improvement of 49.6% above RKGA.
- According to “average time for solving the problem”, the proposed algorithm has no significant improvement for small problems, but for medium and large problems, it has an average increase of 14.5% and 33.8%, respectively, and has worse performance than RKGA.

_{max}comparison for the two algorithms.

## 7. Conclusions

_{max}as an objective function is investigated, with the aim of the efficient utilization of machines by reducing the time that recourses are used for, thus increasing the rate and speed of the manufacturing process, which is the most important goal in the manufacturing supply chain. We utilize the capability of a GA to solve the time and scheduling problems. Due to the dynamicity of manufacturing, dynamic two-dimensional chromosomes are provided. Chromosomes and genetic operators are designed in such a way that there is minimal dealing with constraints and unjustified chromosomes. In the proposed GA, the initial population is generated randomly and doesn’t have any information about the problem. This maintains the diversity of the population and reduces the possibility of premature convergence. Also, the influence of strong chromosomes is reduced and premature convergence to the local optimum is avoided by preventing the entrance of duplicate chromosomes into the next generation. After setting our proposed genetic parameters, its performance was compared to the RKGA method and it was observed that our genetic algorithm requires more time to solve the problem than the RKGA method. However, this time allows improvements in the minimum and average value of the objective function. Computational results show improvements of 1.17%, 1.35% and 1.49, and 1.34% on average, for small, medium, and large problems. Thus, according to the numerical experiments, the efficiency of the proposed algorithm is confirmed as greater than for RKGA. Increasing the efficiency of proposed algorithm and reducing the execution time are considered as future goals. On the other hand, in actual manufacturing issues, decision makers are often faced with multiple objectives. Selecting the right combination of objectives and investigating the problem in a multi-objective case and in a stochastic environment is essential. As future work, our algorithm could be integrated with other methods. For example, using a local search algorithm can improve the performance of the GA.

## Author Contributions

## Acknowledgments

## Conflicts of Interest

## References

- Baker, K.R. Introduction to Sequencing and Scheduling; John Wiley & Sons: New York, NY, USA, 1974. [Google Scholar]
- Hosseinabadi, A.R.; Siar, H.; Shamshirband, S.; Shojafar, M.; Nasir, M.H.N.M. Using the gravitational emulation local search algorithm to solve the multi-objective flexible dynamic job shop scheduling problem in Small and Medium Enterprises. Ann. Oper. Res.
**2015**, 229, 451–474. [Google Scholar] [CrossRef] - Tay, J.C.; Ho, N.B. Evolving dispatching rules using genetic programming for solving multi-objective flexible job-shop problems. Comput. Ind. Eng.
**2007**, 54, 453–473. [Google Scholar] [CrossRef] - Shamshirband, S.; Shojafar, M.; Hosseinabadi, A.R.; Kardgar, M.; Nasir, M.H.; Ahmad, R. OSGA: Genetic-based open-shop scheduling with consideration of machine maintenance in small and medium enterprises. Ann. Oper. Res.
**2015**, 229, 743–758. [Google Scholar] [CrossRef] - Farahabadi, A.B.; Hosseinabadi, A.R. Present a New Hybrid Algorithm Scheduling Flexible Manufacturing System Consideration Cost Maintenance. Int. J. Sci. Eng. Res.
**2013**, 4, 1870–1875. [Google Scholar] - Hosseinabadi, A.R.; Farahabadi, A.B.; Rostami, M.S.; Lateran, A.F. Presentation of a New and Beneficial Method Through Problem Solving Timing of Open Shop by Random Algorithm Gravitational Emulation Local Search. Int. J. Comput. Sci.
**2013**, 10, 745–752. [Google Scholar] - Shojafar, M.; Kardgar, M.; Hosseinabadi, A.R.; Shamshirband, S.; Abraham, A. TETS: A Genetic-based Scheduler in Cloud Computing to Decrease Energy and Makespan. In Proceedings of the 15th International Conference on Hybrid Intelligent Systems (HIS 2015), Seoul, Korea, 16–18 November 2015; Chapter Advances in Intelligent Systems and Computing. Volume 420, pp. 103–115. [Google Scholar]
- Gena, M.; Zhang, W.; Line, L.; Yun, Y.S. Recent advances in hybrid evolutionary algorithms for multiobjective manufacturing scheduling. Comput. Ind. Eng.
**2017**, 112, 616–633. [Google Scholar] [CrossRef] - Wang, J.; Ju, C.; Gao, Y.; Sangaiah, A.K.; Kim, G. A PSO based Energy Efficient Coverage Control Algorithm for Wireless Sensor Networks. Comput. Mater. Contin.
**2018**, 56, 433–446. [Google Scholar] - Tirkolaee, E.B.; Hosseinabadi, A.R.; Soltani, M.; Sangaiah, A.K.; Wang, J. A Hybrid Genetic Algorithm for Multi-trip Green Capacitated Arc Routing Problem in the Scope of Urban Services. Sustainability
**2018**, 10, 1366. [Google Scholar] [CrossRef] - Chen, J.C.; Wub, C.C.; Chen, C.W.; Chen, K.H. Flexible job shop scheduling with parallel machines using Genetic Algorithm and Grouping Genetic Algorithm. Expert Syst. Appl.
**2012**, 39, 10016–10021. [Google Scholar] [CrossRef] - Dalfard, V.M.; Mohammadib, G. Two meta-heuristic algorithms for solving multi-objective flexible job-shop scheduling with parallel machine and maintenance constraints. Comput. Math. Appl.
**2012**, 64, 2111–2117. [Google Scholar] [CrossRef] [Green Version] - Vokurka, R.J.; O’Leary-Kelly, S.W. A review of empirical research on manufacturing exibility. J. Oper. Manag.
**2000**, 18, 85–501. [Google Scholar] [CrossRef] - Naderi, B.; Azab, A. Modeling and heuristics for scheduling of distributed job shops. Expert Syst. Appl.
**2014**, 41, 7754–7763. [Google Scholar] [CrossRef] - Shahrabi, J.; Adibi, M.A.; Mahootchi, M. A reinforcement learning approach to parameter estimation in dynamic job shop scheduling. Comput. Ind. Eng.
**2017**, 110, 75–82. [Google Scholar] [CrossRef] - Yazdani, M.; Aleti, A.; Khalili, S.M.; Jolai, F. Optimizing the sum of maximum earliness and tardiness of the job shop scheduling problem. Comput. Ind. Eng.
**2017**, 107, 12–24. [Google Scholar] [CrossRef] - Riane, F.; Artiba, A.; Elmaghraby, S.E. A hybrid three-stage flowshop problem: Efficient heuristics to minimize makespan. Eur. J. Oper. Res.
**1998**, 109, 321–329. [Google Scholar] [CrossRef] - Nowicki, E.; Smutniciki, C. The flow shop with parallel machines: A taboo search approach. Eur. J. Oper. Res.
**1998**, 106, 226–253. [Google Scholar] [CrossRef] - Brandimarte, P. Theory and methodology, exploiting process plan flexibility in production scheduling: A multi-objective approach. Eur. J. Oper. Res.
**1999**, 114, 59–71. [Google Scholar] [CrossRef] - Ghedjati, F. Genetic algorithms for the job-shop scheduling problem with unrelated parallel constraints: Heuristic mixing method machines and precedence. Comput. Ind. Eng.
**1999**, 37, 39–42. [Google Scholar] [CrossRef] - Jansen, K. Approximation algorithms for flexible job shop problems. Int. J. Found. Comput. Sci.
**2001**, 12, 521–534. [Google Scholar] - Kacem, I.; Hammadi, S.; Borne, P. Approach by localization and multi objective evolutionary optimization for flexible job-shop scheduling problems. IEEE Trans. Syst. Man Cybern.
**2002**, 32, 1–13. [Google Scholar] [CrossRef] - Lee, Y.H.; Jeong, C.S.; Moon, C. Advanced planning and scheduling with outsourcing in manufacturing supply chain. Comput. Ind. Eng.
**2002**, 43, 351–374. [Google Scholar] [CrossRef] - Kim, Y.K.; Park, K.; Ko, J. A symbiotic evolutionary algorithm for the integration of process planning and job shop scheduling. Comput. Oper. Res.
**2004**, 30, 1151–1171. [Google Scholar] [CrossRef] - Allet, S. Handling flexibility in a “generalised job shop” with a fuzzy approach. Eur. J. Oper. Res.
**2003**, 147, 312–333. [Google Scholar] [CrossRef] - Scrich, C.A.; Armentano, V.A.; Laguna, M. Tardiness minimization in a flexible job shop: A taboo search approach. J. Intell. Manuf.
**2004**, 15, 103–115. [Google Scholar] [CrossRef] - Gen, M.; Cheng, R. Genetic Algorithm in Search, Optimization and Machine Learning; Addition-Wesley: Reading, MA, USA, 2004; ISBN 0201157675. [Google Scholar]
- Low, C. Simulated annealing heuristic for flow shop scheduling problem with unrelated parallel machines. Comput. Oper. Res.
**2005**, 32, 2013–2025. [Google Scholar] [CrossRef] - Xia, W.; Wu, Z. An effective hybrid optimization approach for multi-objective flexible job-shop scheduling problems. Comput. Ind. Eng.
**2005**, 48, 409–425. [Google Scholar] [CrossRef] - Torabi, S.A.; Karimi, B.; Fatemi-Ghomi, S.M.T. The common cycle economic lot scheduling in flexible job shops: The finite horizon case. Int. J. Prod. Econ.
**2005**, 97, 52–65. [Google Scholar] [CrossRef] - Wang, J.X.X. Complexity and algorithms for two-stage flexible flow shop scheduling with availability constraints. Comput. Math. Appl.
**2005**, 50, 1629–1638. [Google Scholar] - Tay, J.C.; Wibowo, D. An effective chromosome representation for evolving flexible job-shop scheduling. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO), Seattle, WA, USA, 26–30 June 2004; pp. 210–221. [Google Scholar]
- Kyparisis, G.J.; Koulamas, C. Flexible flow shop scheduling with uniform parallel machines. Eur. J. Oper. Res.
**2004**, 168, 985–997. [Google Scholar] [CrossRef] - Ho, N.B.; Tay, J.C.; Lai, E. An effective architecture for learning and evolving flexible job shap schedules. Eur. J. Oper. Res.
**2007**, 179, 316–333. [Google Scholar] [CrossRef] - Gao, J.; Gen, M.; Sun, L. Scheduling jobs and maintenances in flexible job shop with a hybrid genetic algorithm. J. Intell. Manuf.
**2007**, 17, 493–507. [Google Scholar] [CrossRef] - Park, B.J.; Choi, H.R.; Kim, H.S. A hybrid genetic algorithm for the job shop scheduling problems. Comput. Ind. Eng.
**2003**, 45, 597–613. [Google Scholar] [CrossRef] - Kurz, M.E.; Askin, R.G. Scheduling flexible flowlines with sequence-dependent setup times. Eur. J. Oper. Res.
**2004**, 159, 66–82. [Google Scholar] [CrossRef] - Kurz, M.E.; Askin, R.G. Comparing scheduling rules for flexible flow-lines. Int. J. Prod. Econ.
**2003**, 85, 371–388. [Google Scholar] [CrossRef] - Abbasian, M.; Nahavandi, N. Minimization Flow Time in a flexible Dynamic Job Shop with Parallel Machines. Master’s Thesis, Engineering Department of Industrial Engineering, Tarbiat Modares University, Tehran, Iran, 2008. [Google Scholar]

Factors | Factors Levels | |||
---|---|---|---|---|

Number of tasks | 100-30 | 6 | ||

Distribution machines | Constant | Variable | Constant | Variable |

Number of machines | 10-2 | U(1, 4)–U(1, 10) | 6-2 | U(1, 4)–U(1, 6) |

Number of steps | 8-4-2 | |||

Processing time | U(50, 70)–U (20, 100) | |||

Speed processing machines | U (1, 3) |

${\mathit{p}}_{\mathit{m}}$ | ${\mathit{p}}_{\mathit{c}}$ | ${\mathit{\mu}}^{\prime}$ | Number of Generations | Size of Initial Population | Parameter |
---|---|---|---|---|---|

0.02 | 0.7 | 20% | 125 | 100 | Value |

Magnitude of the Problem | Small | Medium | Large | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|

Number of Jobs | 6 | 30 | 100 | ||||||||||

Number of Steps | 2 | 4 | 8 | Average | 2 | 4 | 8 | Average | 2 | 4 | 8 | Average | |

RKGA [30,31] | Lowest F_{max} | 40/36 | 73/93 | 172/6 | 95/62 | 91/85 | 122/6 | 204 | 139/47 | 283/9 | 307/1 | 362/7 | 317/89 |

Average F_{max} | 121/09 | 184/65 | 302/83 | 202/86 | 527/43 | 646/83 | 845/23 | 673/16 | 1743/80 | 1905/88 | 2612/90 | 2087/53 | |

Proposed GA | Lowest F_{max} | 39/74 | 74/95 | 169/86 | 94/85 | 93/35 | 118/01 | 202/02 | 137/79 | 278/12 | 307/98 | 365/29 | 314/13 |

Average F_{max} | 119/66 | 184/71 | 295/67 | 200/01 | 527/69 | 635/21 | 825/87 | 662/92 | 1731/32 | 1870/89 | 2562/59 | 2054/93 | |

Improvement (%) | Lowest F_{max} | 1%/54 | −1/38% | 1%/56 | 0%/57 | %−1/63 | 3%/73 | 0%/96 | 1%/02 | 2%/02 | %−0/28 | 1%/76 | 1%/17 |

Average F_{max} | 1%/17 | −0/03% | 2%/37 | 1%/17 | %−0/05 | 1%/80 | 2/29 | 1%/35 | 0%/72 | 1%/84 | 1%/93 | 1%/49 | |

Improvement Count | * Lowest F_{max} | 58 | 29 | 63 | 50/0 | 23 | 66 | 51 | 46/7 | 62 | 41 | 53 | 52/0 |

** AverageF_{max} | 12 | 7 | 18 | 13/3 | 10 | 19 | 13 | 14/0 | 18 | 15 | 16 | 16/3 | |

Solving Time Improvement (s) | −0/4 | −0/75 | −3/1714 | −1/4 | −7/6567 | −7/6774 | −33/258 | −14/5 | −0/65605 | −11/0858 | −89/6802 | −33/8 |

*****: The lowest F

_{max}in 70 runs of scenarios based on the number of stages. The values are not identical with RKGA.

******: The lowest value of average on F

_{max}in 21 runs of scenarios based on the number of stages. Their values are not identical with RKGA.

**Note:**Negative numbers show the superiority of RKGA method against the proposed GA algorithm.

RKGA | SmallDimension | Medium Dimension | Large Dimension | Sum |

The total number of smaller improvements of F_{max} | 150 | 140 | 156 | 446 |

Total percent of the improvement of F_{max} | 20%/83 | 19%/44 | 21%/67 | 20%/65 |

GA (proposed) | Small Size | Medium Size | Large Size | Addition |

Total numbers of improvement on F_{max} | 40 | 42 | 49 | 131 |

Total percent of the improvement on F_{max} | 55%/56 | 58%/33 | 68%/06 | 60%/65 |

Size of Problems | Small | Medium | Large | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|

Number of Tasks | 6 | 30 | 100 | |||||||||

Number of Stages | 2 | 4 | 8 | Average | 2 | 4 | 8 | Average | 2 | 4 | 8 | Average |

RKGA method | 025/0 | 028/0 | 035/0 | 029/0 | 201/0 | 248/0 | 233/0 | 227/0 | 602/1 | 551/1 | 745/1 | 633/1 |

Proposed genetic algorithm | 035/0 | 049/0 | 146/0 | 077/0 | 735/0 | 152/2 | 982/7 | 623/3 | 653/2 | 745/18 | 237/158 | 88/59 |

© 2019 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).

## Share and Cite

**MDPI and ACS Style**

Sangaiah, A.K.; Suraki, M.Y.; Sadeghilalimi, M.; Bozorgi, S.M.; Hosseinabadi, A.A.R.; Wang, J.
A New Meta-Heuristic Algorithm for Solving the Flexible Dynamic Job-Shop Problem with Parallel Machines. *Symmetry* **2019**, *11*, 165.
https://doi.org/10.3390/sym11020165

**AMA Style**

Sangaiah AK, Suraki MY, Sadeghilalimi M, Bozorgi SM, Hosseinabadi AAR, Wang J.
A New Meta-Heuristic Algorithm for Solving the Flexible Dynamic Job-Shop Problem with Parallel Machines. *Symmetry*. 2019; 11(2):165.
https://doi.org/10.3390/sym11020165

**Chicago/Turabian Style**

Sangaiah, Arun Kumar, Mohsen Yaghoubi Suraki, Mehdi Sadeghilalimi, Seyed Mostafa Bozorgi, Ali Asghar Rahmani Hosseinabadi, and Jin Wang.
2019. "A New Meta-Heuristic Algorithm for Solving the Flexible Dynamic Job-Shop Problem with Parallel Machines" *Symmetry* 11, no. 2: 165.
https://doi.org/10.3390/sym11020165