## 6 Discussion  
In optimization, exact methods backed up by solvers like CP solvers, MIP solvers, SAT solvers, and others have several advantages over approximate methods like heuristics, meta-heuristics, and hyper-heuristics. They provide global optimality with theoretical guarantees, they compute lower bounds, and, during execution, they provide information about the gap between the current solution and the current lower bound. Nevertheless, they have disadvantages like the difficulty in modeling complex real-world situations, the long execution times, and, of course, the combinatorial explosion problem that refers to the rapid growth in the number of possible solutions when dealing with combinatorial problems (i.e., problems of making selections, arrangements, or choices from a finite set of discrete elements or objects, often subject to certain constraints or conditions). The DPFSP is such a problem that the number of decision variables and constraints quickly become astronomically large. In the experiments, the execution time allowed for each problem instance was only 300 s. Experiments using 300 s of execution time for the problem instances with 50 jobs returned mediocre results. It is expected that better results will be found, more solutions will be verified as optimal, and perhaps new optimal solutions will be identified once more execution time is given. This might be advantageous for problem instances with 50 jobs, where a few hours of execution time for each problem instance should reveal good results, \begin{table}
\begin{tabular}{c c c c c c c} \hline \hline
**Factories** & **Optimal Solutions Reached within 300 s** & **Mean** & **Stdev** & **Median** & **Min** & **Max** \\ \hline
2 & 13/30 & 8.95 & 8.59 & 4.62 & 1.41 & 31.27 \\
3 & 30/30 & 3.56 & 2.65 & 2.52 & 1.44 & 10.76 \\
4 & 30/30 & 4.36 & 3.45 & 3.27 & 2.14 & 17.22 \\
5 & 30/30 & 4.07 & 1.76 & 3.53 & 1.53 & 10.12 \\
6 & 30/30 & 5.24 & 2.75 & 4.61 & 3.22 & 18.34 \\
7 & 30/30 & 5.22 & 2.63 & 4.80 & 3.28 & 18.10 \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Statistics about how many times reaching an optimal solution is faster than proving it is indeed optimal. Figure 9: Time needed by the exact solver to prove optimality for the DPFSP model vs. the DPSP model, for 133 problem instances where optimality is reached by both models within 300 s.  
as some preliminary experiments have indicated. Nevertheless, this does not scale for problem instances with even more jobs (e.g., 100 jobs or more). The CP approach can be used in DPFSPs of very large sizes, provided that a solution is built and that the CP solver \"sees\" only a manageable size of the otherwise intractable via the CP model's full problem. In such scenarios, the selection of jobs, factories, and machines that might be free to be moved by the CP solver can be decided randomly or based on a pattern (e.g., allow for task rearrangement in a single factory, allow for the move of a small number of tasks of relatively big sizes together with tasks of smaller sizes, and allow for the move of tasks that are responsible for the current makespan). Another idea for further improving the results or addressing larger problem sizes is to use the solution that the less heavy DFSP model produces and then try to repair it to satisfy the DPFSP problem's permutation constraint. Indeed, the attempt of repair might be undertaken by the DPFSP model, allowing it to move only a subset of the problem's tasks. When the modified NEH heuristic provided relatively good solutions, a strange behavior was noticed for problem instances of big sizes (e.g., jobs = 50 or bigger). The CP solver used (Google's ORTools) greatly delayed creating the starting solution, and in some cases, the 300 s were not enough to return a solution. This might be caused by the setup of the internal data structures that the CP solver uses in order to continue the search process. Of course, more CP solvers can be used, including the IBM ILOG CP solver and others.