Next Article in Journal
Anchor Design of a Ring Joint Based on Reliability in a Precast Shear Wall Structure
Previous Article in Journal
Detection and Tracking of Moving Pedestrians with a Small Unmanned Aerial Vehicle
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Cooperative Threads with Effective-Address in Simulated Annealing Algorithm to Job Shop Scheduling Problems

by
Marco Antonio Cruz-Chávez
1,*,
Jesús del C. Peralta-Abarca
2 and
Martín H. Cruz-Rosales
3
1
Research Center in Engineering and Applied Sciences, Autonomous University of Morelos State (UAEM), Avenida Universidad 1001 Colonia Chamilpa, C.P. Cuernavaca 62209, Morelos, Mexico
2
Faculty of Chemical Sciences and Engineering, UAEM, Avenida Universidad 1001 Colonia Chamilpa, C.P. Cuernavaca 62209, Morelos, Mexico
3
Faculty of Accounting, Administration & Informatics, UAEM, Avenida Universidad 1001 Colonia Chamilpa, C.P. Cuernavaca 62209, Morelos, Mexico
*
Author to whom correspondence should be addressed.
Appl. Sci. 2019, 9(16), 3360; https://doi.org/10.3390/app9163360
Submission received: 14 July 2019 / Revised: 5 August 2019 / Accepted: 9 August 2019 / Published: 15 August 2019

Abstract

:

Featured Application

This research allows improving the schedule of jobs in manufacturing workshops and this increases the amount of products without having the need to increase the production machines.

Abstract

This paper presents a parallel algorithm applied to the job shop scheduling problem (JSSP). The algorithm generates a set of threads, which work in parallel. Each generated thread, executes a procedure of simulated annealing which obtains one solution for the problem. Each solution is directed towards the best solution found by the system at the present, through a procedure called effective-address. The cooperative algorithm evaluates the makespan for various benchmarks of different sizes, small, medium, and large. A statistical analysis of the results of the algorithm is presented and a comparison of performance with other (sequential, parallel, and distributed processing) algorithms that are found in the literature is presented. The obtained results show that the cooperation of threads carried out by means of effective-address procedure permits to simulated annealing to work with increased efficacy and efficiency for problems of JSSP.

1. Introduction

The job shop scheduling problem (JSSP) appears in the manufacturing industry and is classified by the theory of complexity as one of the most difficult problems to solve within the class of NP-complete problems [1], where NP, indicates non-polynomial behavior problems, that is, problems that do not have an exact algorithm that can solve them in polynomial time. Due to the difficulty of solving this problem, it is important to look for new alternatives in the solution thread in order to improve the cost/performance of the existing algorithms that attempt this type of problem for the purpose of obtaining better solutions.
In the solution of JSSP, very little information exists with regard to algorithms that apply parallel threading as a form of cooperation in order to accelerate the search for better solutions. In [2], with their branch and bound algorithm, they generate a search tree through the cooperation of 16 threads, where each thread is executed by a CPU (central processing unit). In [3], the researchers investigate the performance with multi-threading using mixed integer programming and parameter tuning with CPLEX to JSSP of 15 × 15, where CPLEX is a Simplex algorithm written in language C (C-Simplex resulted in CPLEX). In [4] with their branch and bound algorithm, the researchers propose a GPU-based parallelization in which a two level scheme is used, therefore, at each iteration, several search tree nodes are evaluated on the GPU using several thread-blocks to the blocking job shop scheduling problem. In [5], the researchers present a parallel branch and bound which is based on implicit enumeration and parallel particle swarm optimization (PSO). In parallel PSO, the model used is the master-slave model; each client evaluates its own population at the same time. The master is responsible for defining the parameters that are necessary for the population in each slave. In each iteration, each slave sends its best particle back to the master. The master sends the best received particles to all the slaves to inform them of the best particle in the group. Then each slave updates its best particle. The parallel branch and bound use the logical ring topology. It involves a simulated annealing algorithm to improve the upper bound when a timeout controller is used. The results presented for the parallel branch and bound are for small problems of up to 6 jobs and 15 machines. They only perform comparative tests of efficiency between the proposed sequential and parallel branch and bound. The results presented for the PSO are not good, and are only for medium sized problems. In [6], the researchers use a system of distributed computation compound for 12 personal computers to execute an algorithm of simulated annealing (SA) and their results are not good. In [7], the researchers report a parallel version of the simulated annealing algorithm using a procedure for parallelizing the most difficult calculation. In this case the most difficult calculation is to obtain the critical path in the disjunctive graph model. In [8], one parallel algorithm of simulated annealing is reported, which uses a distribution system of 20 computers; this algorithm manages the concept of populations in genetic algorithms, but without using a genetics operator. Very few investigations of the application of the cooperation in algorithms for JSSP exist. In [9], a novel concept of island model with islands of different sizes is proposed to scheduling problems. The proposed multi-size approach to island model makes the effectiveness of the island-based algorithm independent from the particular population size which is identical for all islands in the canonical island model, also eliminates the need to tune the population size of identical islands to ensure high efficiency. In some genetic algorithms, cooperation is applied by means of crossover of individuals that belongs to a population. This is done within local search procedures using deterministic algorithms (critical path algorithms) in order to evaluate the neighborhood function. Satisfactory results can be obtained [10,11]. Some of the algorithms that have applied cooperation with crossover in problems of JSSP have not given good results [11,12,13], this is mainly due to the fact that the methods of crossover used, are based on improving the solution with the idea of crossed neighbors in order to get better neighbors when comparing neighbors with the neighborhoods of origin, but not with the best neighbor available in the neighborhoods. The fact of not considering the best solution available for the crossover causes, that with the passage of time, the search is not directed toward a space of good solutions. Consequently, the final solution of the algorithm with cooperation generally is not satisfactory. In [14], the researchers present a hybrid genetic algorithm (GA) with parallel implementation of simulated annealing (SA) for the JSSP. The algorithm uses a GA to generate an initial population of solutions within a server machine. Every solution in the population is then distributed to a client machine. The client machine runs an SA and sends the best obtained solution to the server machine. The server again uses the GA to improve the population. This procedure GA-SA is repeated for a number of iterations. The presented results are for medium-sized benchmarks with relative errors below 3.5%. In [15], the researchers present a hybrid parallel genetic algorithm for the JSSP. The method deals with concepts of solution backbones in order to intensify the search in promising regions. They utilize path-relinking and taboo search in crossover and mutation operators. They also use the island model to store a population on each island. If after several iterations of the GA the fitness does not improve, then the subpopulations start to merge, always maintaining the size of the initial population, until in the end there is only one population. In [16], the researchers present a hybrid parallel genetic micro algorithm. The parallel implementation considers M independent GAs running M subpopulations with independent memories, genetic operations, and function evaluation (island models) in each generation. The best individuals in each subpopulation are broadcast to the other subpopulations over a communication network. Each subpopulation consists of small populations, which communicate among themselves and share information through asynchronous message passing. Although a study is presented on the efficiency (speedup) of the parallel algorithm, it appears incomplete. The study evaluates the efficiency of the parallel algorithm for each increase in the number of threads, but the efficiency is averaged and is therefore not sufficient to evaluate the algorithm. In [17], the researchers present a parallel GA for the JSSP in which active schedules are created by the priority rules of Giffler and Thompson. The model used is the master–slave model. The GA works iteratively with distributed slave populations. It does not apply cooperation between threads and sends the best results only to the master using message passing interface (MPI). The obtained results are good, and the benchmarks are of small and medium size. The cooperation with agents in SA for JSSP dynamics has also been applied, but the results in [18], show that the time consumed in communication between agents is extensive. If the existence of several agents is considered, SA works more slowly than normal when the size of the problem of JSSP is medium or bigger. Another application with agents is an agent-based parallel approach with a genetic algorithm. For this approach, the results for benchmarks of JSSP, which are small and medium, are very poor [19]. In this study, a layered architecture was used. In the lowest layer, a multi-agent system using JADE middleware was implemented which facilitated the creation of agents and their communication using MPI. In [20], the researchers present a genetic hybrid island model algorithm for JSSP, proposing a strategy based on the self-adaptation phase that generates a better balance between diversification and intensification. Such algorithm works through pseudo-parallel on a single processor system. In [21], the researchers present an effective island model genetic algorithm for JSSP, proposing a mechanism based on natural migratory selection that improves the search and avoids premature convergence. This algorithm works through pseudo-parallel on a single processor system. In [22], the researchers present an effective genetic algorithm with a critical-path-guided crossover operator for JSSP; they use the critical path in the global search method during the crossover operator. In [23], the researchers present a hybrid simulated annealing for the job shop scheduling problem. It is based on an ant colony that generates the initial population and a simulated annealing that improves the population. The algorithm works in a parallel computer with a genetic algorithm, using a crossover genetic operator inside the cycle of temperature in simulated annealing. In [24], the researchers present a parallel artificial bee colony algorithm for JSSP with a dynamic migration strategy. It determines when a colony should communicate with its neighboring colonies. Such algorithm is carried out in various colonies in parallel. In [25], the researchers present a hybrid micro-genetic multi-population algorithm with collective communication that uses a set of elite micro-populations with computational processes and improves individuals with simulated annealing.
In this paper, cooperation is applied in order to direct the search for a solution toward a space where there are good solutions to the problem. A set of simulated annealing (SSA) is generated with restart [26], where every time that a simulated annealing (SA) ends, an effective-address procedure with the solution Si obtained from that SA and the best solution Sbest obtained by the SSA up to that moment is applied. The search will be directed toward a space where there are good solutions, making the new solution obtained by the effective-address procedure more similar to the best solution obtained by the SSA.
Section one gives a brief introduction. Section two describes the formulation of the job shop scheduling problem. Section three presents the proposed simulated annealing algorithm that applies cooperative threads (SACT) and the effective-address procedure, where a CREW model (concurrent read, exclusive write) is used in implementation [27]. Section four shows the experimental results. Finally, the conclusions drawn by the present work are explained.

2. Disjunctive Formulation of Job Shop Scheduling Problem

The disjunctive formulation has several sets: A set J of n jobs, where, J = { J 1 , J 2 , , J n } ; a set M of m machines where M = { M 1 , M 2 , , M m } ; and a set O of operations where O = { 1 ,   2 ,   3 , } . These operations form k subsets of operations for each one of the jobs ( J k O ) and machines   ( M k O ) .
Each operation i has a processing time of pi. In a job Jk, each pair of operations i, j possesses a relationship of precedence ( i < j ) . Only one operation performed by a machine Mk, can be executed at any given point in time. Given the previously mentioned problem restrictions, the function of the starting time, s of each operation can be represented in the following manner:
The constraint in (1) indicates that the starting time of the operation j must be greater than or equal to zero; meaning only positive values are accepted. The constraint in (2) is a precedence constraint. It indicates that within one job which contains operations i and j, in order for j to begin, i must be completed. The constraints in (3) are disjunctive. These constraints ensure that two operations, i and j, which are performed by the same machine Mk are not carried out simultaneously. The constraints in (4) indicate that the time necessary to complete an operation j must be less than or equal to the makespan (Cmax). The objective is to minimize the makespan, defined as the maximum time of completion of the last job, which is determined according to the starting times, and can be expressed as (5). The time units in the makespan are open, thus they can be assigned as seconds, minutes, hours, and so on, as long as these are consistent units. In this work the makespan is simply labeled as units of time.
i O ,   s i 0
( i , j ) O ( i j ) J k   ( s i + p i ) s j
( i , j ) O     ( i , j ) M k     ( s i + p i ) s j ( s j + p j ) s i
i O   ( s i + p i ) C m a x
m i n ( f ) = m i n [ m a x i O ( s i + p i ) ]
Figure 1 shows the disjunctive graph model G = (A, E, O) for a JSSP of 3 × 3 (three machines and three jobs). This disjunctive graph is formed by three sets. The operations set, O, is made up of the nodes in G, numbered one to nine. The processing time appears next to each operation. The beginning and ending operations (I and * respectively) are fictitious, with processing times equal to zero. The set A is composed of conjunctive arcs, each one of these arcs unites a pair of operations that belongs to the same job Ji and each one represents a precedence constraint. The operations 1, 2, and 3 are connected by these arcs and therefore form job one (J1). Jobs two (J2), and three (J3) are connected in the same way with operations (4, 5, 6) and (7, 8, 9), respectively. Each clique that belongs to E contains a subset of operations that are executed by the same machine (Mk). Operations 1, 6, and 7 are executed by M1 and generate a clique. Machines two (M2) and three (M3) generate a clique, each one with operations (2, 5, 8) and (3, 4, 9), respectively. The resources capacity constraints are represented between each pair of operations in E.

3. Simulated Annealing Algorithm with Cooperative Threads (SACT)

The SACT algorithm (simulated annealing with cooperative threads) generates threads (H1, …, Hn) that are administered by the operating system Windows Vista Ultimate 64 bits and which work in parallel form. Each thread generated Hi by SACT executes and controls one simulated annealing algorithm (SA) in individual form. A core of CPU carries out the control of each thread Hi. If there are more threads than cores of CPU’s, then the threads are distributed in a balanced way among the group of cores of CPU’s that the computer contains. The cooperation among the existing threads, n, allows each thread, Hi, in which simulated annealing is carried out, to know (in any instant of important time) the best solution, Sbest that has been found up to that point in time. This makes it possible that a thread Hi can use the best solution Sbest to realize an effective-address procedure with the solution SHi_c that is found by executing the SA algorithm. The resulting solution of the effective-address procedure is used as an initial solution in the restart of SA within the thread Hi. Because SACT constantly needs to know and upgrade the best solution Sbest. The threads have the advantage of working actively and using the same memory address space. This makes the communication among them quicker [28]. The threads are able to work simultaneously.
In SACT, the threads have continuous access to a space of shared memory that stores the best found solution for the n threads at a time t. This makes it necessary to implement a CREW model, where the access to this space of shared memory must be synchronized between the threads in order to avoid conflicts of reading/writing that could cause errors or loss of information. In order to synchronize the access to this memory, the critical section is used. This guarantees that in any given instant in time, only one thread can have access to read/write, leaving the others on a waiting list.
In the operating system Windows Vista Ultimate 64 bits, the threads are administrated like objects, which are created for calling functions to the applications programming interface (API), using the MFC library [29]. In the SACT algorithm, the functions of the MFC of Microsoft visual C++, 2017, are used for the creation of the threads in a single process.
Each thread created by SACT works by carrying out the same number of identical activities, but with different data. Knowing this, a class was created that upon generating n instances for the class, n objects are generated. Each object represents a thread [30].
SACT has the possibility of generating a parent thread, which in turn generates n offspring threads, executing them in parallel form.
The SACT algorithm applies to JSSP when the objective function is minimizing the maximum time of completion of the last job, this is known as minimizing the makespan. Algorithm 1, presents the SA algorithm that is executed for each created thread Hi by SACT.
Algorithm 1 Simulated annealing executed in each generated thread Hi by SACT.
  • Obtain SHi, where SHi = f (UB).
  • Give an iteration initial iter = 0, initialize values of Cf, Co, α, f(SHi_c).
  • While (iter < Maxiter)
    3.1.
    iter = iter+1
    3.2.
    C = Co
    3.3.
    While (C < Cf).
    3.3.1.
    While (equilibrium does not exist)
    3.3.1.1.
    SHi = permutation(SHi)
    3.3.1.2.
    If(f(SHi) − f(SHi) ≤ 0) SHi = SHi
    3.3.1.3.
    If(f(SHi) − f(SHi) > 0) the state is accepted with the probability
      P a c c e p t = e ( f ( S H i ) f ( S H i ) C )
    3.3.1.4.
    ρ   =   random   number   between   ( 0 ,   1 )
    3.3.1.5.
    If (ρ < Paccept) SHi = SHi
    3.3.1.6.
    If (f(SHi) < f(SHi_c)) SHi_c = SHi
    3.3.1.7.
    If (f(SHi_c) < f(Sbest)) Sbest = SHi_c
    3.3.2.
    C = C*α.
  • SHi = effective-address (SHi_c, Sbest).
The explanation of the algorithm is the following (Algorithm 1):
  • SHi is the schedule (initial solution of JSSP) obtained by the scheduling algorithm [12] using the disjunctive graph model. The makespan of SHi should not surpass an upper bound (UB) defined as date of entrance. In order to define this bound see [26].
  • iter (global variable known in the n threads) is the variable that counts the number of SA executed in SACT. The final control coefficient, Cf, the initial control coefficient (temperature), Co, the control factor α and the best f(SHi_c) (at the beginning this is a very large value) are initialized.
  • If the number of SA (iter) for SACT has not been completed (which is indicated with Maxiter), then a new SA is begun using the new solution SHi obtained with the effective-address procedure.
    3.1.
    Begin the annealing iter.
    3.2.
    The value of initial control coefficient of the SA is initialized.
    3.3.
    The external cycle begins, which carries out the decrease in control coefficient (3.3.2) of the SA according to α.
    3.3.1.
    The internal cycle in annealing begins, which executes the Metropolis algorithm until equilibrium is reached, this depends on the size of the Markov chain (MC) and that for optimization problems is represented by the neighborhood size of a solution of the problem.
    3.3.1.1.
    A neighborhood structure is used (explained later on, Section 3.1). This generates a state in annealing (neighbor S’Hi).
    3.3.1.2.
    S’Hi is accepted as a new configuration if the energy of the system decreases.
    3.3.1.3.
    If the energy of the system increases, S’Hi is accepted as a new configuration according to the probability of acceptance Paccept obtained by the function of Boltzmann, and
    3.3.1.4.
    Comparing this Paccept with ρ, which is a random number uniformly distributed between (0, 1).
    3.3.1.5.
    If ρ < Paccept the generated state is accepted as the current state.
    3.3.1.6.
    If the new schedule cost f(SHi) is better than the best schedule cost f(SHi_c) of the thread Hi, then SHi_c is upgraded.
    3.3.1.7.
    If the new schedule cost f(SHi) is better that the best schedule cost f(Sbest) which has been obtained from all the threads of SACT, then Sbest is upgraded.
    3.3.2.
    The control coefficient is decreased.
    3.4.
    Every time that the thread Hi in execution finishes an SA, an effective-address is carried out between the best solution SHi_c obtained from the SA and the best existing solution Sbest in the algorithm SACT. The effective-address mechanism is explained later (Section 3.2).
The final solution of the algorithm SACT is Sbest, which is obtained by the cooperation of the n threads generated with SACT.

3.1. Neighborhood Generation Mechanism

Figure 2 presents the way to generate new neighbors S’ starting from a schedule S. From S, a machine Mk is chosen randomly and a pair of adjacent operations i, j is also selected randomly. The pair is checked to make sure that slack time between i, j does not exist or fictitious slack time exit [30]. This pair of operations is perturbed by exchanging their order of precedence and then the resulting schedule is checked for feasibility. If the schedule is feasible, it is considered to be a neighbor S’. If the schedule is not feasible, slack time or fictitious slack time between i, j exist. In this case, the thread is repeated with a different pair of adjacent operations in a randomly chosen machine until a feasible neighbor S’ is obtained.

3.2. Effective-Address Mechanism

The thread Hi carries out the effective-address procedure every time that it finishes the execution of a SA. This effective-address procedure is carried out between the solution SHi_c of Hi, obtained by the SA, and the best solution, Sbest, found by the n threads. The effective-address procedure is the following:
The neighborhood structure N1 [31] is used in order to generate all the neighbors S’best of Sbest. These neighbors are always feasible because they only involve exchanging a pair of operations that belong to the critical path [31]. The similarity between each pair of solutions (schedules) SHi_c and a neighbor S’best is measured based on the Hamming distance. This distance is the number of arcs (in the digraph for the solution that results from Figure 1) that have different addresses between SHi_c and its neighbor S’best. In other words, it is the number of differences in the order of execution of operations on each machine [12]. There is a high probability of choosing an S’best of Sbest that has great similarity to SHi_c. This probability is generated in the following way. Three lists are created (L1, L2, L3) that store the S’best neighbors (generated with Sbest) according to the degree of similarity with SHi_c. The size of each list is different, L1 is the smallest, and thus the most similar to SHi_c whereas L3 has the neighbors which are less similar to SHi_c. L1 is chosen with more frequency in order to direct the search toward a good solution space. The size of each list is assigned according to the problem to be solved and it is defined experimentally (trial and error). In order to select one of the 3 lists, a number α at random with a value between 1 and 10 is generated. L1 is chosen if α is between 1 and α1. L2 is chosen if α is between α1 + 1 and α2. L3 is chosen if α is between α2 + 1 and 10. The size of each interval is |1 to α1| > | α1 + 1 to α2| > | α2 + 1 to 10|. Once the list is chosen, the neighbor S’ is chosen randomly from the list. This is the solution that is used in the beginning of the new SA for the thread Hi. The neighbor selected, S’best, is the result of the effective-address procedure carried out implicitly between SHi_c and Sbest. Naturally, this effective-address procedure is applied in each one of the n threads.
Figure 3 presents the running threads in SACT. First, a symbolic representation (SR) of the JSSP is generated. Then, a random solution SHi of SR is generated for each Hi thread. At the beginning of the algorithm, the best global solution Sbest, has a very large initial value defined with a lower bound (LB), which is not less than the sum of the processing time of all operations that are executed on the JSSP.
Each thread Hi, independently executes an SA with its own initial solution SHi. The optimized solution SHi_c of Hi, is obtained by the SA. Through critical sections, there is communication between threads to share and use the best global solution. There are two critical sections. In the first critical section, the information about the best solution for each thread (SHi_c) is selected, and from those best solutions (SHi_c vs. Sbest), one is chosen as the best global solution and is updated Sbest with the best solution. This best global solution (Sbest) is updated constantly, every time a thread enters the critical section with a better solution. The stopping criterion defines a maximum number of iterations with the Maxiter variable, which indicates the maximum number of SA runs performed by the total of the threads in the SACT algorithm. The sum of all iterations generated by all threads Hi, ... Hn, is defined with the IT variable, and this must not be greater than Maxiter. In the second critical section, when SACT continues execution to evaluate the effective-address in a thread, the best global solution used is the one being considered at that moment. The next time a thread evaluates the effective-address, it is possible that an improved global solution (Sbest) is used. This is because the execution of SACT is asynchronous. The advantage of SACT being asynchronous is that the throughput of the program is improved, which allows better exploration in the solution space because SACT is not concentrated only on a better solution (Sbest). When Sbest is improved, it is used for the following threads that require evaluation of the effective-address. This configuration improves the results obtained by SACT. The evaluation of the effective-address allows the realization of a search with SA(SHi) in a region of the solution space which contains good solutions for the problem to be resolved.

4. Experimental Results

For the experimental tests, we used a workstation PowerEdge T320, Intel® Xeon® Processor E5-2470 v2 (2200 Mission College Blvd. Santa Clara, CA 95054-1549, USA) with 10 cores of 3.10 GHz each, 24 GB RAM, 167 GB HD, Windows Vista Ultimate 64 bits, Visual C++ 2008, and MFC library to generate threads.
This type of system employs CISC architecture (Complex Instruction Set Computer) and is the one currently operating with high-powered applications, such as super-computing. This is unlike the ARM architecture (Advanced RISC Machines), which is enjoying great popularity and works better on battery-powered devices nowadays: On mobile phones and tablets, for instance. The ARM architecture has fewer transistors than CISC architecture processors and significantly reduces costs, heat, and energy during its operation. ARM architecture is expected to lead its way into creating super-computing equipment given the great benefits it can bring within this area. Nvidia’s GPUs are currently used for CUDA-programmed supercomputing and Nvidia is starting to work on supporting ARM processors to create new high performance computing computers that manage energy more efficiently, as well as numerical processing from 2020 [32].

4.1. JSSP Instances and Simmulated Annealing Parameters

The instances of job shop used were 48 benchmarks of different sizes from the OR-library [33], nineteen small-sized instances, fifteen medium-sized instances, fourteen large-size instances. Additionally, ten large-size benchmarks of [34] were used, DMU-06-DMU10, and DMU46-DMU50. In this work only square instances are used, considering that square instances are more difficult to solve [35]. Table A1, presented in Appendix A, shows benchmarks used to evaluate the proposed SACT algorithm. The names and optimal values or known upper bound of each instance are presented.
For each benchmark, SACT performed 30 executions, with Maxiter = 2500, or less if the optimal/upper bound value is found and works with 48 threads.
SACT algorithm used SA parameters as C0, Cf, α, MC (Markov chain), and UB (solution at the beginning, makespan), were obtained with a sensibility analysis, Table 1 shows the results for all instances. In effective-address mechanism, the size of the three lists was the same for all the instances: For L1 it was 20%, for L2 it was 30%, and for L3 it was 50%, with regard to the total neighbors S’ in the neighborhood. α1 = 5, α2 = 8, and α3 = 10. The above are the conditions applied on each of the 30 tests performed for each benchmark.

4.2. Effect of Cooperating with Effective-Address

In this paper, two different types of cooperation are utilized. In the first type of cooperation, SACT uses an effective-address procedure between two solutions with the best global solution Sbest obtained from all threads. The best solution in the running thread is SHi_c, i.e., SHi = effective-address (SHi_c, Sbest). With solution SHi obtained in each thread Hi, SA is restarted in each thread Hi. The second type of cooperation does not use effective-address in the SACT procedure for restarting SA in each thread Hi. Instead, SHi = SHi_c is used. In addition, in each iteration of SACT, the best solution Sbest is saved. Cooperation occurs because the n threads working in parallel to find a solution at different points in the solution space always keep the best solution found in Sbest.
In both types of cooperation, the best global solution Sbest is obtained for each iteration of SACT because the best solution found in all threads for each SA is compared with the current best global solution, and the best solution Sbest is saved.
The SACT algorithm was executed with several different numbers of threads and with a maximum value of 2500 Maxiter SA, which corresponds to about an hour of runtime for a number of threads SA ≥ 8. Figure 4, Figure 5, Figure 6, Figure 7, Figure 8, Figure 9, Figure 10, Figure 11 and Figure 12 (Maxiter vs. Sbest), present respectively the performance of the cooperation of threads in SA for the problems YN1, YN2, YN3, and YN4. These figures present the execution of SACT for 8, 16, 32, 40, and 48 threads.
Figure 4a, Figure 5a, Figure 6a and Figure 7a show the relationship with efficacy. When there is cooperation without using the effective-address procedure, it can be observed that the best result obtained when Maxiter reaches 2500 SA does not depend on the number of threads in execution in SACT. The value of the makespan is very similar for any number of threads. This may be because there is no direct way to arrive at the same solution.
Figure 4b, Figure 5b, Figure 6b and Figure 7b show the relationship with efficacy. It can be observed that the best result obtained within the Maxiter = 2500 SA, using the effective-address procedure, was when SACT used 48 threads. Figure 6b shows that in YN3, 48 threads compete with 40 threads to find the best solution. This indicates that with a greater number of threads, on average, better solutions may be obtained. This effect is seen because the larger group of threads (H48) has the same directed pathway toward the same Sbest solution. This is due to the greater number of effective-address applied to the n threads with the best solution Sbest. The result is that a greater number of threads lead to a directed path through the best solution Sbest. The Hamming distance becomes smaller between the set of threads with respect to Sbest. This can be seen in Figure 8b, Figure 9b, Figure 10b and Figure 11b. It is generally observed in all cases that on average, the Hamming distance decreases with an increasing number of threads. Interestingly, with regard to the efficacy of the algorithm that can be noted in Figure 4b and Figure 7b for all other threads (H8, H16, H32, and H40), there is no defined behavior. For example, the efficacy as a function of the number of threads for YN1 (Figure 4b) in increasing order is H40, H8, H16, H32, H48. Efficacy as a function of the number of threads for YN2 (Figure 5b) in increasing order is H8, H16, H32, H40, H48. Efficacy as a function of the number of threads and YN3 (Figure 6b) in increasing order is H8, H16, H32, H48, H40. Efficacy as a function of the number of threads for YN4 (Figure 7b) in increasing order is H40, H16, H8, H32, H48. It can be seen that the efficacy of the algorithm SACT based on the number of threads, depends on the problem to solve. However, it can be observed that for all problems YN, generally with 48 threads, the efficacy of SACT is better in almost all YN; the average efficacy is better using 48 threads (H48).
Figure 4b, Figure 5b, Figure 6b and Figure 7b show that the worst behavior occurs when SACT is executed in a single thread sequence (H1) where cooperation with the effective-address procedure is with the only thread that exists (H1). It is noted that approximately from iteration = 100 SA, the efficiency decreases considerably for finding a good makespan when H8 is compared to H48. This behavior occurs for the four problems YN. The opposite happens when there is cooperation thread (H8 to H48). Efficacy increases on average from Figure 4b, Figure 5b, Figure 6b and Figure 7b, by about 10 units from iteration 250 to 2500 SA. This makes these makespan results better than those found by H1. For example, in YN1 of Figure 4b, in iteration 500 SA, the best average makespan when there is cooperation (H32) is close to 898. When there is no cooperation (H1), the makespan is about 909. In the iteration 2500 SA, the average makespan when there is cooperation (H48) is close to 894 and when there is no cooperation (H1), the makespan is close to 906.
Figure 4a, Figure 5a, Figure 6a and Figure 7a show that the worst performances are when SACT is executed in a single thread sequence (H1), where cooperation does not use the effective-address procedure. When the only thread that exists is (H1), the best solution is taken from the previous SA (SH1 = SH1_c). It is noted that approximately at the beginning (before Maxiter = 50 SA), the efficacy of H1 is better. Then this efficacy decreases considerably. This behavior occurs in all four YN problems. The opposite happens when there is cooperation thread (H8 to H48). The efficacy of cooperation increases as the number of iterations increases of 250–500 SA, as shown by better results for the makespan as compared to that found by H1. For example, in YN1, Figure 4a, at iteration 500 SA, the average makespan when there is cooperation (H8) is close to 902 and when there is no cooperation (H1), the makespan is about 908. In iteration 2000 SA, the average makespan when there is cooperation (H40) is close to 896 and when there is no cooperation (H1), the makespan is near 906.
An interesting point related to the efficacy of the SACT algorithm is that when there is cooperation but no effective-address there is no defined behavior for different threads in execution, as seen in Figure 4a, Figure 5a, Figure 6a and Figure 7a. Table 2 summarizes the efficacy of SACT with cooperation and without effective-address for YN problems in descending order. It can be observed that the efficacy of the algorithm SACT as a function of the number of threads depends on the problem being resolved. When there is both cooperation and effective-address, there is definite behavior for running threads, as can be seen in Figure 4b, Figure 5b, Figure 6b and Figure 7b. Table 3 presents the efficacy of SACT with cooperation and effective-address for YN problems in descending order. It can be seen that the increased efficacy of the SACT algorithm, as a function of the number of threads, occurs when the number of threads is the largest (H48). The exception to this is the YN3 problem, in which case the number of threads is also great. In YN1 and YN4, the worst efficacy is obtained with H40. According to Table 4, in order to define the number of threads needed to increase the efficacy in SACT, it would be necessary to start with H32 threads, and slowly increase the threads, being careful detect cases when SACT has a number of threads that presents a low efficacy, as in the case of YN1(H40) and YN4(H40).
An interesting point related to the efficacy of the SACT algorithm is that when there is cooperation but no effective-address there is no defined behavior for different threads in execution, as seen in Figure 4a, Figure 5a, Figure 6a and Figure 7a.
The efficacy of cooperation with the effective-address procedure (Figure 4b, Figure 5b, Figure 6b and Figure 7b), is noticed when, with a small number of iterations 500 SA, the value of an average makespan (MS) improves considerably when compared to the second type of cooperation (Figure 4a, Figure 5a, Figure 6a and Figure 7a). For example, for YN1 with effective-address, the average MS is about 900 (H8, H16, H32, H40, H48), as seen in Figure 4b. For YN1 without effective-address, the average MS is close to 905 (H8, H16, H32, H40, H48) as shown in Figure 4a. For YN2 with effective-address, the average MS is close to 922 (H8, H16, H32, H40, H48), as noted in Figure 5b. For YN2 without effective-address, the average MS is close to 928 (H8, H16, H32, H40, H48), as observed in Figure 5a.
For YN3, with effective-address, the average MS is close to 906 (H8, H16, H32, H40, H48), as seen in Figure 6b. For YN3 without effective-address, the average MS is close to 912 (H8, H16, H32, H40, H48), as shown in Figure 6a. For YN4 with effective-address, the average MS is close to 922 (H8, H16, H32, H40, H48), as noted Figure 7b. For YN4 without effective-address, the average MS is close to 928 (H8, H16, H32, H40, H48), as seen in Figure 7a. It can be observed that with a Maxiter = 500, the increased efficacy is almost constant for all YN, with 6 units of improvement in makespan when effective-address is used, as compared to when it is not used.
When comparing the first type of cooperation (Figure 4b, Figure 5b, Figure 6b and Figure 7b) and second type of cooperation (Figure 4a, Figure 5a, Figure 6a and Figure 7a), when the number of iterations is 2500, the average value of MS is better for the first type of cooperation. For YN1 with effective-address, the average MS is approximately 896 (H8, H16, H32, H40, H48), as seen in Figure 4b. For YN1 without effective-address, the average MS is approximately 898 (H8, H16, H32, H40, H48), as shown in Figure 4a. For YN2 with effective-address, the average MS is approximately 904 (H8, H16, H32, H40, H48), as noted in Figure 5b. For YN2 without effective-address, the average MS is approximately 905 (H8, H16, H32, H40, H48), as observed in Figure 5a. For YN3 with effective-address, the average MS is approximately 904 (H8, H16, H32, H40, H48), as seen in Figure 6b. For YN3 without effective-address, the average MS is approximately 905 (H8, H16, H32, H40, H48), as shown in Figure 6a. For YN4 with effective-address, the average MS is approximately 980 (H8, H16, H32, H40, H48), as observed in Figure 7b. For YN4 without effective-address, the average MS is approximately 985 (H8, H16, H32, H40, H48), as noted in Figure 7a. With a Maxiter = 2500, the increase in efficiency of the problem varies from 1 to 5 units of improvement in MS whether effective-address is used or not used. Even the slightest improvement in MS, which is 1, is very good, because what is sought with any optimization algorithm is to improve the bounds already known for big problems. The improved efficacy makes SACT competitive with the best algorithms reported in the literature, according to the results presented below.
Table 2 summarizes the efficacy of SACT with cooperation and without effective-address for YN problems in descending order. It can be observed that the efficacy of the algorithm SACT as a function of the number of threads depends on the problem being resolved. When there is both cooperation and effective-address, there is definite behavior for running threads, as can be seen in Figure 4b, Figure 5b, Figure 6b and Figure 7b.
Table 3 summarizes the efficacy of SACT with cooperation and with effective-address for YN problems in descending order. It can be seen that the increased efficacy of the SACT algorithm, as a function of the number of threads, occurs when the number of threads is the largest (H48). The exception to this is the YN3 problem, in which case the number of threads is also great. In YN1 and YN4, the worst efficacy is obtained with H40. According to Table 3, in order to define the number of threads needed to increase the efficacy in SACT, it would be necessary to start with H32 threads, and slowly increase the threads, being careful to detect cases when SACT has a number of threads that presents a low efficacy, as in the case of YN1(H40) and YN4(H40).
An evaluation of the Hamming distance presented in Figure 8, Figure 9, Figure 10 and Figure 11 for the problems YN1, YN2, YN3, and YN4, respectively, with different numbers of threads, shows the degree of similarity in each solution with respect to the best solution in each iteration. The Hamming distance between SHi_c and Sbest is obtained by comparing the sequence of operations on each machine of JSSP. If the Hamming value of a solution SHi_c is zero regarding Sbest, then the solution SHi_c is the same as Sbest and they have the same configuration. Conversely, if SHi_c, has a very large Hamming value e.g., 400 (maximum value for a solution of the problem YN), then Sbest is totally different from SHi_c. The greater the Hamming distance in a set of solutions S = {SH1_c, SH2_c, SH3_c, ..., SHn_c} with respect to an Sbest solution, the greater the diversity in the set of solutions S, where n is the number of running threads.
Figure 8a, Figure 9a, Figure 10a and Figure 11a, show that for cooperation without effective-address, more diversity exists than in the case of cooperation with effective-address. There is less diversity when movement follows a directed path via Sbest, as seen in Figure 8b, Figure 9b, Figure 10b and Figure 11b.
In Figure 8a, Figure 9a, Figure 10a and Figure 11a, the Hamming distance without effective-address is within a range of 250 to 380. This is the case in almost all the execution interval of SACT, with different numbers of threads, and for different problems. It is true for YN1, YN2 between 180 and 325, YN3 between 190 and 320, and YN4 between 200 and 325. Given that in this kind of cooperation there is no effective-address, the diversity behavior remains almost constant throughout the runtime of SACT, with the exception of the first 250 s. It is seen that H8 and H16 have less diversity than all the other YN problems. Since there is not a directed path through the best solution Sbest, the Hamming distance does not present a significant decrease over time. The behavior does differ in relation to the number of threads, as can be observed in Figure 8a, Figure 9a, Figure 10a and Figure 11a. In Figure 8a for YN1, the Hamming distance is greatest for H40 and least for H8. The other Hamming distances have almost the same average behavior (H16, H32, and H48).
In Figure 8a, Figure 9a, Figure 10a and Figure 11a, for YN2, YN3, and YN4, respectively, Hamming distance has the same average performance for H16, H32, H40, and H48. For H8, the Hamming distance is smaller. The behavior of the Hamming distance based on the number of threads is due to each thread involving a solution of SA. Because of this, if a larger number of solutions are compared to Sbest, there could be a wider diversity. This is not always true because Sbest has no relationship with most of the solutions generated by the thread. An example of this can be seen in Figure 8a, Hamming (H48) < Hamming (H40).
In Figure 8b, Figure 9b, Figure 10b and Figure 11b, the Hamming distance with effective-address at the beginning of SACT has a diversity of Hamming values up to 350. This is then reduced considerably as the execution progresses, and SACT has values in the range of 70 to 150. Because there is such cooperation with effective-address, the diversity is reduced because the search in the solution directs itself toward Sbest solutions. The behavior of the Hamming distance based on the number of threads is due to each thread involving a solution of SA. Because of this, if a larger number of solutions are compared to Sbest, there could be a wider diversity. However, as the time of implementation of effective-address, is reduced, solutions are directed toward a single path. This could be debatable. It can be observed in Figure 8b, Figure 9b, Figure 10b and Figure 11b and Figure 4b, Figure 5b, Figure 6b and Figure 7b, that applying cooperation threads with a directed path toward the best solution, a greater number of threads find better solutions. Since the greater diversity of the solutions is achieved with a greater number of threads, this avoids a hasty convergence prior to finding good solutions.
Figure 12 presents YN1 with H32 threads, with a long execution time of close to 2 h. It can be seen that the effective-address procedure still does not make the Hamming distance converge in SACT. What can be seen is that if SACT is left running an extremely long time, the Hamming distance will tend to zero.
The obtained results to YN problems indicate that in order for SACT to work with higher efficiency, it requires a computer that has a greater number of threads in order to allow SACT to make a greater number of effective-address with a greater number of threads, using a larger value of Maxiter.

4.3. SACT Statistic Review

The bar plot is used in this paper as a tool to assess the frequency obtained from the solutions in terms of quality, the unit is no dimensional. The x-axis in the bar plot represents the value of the objective function of JSSP, which is the MS obtained by SACT.
Figure 13 shows the bar plots for YN1, YN2, YN3, and YN4 problems. In the four bar plots, SACT presents frequencies whose distribution is skewed to the left with respect to the midpoint.
The frequency distribution of YN1 and YN3 (Figure 13a,c) is very similar to a normal distribution. The frequency distribution of YN2 (Figure 13b) and YN4 (Figure 13d) is a little skewed to the right with respect to the midpoint (arithmetic mean), this is important because it indicates that most results obtained are to the left of the midpoint value, so the makespan found in most of the tests is of good quality. For YN1, 12 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 889–894. For YN2, 16 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 911–917. For YN3, 14 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 897–903. For YN4, 15 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 973–978. There is data concentration near the arithmetic mean for the four benchmarks, YN1 to YN4.
The frequency distribution of DMU06, DMU07, DMU08, and DMU10 (Figure 14) is skewed to the right with respect to the midpoint (arithmetic mean). DMU06 (Figure 14a) shows a bimodal frequency distribution, the highest frequency is 8 and is at the midpoint with 3319.2. At the left of the bar plot the frequency is 2 and the quality results is 3276. DMU07 (Figure 14b) and DMU08 (Figure 14c) present a data distribution further from the arithmetic mean, as opposed to DMU06, DMU09 (Figure 14d), and DMU10 (Figure 14e). For DMU07, 12 out of 30 results have a makepan value better or equal to the midpoint. At the far left of the bar plot the frequency is 6 and the quality results is 3092. At the far right of the bar plot the frequency is 2 and the quality results is 3227. DMU06 and DMU10 have a higher dispersion in the data distribution. For DMU08, 8 results of 30 obtained, have a makespan value better or equal to the midpoint and this value is 3225. At the far left of the bar plot the frequency is 8 and the quality results is 3225. At the far right of the bar plot the frequency is 1 and the quality results is 3390. For DMU09, 8 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 3140–3159. At the far left of the bar plot the frequency is 5 and the quality results is 3140. At the far right of the bar plot the frequency is 3 and the quality results is 3235. For DMU10, 10 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 3015–3029. At the far left of the bar plot the frequency is 3 and the quality results is 3015. At the far right of the bar plot the frequency is 4 and the quality results is 3085.
The frequency distribution of DMU46 and DMU47 (Figure 15) is skewed to the left with respect to the midpoint (arithmetic mean). For DMU48, the data are concentrated near the arithmetic mean, 26 out of 30. DMU50 has a central frequency distribution, with the exception of a single data that is far from this distribution. For DMU46 (Figure 15a), only 6 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 4143–4163. At the far left of the bar plot the frequency is 2 and the quality results is 4143. At the far right of the bar plot the frequency is 7 and the quality results is 4193. For DMU47 (Figure 15b), only 6 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 4036–4060. At the far left of the bar plot the frequency is 1 and the quality results is 4036. At the far right of the bar plot the frequency is 4 and the quality results is 4096. For DMU48 (Figure 15c), 9 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 3878–3900. At the far left of the bar plot the frequency is 1 and the quality results is 3878. At the far right of the bar plot the frequency is 1 and the quality results is 3988. For DMU49 (Figure 15d), 12 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 3831–3849. At the far left of the bar plot the best frequency is 1 and the quality results is 3831. At the far right of the bar plot the frequency is 3 and the quality results is 3876. For DMU50 (Figure 15e), 15 results out of 30 obtained, have a makespan value better or equal to the midpoint and are within the range 3842–3868. At the far left of the bar plot the best frequency is 1 and the quality results is 3842. At far right of the bar plot the frequency is 6 and the quality results is 3907.
The results obtained for the other small, medium, and large problems are presented in Table 4, Table 5 and Table 6, respectively. The SACT used 48 threads. For each benchmark, 30 executions were carried out with SACT.
Table 4 presents the MS results with SACT for small benchmarks. For all the benchmarks the optimal solution value is reached (RE = 0). For most benchmarks the standard deviation of zero is obtained. The greatest standard deviation is obtained in ORB03 (σ = 6.9). For most benchmarks, the mode is the optimal solution obtained. The mode is the value that appears most often in the 30 tests. For most benchmarks, the median obtained is the optimal solution. If the median achieves the optimum, then at least half of the 30 tests achieved the optimal solution. The more difficult benchmarks that obtained the optimal solution according to the mode and median were ORB02 and ORB03. Table 4 shows, based on the standard deviation that the data distribution in each benchmark is completely homogeneous and the data are grouped very close to each other or with the same optimal value. For each benchmark in 30 tests, almost the same value for mean, median, and mode are found,, indicating a symmetrical distribution of data.
Table 5 presents the MS results with SACT for medium benchmarks. For all the benchmarks, the optimum value is reached (RE = 0). For most benchmarks, a small value of standard deviation (σ < 7) is obtained. The exception is the LA38 problem with the highest standard deviation of 21; however, this value is less than half of the arithmetic mean (mean) and this represents little dispersion of the data, however the dispersion of the data found by SACT in a frequency distribution for medium-sized benchmarks, is greater than the dispersion found for small-sized benchmark data. LA29 finds the optimal solution in 54 s. LA40 finds in 37 min. TA07 finds the optimal solution in 99 s and TA07 finds in 85 min. More than half of the benchmarks of medium size have a mode equal to the optimal solution. For most benchmarks, the median obtained is not the optimal solution. The most difficult problems for obtaining the optimal solution according to the mode and median were the benchmark LA40, TA03, TA05 to TA08, and TA10. LA40 was the most complicated of these benchmarks, the optimal solution was obtained in only one of the 30 executions, where the median and mode were furthest from the optimal value. Table 5 shows, based on the standard deviation that the data distribution in each benchmark is completely homogeneous and the data are grouped very close to each other or with the same optimal value. LA38 presents the data a little more dispersed (σ = 20.6).
Table 6 presents the MS results with SACT for large benchmarks. Most of the obtained values are close to the upper bound (UB), four of the benchmarks achieve this value. TA28 finds the greatest relative error (RE = 0.87%). TA22, TA30, YN3, and YN4 find the lowest RE = 0. The DMU benchmarks (46–50) are an exception because DMU49 finds the largest RE = 3.06 and DMU47 finds the lowest RE = 2.08. The largest standard deviation was 41.8 for the problem DMU08, and the lowest standard deviation was 4.9 for the problem YN1; however, this value is less than half of the arithmetic mean (mean) and this represents little dispersion of the data, however the dispersion of the data found by SACT in a frequency distribution for large-sized benchmarks, is greater than the dispersion found for small-sized benchmark data and medium-sized benchmark data. The mean is greater than the median and mode for DMU06 to DMU08 and DMU10, but with very close values, indicating very little skewed frequency distributions (see Figure 14). With DMU09 the mean is between the median and the mode indicating that the frequency distribution is close to a symmetrical distribution (see Figure 14d). The mean is less than the median and mode for DMU46 to DMU47 and DMU49, but with very close values, indicating very little skewed frequency distributions (see Figure 15). With DMU48 the mean is between the median and the mode indicating that the frequency distribution is close to a symmetrical distribution without taking the atypical value of 3988 (see Figure 15c). With DMU50 the mean is greater than the median and the mode but with very close values, indicating that the frequency distribution is close to a symmetrical distribution without taking the atypical value of 3842 (see Figure 15e). The shortest time for TA benchmarks was for TA22 and the longest time was for TA30. The time for DMU benchmarks with the smallest relative error was for DMU08 and the time with the largest relative error was for DMU49. The shortest time for YN benchmarks with the smallest relative error was for YN3 and the longest time with the biggest relative error was for YN2.
Figure 16 presents the average of 5 tests of the relative error obtained for 15 × 15 problems. It can be noted that the maximum RE occurs in LA38 and was not greater than 1.7. The most difficult problem was LA40, however 5 trials show that the average RE was not greater than 0.5. For the other 15 × 15 problems, the maximum average RE is in the range 0 ≤ RE ≤ 0.6. The problems for which it was easiest to find the global optimum were TA01, TA02, and TA04. In all the tests, they had RE = 0, which is why they are not present in Figure 16.
Figure 17 presents the average of 30 tests of the relative error obtained for the YN problems. It can be observed that the maximum RE occurs in YN2 and was not greater than 1.7; this problem had more difficulty approaching the upper bound of agreement in Table 6. The lowest average RE was in YN4, not greater than 1.2 with respect to the upper bound in Table 6.
Figure 18 presents the average of 30 tests of the relative error obtained for the DMU (06–10) problems. It can be observed that the maximum RE occurs in DMU07 and was not greater than 2.7. The DMU10 reached lowest average RE < 2. DMU08 was easier to approach the upper bound of agreement in Table 6. For the other DMU problems, the maximum average RE is in the range 2.3 < RE < 2.7.

4.4. Behaviour in DMU Benchmarks Scheduling

Figure 19, presents the Gantt chart of the problem DMU08. The scheduling of the jobs in each of the problem’s machines can be observed. This type of distribution in the scheduling is characteristic of all problems, TA (21–30), YN (1–4), and DMU (06–10). The DMU problems (49–50) show different behavior. The scheduling distribution type is different. This is shown in Figure 20, where the Gantt diagram of the DMU46 problem is presented as an example.
Figure 20 shows that the planning of the job sequences in DMU46 indicates that in machines 1 to 10, the work operations can be sequenced from time zero. For machines 11 to 20, the operations of jobs cannot be sequenced at time zero because there is a precedence order in operations of the same job. This precedence order makes it impossible to use machines 11 to 20 if the operations of machines 1 to 10 have not previously been executed.

4.5. Comparision of SACT with Other Algorithms

Table 7, presents the results for the FT (Fisher and Thompson) and LA (Lawrence) benchmarks. SACT and BRK-GA (Biased Random-Key Genetic Algorithm) algorithms find the best results reported in the literature. Both algorithms obtained the optimal value for LA40. With regard to the execution time, it shows that SACT is competitive for most benchmarks. Table A2, in Appendix A, shows the software/hardware environment used for the execution of the algorithms presented in Table 7.
Table 8, presents results for ORB, ABZ, TA, DMU, and YN benchmarks in [33]. SACT obtains the best results reported in the literature for most of the benchmarks. The relative error (RE) for ORB, ABZ, TA, YN, and DMU (06–10) benchmark is RE < 0.95%. For DMU (47–50,) benchmark is RE < 3.03%. This shows that SACT is competitive with respect to the other algorithms presented. In [36] the researchers report a new UB = 904 for the problem YN2; previously the known UB was 907. SACT finds a UB = 906. Although this is not the new value reported by [36], it was able to improve the UB known before 2014. In efficiency, SACT is competitive with the ACOFT-MWR (Ant Colony Optimization with Fast Taboo - Most Work Remaining) . The exception can be seen with BRK-GA algorithm for the DMU benchmarks, SACT is, 0.12 < RE < 3.04 and BRK-GA is, 0 ≤ RE < 0.49. Table A2, in Appendix A, shows the software/hardware environment used for the execution of the algorithms presented in Table 8.
Table 9, presents the relative error of algorithms with threads/processes for the FT, LA, ORB, TA, DMU, and YN benchmarks. SACT has better performance with respect to the other algorithms, except DMU09. SACT has a relative error in the range of 0 ≤ RE ≤ 0.94%, PPSO (Parallel Particle Swarm Optimization) has a relative error in the range of 29 ≤ RE ≤ 68%, CGA-PR (Coarse-Grained Genetic Algorithm with Path-Relinking) has a relative error in the range of 0 ≤ RE ≤ 2.49%, PaGA (Parallel Agent-Based Genetic Algorithm) has a relative error in the range of 0 ≤ RE ≤ 12.4%, HGAPSA (Hybridization of Genetic Algorithm with Parallel Implementation of Simulated Annealing) presents a relative error of 0.79 ≤ RE ≤ 1.92%, HIMGA presents 0 ≤ RE ≤ 1.01%, NIMGA presents 0 ≤ RE ≤ 3.01%, IIMMA presents 0 ≤ RE ≤ 0.55% and AGS presents 0 ≤ RE ≤ 1.76%. Concerning the HGACC distributed algorithm, SACT offers a better performance for YN benchmarks. It reaches the same effectiveness for 10 × 10 and 15 × 15 size benchmarks. Thus, it is best for the DMU06 benchmark and is competitive for the other DMU benchmarks. Table A2, in Appendix A, shows the software/hardware environment used for the execution of the algorithms presented in Table 9.

4.6. SACT Computational Efficiency

Figure 21 shows the SACT speedup for the YN benchmarks. The communication through cooperation between threads (access to the critical section) affects the speedup. An increased number of threads lead to greater cooperation because each running thread has the need to deposit the best solution in a critical section shared by all threads (see Figure 3), generating a bottleneck where in an instant of time the threads will have to wait their turn to access the critical section. This implies that increasing the number of threads will have a higher bottleneck, which results that the speedup moves away from the ideal. The speedup for YN2 is farthest from ideal with respect to other YN benchmarks. This may be because YN2 is taken more time to generate feasible solutions with the neighborhood generation mechanism [31]. So, it is possible that YN1, YN3, and YN4 will find solutions feasible faster. The neighborhood mechanism used in SACT is the only place in the algorithm that can perform differently on each benchmark. The speedup is very good for all YN benchmarks since is close to the ideal.

5. Conclusions

The study presented evidence that a benefit exists when the cooperation of threads is used applying effective-address procedure in the algorithm of simulated annealing for the job shop scheduling problem. It is also observed that the SACT algorithm can work more efficiently if it is executed in a computer with a greater number of threads per core. This permits an increase in the number of effective-address upon executing a greater number of SA in parallel.
Working with SACT in parallel allows the effective-address procedure to be efficiently applied because each thread constantly updates its search direction to a good solution space. In addition, no thread waits for any other thread in its simulated annealing run. That is why the search for better solutions between threads is asynchronous, enabling to run a larger number of simulated annealing compared to other threads, but always sharing the best solution space, and trying to improve the search direction with effective-address procedure on a constant basis. This makes the SACT algorithm more efficient if the number of threads is greater, which is reflected in the experimental results, as shown in Section 4.2.
According to the experimental results, it can be concluded that by applying cooperation threads with a directed path toward the best solution, a larger number of threads find best solutions. Since the diversity of solutions increases as the number of threads increases, a quick convergence before finding good solutions is avoided.
When the cooperation thread is applied without a directed path towards the same solution, finding a good result does not depend on the number of threads running on SACT. The value of the makespan is very similar for any number of threads.
The statistical review for the 19 small-sized benchmarks shows that SACT is highly effective since the optimal value is found in all instances. In 16 instances, the mean is the optimum, which indicates that for these instances, each of the 30 tests performed by SACT obtained the optimal value. According to the result of the median, it is understood that in 18 instances, the optimal solution is found in at least half of the 30 tests performed for each, which is reaffirmed by the mode of the same 18 instances.
The statistical review for the 15 medium-sized benchmarks shows that SACT is highly effective since the optimal value is found in all instances. In 4 instances, the mean is the optimum and this indicates that for these instances, each of the 30 tests performed by SACT obtained the optimal value. According to the result of the median, it is understood that in 5 instances, the optimal solution is found in at least half of the 30 tests performed for each. In 8 instances, the mode indicates that the optimal value is the one that appears more frequently.
The statistical review for the 20 large-sized benchmarks shows that SACT is very effective. In 4 instances, the upper bound is found and in 15 instances, the relative error does not exceed 1%.
Because the execution in SACT is executed by threads and communication in the algorithm handles only two critical sections, the efficiency (speedup) of the proposed algorithm is close to the ideal value. SACT also shows that efficacy is competitive when compared with other algorithms in the literature that have been very successful. Additionally, it is better than the algorithms in the literature that use threads/processes for the job shop problem.
Finally, the conclusion can be drawn that the optimum number of threads to execute in parallel by SACT is a parameter that must be tuned due to this cooperation in the threads.
The planning characteristics of the DMU (46–50) problems increase the degree of difficulty in obtaining good solutions by the proposed SACT algorithm. This is a topic of interest for future research, to search for an improved neighborhood mechanism that finds better solutions with the SACT algorithm for problems that behave like the DMU (46–50) problems with respect to the operation precedence and restrictions that prohibit starting all operations at time zero.

Author Contributions

Conceptualization, M.A.C.-C.; Formal analysis, J.d.C.P.-A.; Investigation, M.A.C.-C. and M.H.C.-R.; Methodology, M.A.C.-C. and J.d.C.P.-A.; Software, M.A.C.-C. and M.H.C.-R.; Validation, J.d.C.P.-A. and M.H.C.-R.; Writing – review & editing, M.A.C.-C.

Funding

This research was funded by PRODEP grant number SA-DDI-UAEM/15/451.

Conflicts of Interest

The authors declare no conflict of interest.

Appendix A

Table A1. Benchmarks used to evaluate the proposed SACT algorithm.
Table A1. Benchmarks used to evaluate the proposed SACT algorithm.
ProblemSizeOptimum/UB
Units of Time
JobsMachines
FT66655
FT101010930
LA161010945
LA171010784
LA181010848
LA191010842
LA201010902
ORB0110101059
ORB021010888
ORB0310101005
ORB0410101005
ORB051010887
ORB0610101010
ORB071010397
ORB081010899
ORB091010934
ORB101010944
ABZ510101234
ABZ61010943
LA3615151268
LA3715151397
LA3815151196
LA3915151233
LA4015151222
TA0115151231
TA0215151244
TA0315151218
TA0415151175
TA0515151224
TA0615151238
TA0715151227
TA0815151217
TA0915151274
TA1015151241
TA2120201642
TA2220201600
TA2320201557
TA2420201646
TA2520201595
TA2620201643
TA2720201680
TA2820201603
TA2920201625
TA3020201584
DMU0620203244
DMU0720203046
DMU0820203188
DMU0920203092
DMU1020202984
DMU4620204035
DMU4720203942
DMU4820203763
DMU4920203710
DMU5020203729
YN12020884
YN22020904
YN32020892
YN42020968
Table A2. Software/hardware environment used in algorithms with which SACT is compared.
Table A2. Software/hardware environment used in algorithms with which SACT is compared.
AlgorithmHardware and Software
PPSO, [5]Server and client Machines, Logical ring topology, Java, Windows system
HGAPSA, [14]Server and client Machines
cGA-PR, [15]Workstation Pentium IV, multicore, 2.0GHz, 1GB, Microsoft Visual C++
PaGA, [19]Computer network with JADE Middleware, Java
HIMGA, [20]PC, 3.4GHz, Intel®, Core(TM), i7-3770 CPU, 8GB, C++
NIMGA. PC, [21]PC, 3.4GHz, Intel®, Core(TM), i7-3770 CPU, 8GB, C++
IIMMA, PC, [22]PC, 3.4 GHz, Intel®, Core(TM), i7-3770 CPU, 8GB, C++
Sequential AntGenSA (SGS), Parallel AntGenSA (PGS), [23]Cluster 4nodes, Intel® Xeon® 2.3 GHz, 64GB, Linux CentOS, C, OpenMP
PABC, [24]Four computers system configuration, JAVA
HGACC (HG), [25]CLUSTER, 48 cores, Xeon 3.06GHz, Linux Centos 5.5, GNU gcc, MPI Library
BRK-GA (BG), [36]AMD Opteron 2.2GHz CPU, Linux Fedora release 12, C++
SAGen (SG), [37]Pentium 120 (0.12 GHz), Pentium 166
ACOFT-MWR (AM), [38]PC AMD 1533MHz CPU, 768 MB, Windows XP, Microsoft Visual C++ 6.0
TSSA (TA), [39]PC Pentium IV 3.0GHz, Visual C++
HPSO (HO), [40]PC, AMD Athlon 1700+ (1.47 GHz), Visual C++
TGA, [41]PC 2.2 GHz, 8GB RAM, GNU gcc compiler
IEBO (IO), [42]2.93 GHz, Intel Xeon X5670, GNU g++ compiler
TS/PR, [43]PC Quad-Core AMD Athlon 3 GHz, 2GB, Windows 7, C++
UPLA, [44](UP) Intel CoreTM i5, processor M580 2.67 GHz, 6GB, C#
ALSGA (AG), [45]Intel core 2 duo, 2.93 GHz, 2.0GB, Java Agent DEvelopment platform (JADE)
GA-CPG-GT (GT), [46]PC 3.40 GHz Intel(R) Core (TM) i7-3770, 8GB, C++
SACT (ST), this workWorkstation PowerEdge T320, Intel® Xeon® Processor E5-2470 v2, 10cores, 3.10 GHz each, 24GB, Windows Vista Ultimate 64 bits O.S, Visual C++ 2008, MFC library

References

  1. Garey, M.R.; Johnson, D.S. Computers and Intractability: A Guide to the Theory of NP-Completeness; W.H. Freeman and Company: New York, NY, USA, 1990; p. 340. [Google Scholar]
  2. Perregaard, M.; Clausen, J. Parallel branch-and-bound methods for thejob-shop scheduling problem. Ann. Oper. Res. 1998, 83, 137–160. [Google Scholar]
  3. Ku, W.-Y.; Beck, J.C. Mixed Integer Programming models for job shop scheduling: A computational analysis. Comput. Oper. Res. 2016, 73, 165–173. [Google Scholar] [CrossRef] [Green Version]
  4. Dabah, A.; Bendjoudi, A.; El-Baz, D.; AitZai, A. GPU-Based Two Level Parallel B&B for the Blocking Job Shop Scheduling Problem. In Proceedings of the 2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), Chicago, IL, USA, 23–27 May 2016; pp. 747–755. [Google Scholar]
  5. AitZai, A.; Boudhar, M. Parallel branch-and-bound and parallel PSO algorithms for job shop scheduling problem with blocking. Int. J. Oper. Res. 2013, 16, 14. [Google Scholar] [CrossRef]
  6. Der, U.; Steinhöfel, K. A Parallel implementation of a job shop scheduling heuristic. In Applied Parallel Computing. New Paradigms for HPC in Industry and Academia, PARA 2000; Sørevik, T., Manne, F., Gebremedhin, A.H., Moe, R., Eds.; Springer-Verlag: Berlin, Germany, 2001; pp. 215–222. [Google Scholar]
  7. Steinhöfel, K.; Albrecht, A.; Wong, C. An experimental analysis of local minima to improve neighbourhood search. Comput. Oper. Res. 2003, 30, 2157–2173. [Google Scholar] [CrossRef]
  8. Aydin, M.E.; Fogarty, T.C. A Distributed Evolutionary Simulated Annealing Algorithm for Combinatorial Optimisation Problems. J. Heuristics 2004, 10, 269–292. [Google Scholar] [CrossRef] [Green Version]
  9. Skakovski, A.; Jędrzejowicz, P. An island-based differential evolution algorithm with the multi-size populations. Expert Syst. Appl. 2019, 126, 308–320. [Google Scholar] [CrossRef]
  10. Yamada, T. A genetic algorithm with multi-step crossover for job-shop scheduling problems. In Proceedings of the 1st International Conference on Genetic Algorithms in Engineering Systems: Innovations and Applications (GALESIA), Sheffield, UK, 12–14 September 1995; pp. 146–151. [Google Scholar]
  11. Yamada, T.; Nakano, R. A fusion of crossover and local search. In Proceedings of the IEEE International Conference on Industrial Technology (ICIT'96), Shanghai, China, 2–6 December 1996; pp. 426–430. [Google Scholar]
  12. Nakano, R.; Yamada, T. Conventional genetic algorithm for job-shop problems. In Proceedings of the 4th International Conference on Genetic Algorithms, San Diego, CA, USA, July 1991; pp. 474–479. [Google Scholar]
  13. Wendt, O.; König, W. Cooperative Simulated Annealing: How Much Cooperation Is Enough? Research Report; Frankfurt University: Frankfurt, Germany, 1997; pp. 1–19, unpublished. [Google Scholar]
  14. Rakkiannan, T.; Palanisamy, B. Hybridization of Genetic Algorithm with Parallel Implementation of Simulated Annealing for Job Shop Scheduling. Am. J. Appl. Sci. 2012, 9, 1694–1705. [Google Scholar] [Green Version]
  15. Spanos, A.C.; Ponis, S.T.; Tatsiopoulos, I.P.; Christou, I.T.; Rokou, E. A new hybrid parallel genetic algorithm for the job-shop scheduling problem. Int. Trans. Oper. Res. 2014, 21, 479–499. [Google Scholar] [CrossRef]
  16. Yusof, R.; Khalid, M.; Hui, G.T.; Yusof, S.M.; Othman, M.F. Solving job shop scheduling problem using a hybrid parallel micro genetic algorithm. Appl. Soft Comput. 2011, 11, 5782–5792. [Google Scholar] [CrossRef]
  17. Mùi, N.H.; Hòa, V.D.; Tuyên, L.T. A parallel genetic algorithm for the job shop scheduling problem. In Proceedings of the 2012 IEEE International Symposium on Signal Processing and Information Technology (ISSPIT), Ho Chi Minh City, Vietnam, 12–15 December 2012; pp. 19–24. [Google Scholar]
  18. Yoo, M.J.; Müller, J.P. Using multi-agent system for dynamic job shop scheduling. In Proceedings of the 4th-ICEIS, Ciudad Real, Spain, 30 January 2002; pp. 1–8. [Google Scholar]
  19. Asadzadeh, L.; Zamanifar, K. An agent-based parallel approach for the job shop scheduling problem with genetic algorithms. Math. Comput. Model. 2010, 52, 1957–1965. [Google Scholar] [CrossRef]
  20. Beasley, J.E. OR-Library: Distributing Test Problems by Electronic Mail. J. Oper. Res. Soc. 1990, 41, 1069. [Google Scholar] [CrossRef]
  21. Demirkol, E.; Mehta, S.; Uzsoy, R. A Computational Study of Shifting Bottleneck Procedures for Shop Scheduling Problems. J. Heuristics 1997, 3, 111–137. [Google Scholar] [CrossRef]
  22. Watson, J.-P.; Beck, J.; Howe, A.E.; Whitley, L. Problem difficulty for tabu search in job-shop scheduling. Artif. Intell. 2003, 143, 189–217. [Google Scholar] [CrossRef] [Green Version]
  23. Goncalves, J.F.; Resende, M.G.C. An extended akers graphical method with a biased random-key genetic algorithm for job-shop scheduling. Int. Trans. Oper. Res. 2014, 21, 215–246. [Google Scholar] [CrossRef]
  24. Kolonko, M. Some new results on simulated annealing applied to the job shop scheduling problem. Eur. J. Oper. Res. 1999, 113, 123–136. [Google Scholar] [CrossRef]
  25. Kuo-Ling, H.; Ching-Jong, L. Ant colony optimization combined with taboo search for the job shop scheduling problem. Comput. Oper. Res. 2008, 35, 1030–1046. [Google Scholar] [CrossRef]
  26. Sha, D.; Hsu, C.-Y. A hybrid particle swarm optimization for job shop scheduling problem. Comput. Ind. Eng. 2006, 51, 791–808. [Google Scholar] [CrossRef]
  27. Kurdi, M. A new hybrid island model genetic algorithm for job shop scheduling problem. Comput. Ind. Eng. 2015, 88, 273–283. [Google Scholar] [CrossRef]
  28. Kurdi, M. An effective new island model genetic algorithm for job shop scheduling problem. Comput. Oper. Res. 2016, 67, 132–142. [Google Scholar] [CrossRef]
  29. Kurdi, M. An improved island model memetic algorithm with a new cooperation phase for multi-objective job shop scheduling problem. Comput. Ind. Eng. 2017, 111, 183–201. [Google Scholar] [CrossRef]
  30. Hernández-Ramírez, L.; Frausto-Solis, J.; Castilla-Valdez, G.; González-Barbosa, J.J.; Terán-Villanueva, D.; Morales-Rodríguez, M.L. A hybrid simulated annealing for job shop scheduling problem. Int. J. Comb. Optim. Probl. Inform. 2019, 10, 6–15. [Google Scholar]
  31. Amirghasemi, M.; Zamani, R.; Amirghasemi, M. An effective asexual genetic algorithm for solving the job shop scheduling problem. Comput. Ind. Eng. 2015, 83, 123–138. [Google Scholar] [CrossRef] [Green Version]
  32. Nagata, Y.; Ono, I. A guided local search with iterative ejections of bottleneck operations for the job shop scheduling problem. Comput. Oper. Res. 2018, 90, 60–71. [Google Scholar] [CrossRef]
  33. Peng, B.; Lu, Z.; Cheng, T. A tabu search/path relinking algorithm to solve the job shop scheduling problem. Comput. Oper. Res. 2015, 53, 154–164. [Google Scholar] [CrossRef]
  34. Cruz-Chávez, M.A. Neighborhood generation mechanism applied in simulated annealing to job shop scheduling problems. Int. J. Syst. Sci. 2015, 46, 2673–2685. [Google Scholar] [CrossRef]
  35. Aksenov, V. Synchronization Costs in Parallel Programs and Concurrent Data Structures. Distributed, Parallel, and Cluster Computing [cs.DC]. ITMO University. Paris Diderot University. Available online: https://hal.inria.fr/tel-01887505/document (accessed on 4 October 2018).
  36. Tanenbaum, A.S.; Bos, H. Modern Operating Systems, 4th ed.; Pearson Education: Amsterdan, The Netherlands, 2016; p. 1136. [Google Scholar]
  37. Visual Studio 2019. MFC Desktop Applications. Available online: https://docs.microsoft.com/es-es/cpp/mfc/mfc-desktop-applications?view=vs-2019 (accessed on 27 July 2019).
  38. Pongchairerks, P. A Two-Level Metaheuristic Algorithm for the Job-Shop Scheduling Problem. Complexity 2019, 2019, 8683472. [Google Scholar] [CrossRef]
  39. Asadzadeh, L. A local search genetic algorithm for the job shop scheduling problem with intelligent agents. Comput. Ind. Eng. 2015, 85, 376–383. [Google Scholar] [CrossRef]
  40. Kurdi, M. An effective genetic algorithm with a critical-path-guided Giffler and Thompson crossover operator for job shop scheduling problem. Int. J. Intell. Syst. Appl. Eng. 2019, 7, 13–18. [Google Scholar] [CrossRef] [Green Version]
  41. Asadzadeh, L. A parallel artificial bee colony algorithm for the job shop scheduling problem with a dynamic migration strategy. Comput. Ind. Eng. 2016, 102, 359–367. [Google Scholar] [CrossRef]
  42. Cruz-Chávez, M.A.; Cruz-Rosales, M.H.; Zavala-Díaz, J.C.; Hernández-Aguilar, J.A.; Rodríguez-León, A.; Prince-Avelino, J.C.; Luna, M.E.; Salina, O.H. Hybrid Micro Genetic Multi-Population Algorithm with Collective Communication for the Job Shop Scheduling Problem. IEEE Access 2019, 7, 82358–82376. [Google Scholar] [CrossRef]
  43. Bryson, K. Global HPC Leaders Join to Support New Platform; NVIDIA: Santa Clara, CA, USA, 2019; Available online: https://nvidianews.nvidia.com/news/nvidia-brings-cuda-to-arm-enabling-new-path-to-exascale-supercomputing (accessed on 29 July 2019).
  44. Lakin, D. How to Use the Same Thread Function for Multiple Threads (Safely). 2019. Available online: https://www.codeproject.com/Articles/1149/How-to-use-the-same-thread-function-for-multiple-t (accessed on 28 May 2001).
  45. Amirghasemi, M.; Zamani, R. A synergetic combination of small and large neighborhood schemes in developing an effective procedure for solving the job shop scheduling problem. SpringerPlus 2014, 3, 193. [Google Scholar] [CrossRef] [PubMed] [Green Version]
  46. Zhang, C.Y.; Li, P.; Rao, Y.; Guan, Z. A very fast TS/SA algorithm for the job shop scheduling problem. Comput. Oper. Res. 2008, 35, 282–294. [Google Scholar] [CrossRef]
Figure 1. Job shop scheduling with three jobs and three machines.
Figure 1. Job shop scheduling with three jobs and three machines.
Applsci 09 03360 g001
Figure 2. Generation of neighbors.
Figure 2. Generation of neighbors.
Applsci 09 03360 g002
Figure 3. Communication of threads in SACT for sharing information using critical sections.
Figure 3. Communication of threads in SACT for sharing information using critical sections.
Applsci 09 03360 g003
Figure 4. YN1-20 × 20. Performance of cooperation with different numbers of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Figure 4. YN1-20 × 20. Performance of cooperation with different numbers of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Applsci 09 03360 g004
Figure 5. YN2-20 × 20. Performance of cooperation with different numbers of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Figure 5. YN2-20 × 20. Performance of cooperation with different numbers of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Applsci 09 03360 g005
Figure 6. YN3-20 × 20. Performance of cooperation with different numbers of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.4.
Figure 6. YN3-20 × 20. Performance of cooperation with different numbers of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.4.
Applsci 09 03360 g006
Figure 7. YN4-20 × 20. Performance of cooperation with threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address procedure.
Figure 7. YN4-20 × 20. Performance of cooperation with threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address procedure.
Applsci 09 03360 g007
Figure 8. YN1-20 × 20. Solution diversity with different number of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Figure 8. YN1-20 × 20. Solution diversity with different number of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Applsci 09 03360 g008
Figure 9. YN2-20 × 20. Solution diversity with different number of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Figure 9. YN2-20 × 20. Solution diversity with different number of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Applsci 09 03360 g009
Figure 10. YN3-20 × 20. Solution diversity with different number of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Figure 10. YN3-20 × 20. Solution diversity with different number of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Applsci 09 03360 g010
Figure 11. YN4-20 × 20. Solution diversity with different number of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Figure 11. YN4-20 × 20. Solution diversity with different number of threads. Average of 30 tests. (a) Without effective-address. (b) With effective-address.
Applsci 09 03360 g011
Figure 12. Effect of the effective-address procedure on the convergence of SACT for long times. YN1-20 × 20. H32.
Figure 12. Effect of the effective-address procedure on the convergence of SACT for long times. YN1-20 × 20. H32.
Applsci 09 03360 g012
Figure 13. SACT, bar plots YN1, YN1, YN3, YN4. (a) SACT, YN1 (30 tests). (b) SACT YN2 (30 tests). (c) SACT, YN3 (30 tests). (d) SACT, YN4 (30 tests).
Figure 13. SACT, bar plots YN1, YN1, YN3, YN4. (a) SACT, YN1 (30 tests). (b) SACT YN2 (30 tests). (c) SACT, YN3 (30 tests). (d) SACT, YN4 (30 tests).
Applsci 09 03360 g013aApplsci 09 03360 g013b
Figure 14. SACT bar plots DMU06, DMU07, DMU08, DMU09, DMU10. (a) SACT, DMU06 (30 tests). (b) SACT, DMU07 (30 tests). (c) SACT, DMU08 (30 tests). (d) SACT, DMU09 (30 tests). (e) SACT, DMU10 (30 tests).
Figure 14. SACT bar plots DMU06, DMU07, DMU08, DMU09, DMU10. (a) SACT, DMU06 (30 tests). (b) SACT, DMU07 (30 tests). (c) SACT, DMU08 (30 tests). (d) SACT, DMU09 (30 tests). (e) SACT, DMU10 (30 tests).
Applsci 09 03360 g014
Figure 15. SACT bar plots DMU46, DMU47, DMU48, DMU49, DMU50. (a) SACT, DMU46 (30 tests). (b) SACT, DMU47 (30 tests). (c) SACT, DMU48 (30 tests). (d) SACT, DMU49 (30 tests). (e) SACT, DMU50 (30 tests).
Figure 15. SACT bar plots DMU46, DMU47, DMU48, DMU49, DMU50. (a) SACT, DMU46 (30 tests). (b) SACT, DMU47 (30 tests). (c) SACT, DMU48 (30 tests). (d) SACT, DMU49 (30 tests). (e) SACT, DMU50 (30 tests).
Applsci 09 03360 g015aApplsci 09 03360 g015b
Figure 16. Relative error, average of five tests, JSSP 15 × 15.
Figure 16. Relative error, average of five tests, JSSP 15 × 15.
Applsci 09 03360 g016
Figure 17. Relative error, average of thirty tests, JSSP 20 × 20.
Figure 17. Relative error, average of thirty tests, JSSP 20 × 20.
Applsci 09 03360 g017
Figure 18. Relative error for thirty executions of problems DMU (06–10) of JSSP 20 × 20.
Figure 18. Relative error for thirty executions of problems DMU (06–10) of JSSP 20 × 20.
Applsci 09 03360 g018
Figure 19. Scheduling Gantt chart of the problem DMU08.
Figure 19. Scheduling Gantt chart of the problem DMU08.
Applsci 09 03360 g019
Figure 20. Scheduling Gantt chart of the problem DMU46
Figure 20. Scheduling Gantt chart of the problem DMU46
Applsci 09 03360 g020
Figure 21. SACT algorithm, speedup for benchmarks 20 × 20 (YN1, YN2, YN3, and YN4).
Figure 21. SACT algorithm, speedup for benchmarks 20 × 20 (YN1, YN2, YN3, and YN4).
Applsci 09 03360 g021
Table 1. Tuned parameters of simulated annealing.
Table 1. Tuned parameters of simulated annealing.
ProblemCoCfαMCUB = f(S)
Size 6 × 6
FT068001.00.983080
Size 10 × 10
FT10251.00.9810002500
ORB and ABZ64,0001.00.9810002500
Size 15 × 15
LA16 to LA2064,0001.00.9810002500
LA36 to LA4021 × 10−60.993002500
TA01 to TA10251.00.988002500
Size 20 × 20
TA21 to TA3021 × 10−60.993003500
YN21 × 10−60.993002000
DMU06 to DMU1025 × 10−60.993009000
DMU46 to DMU501000.050.9960009500
Table 2. Efficacy of SACT with cooperation and without effective-address procedure as a function of the threads executed.
Table 2. Efficacy of SACT with cooperation and without effective-address procedure as a function of the threads executed.
ProblemThreads
B e s t   W o r s t
YN1H40–H16H16H48H8H32H1
YN2H40–H32H32H8H48H16H1
YN3H32H48H40H16H8H1
YN4H16H32H40H48H8H1
Table 3. Efficacy of SACT with cooperation and with effective-address procedure as a function of the threads executed.
Table 3. Efficacy of SACT with cooperation and with effective-address procedure as a function of the threads executed.
ProblemThreads
B e s t   W o r s t
YN1H48H32H16H8H40H1
YN2H48–H40H40H32H16H8H1
YN3H40–H48H48H32H16H8H1
YN4H48H32H8H16H40H1
Table 4. SACT results, small benchmarks JSSP (10 × 10).
Table 4. SACT results, small benchmarks JSSP (10 × 10).
ProblemOptimum
Units of Time
Better
Units of Time
Worse
Units of Time
Mean
Units of Time
%REσt SecMedianMode
FT65555555500.00.035555
FT1093093093093000.01.05930930
LA1694594594594500.05.1945945
LA1778478478478400.04.9784784
L1884884884884800.04.2848848
LA1984284284284200.04.1842842
LA2090290290290200.04.34902902
ORB01105910591059105900.013.6310591059
ORB0288888888988900.49720889889
ORB03100510051021101706.9104810201021
ORB04100510051005100500.015510051005
ORB0588788789088801.61354887887
ORB06101010101010101000.05910101010
ORB0739739739739700.04.95397397
ORB0889989989989900.010.33899899
ORB0993493493493400.05934934
ORB1094494494494400.04.84944944
ABZ5123412341234123400.012.6212341234
ABZ694394394394300.04.23943943
Table 5. SACT results, medium benchmarks JSSP (15 × 15).
Table 5. SACT results, medium benchmarks JSSP (15 × 15).
ProblemOptimum
Units of Time
Better
Units of Time
Worse
Units of Time
Mean
Units of Time
%REσt SecMedianMode
LA36126812681281127506.1371.612781268
LA37139713971399139700.923013971397
LA381196119612451216020.65512181196
LA39123312331237123401.85412331233
LA40122212221234122703.4224512281229
TA01123112311231123100.032812311231
TA02124412441244124400.050112441244
TA03121812181223122102.3437312211223
TA04117511751175117500.030111751175
TA05122412241231122902.8221812301230
TA06123812381240123900.8509012391239
TA07122712271228122800.49912281228
TA08121712171224122003.0198612181218
TA09127412741281127703.6143312741274
TA10124112411253124504.6383012441244
Table 6. SACT results, large benchmarks JSSP (20 × 20).
Table 6. SACT results, large benchmarks JSSP (20 × 20).
ProblemUB
Units of Time
Better
Units of Time
Worse
Units of Time
Mean
Units of Time
%REσt SecMedianMode
TA2116421646177216830.2418.1193816811665
TA221600160016801637013.1347616361644
TA2315571560162816000.1915.5168115981598
TA2416461651169316810.314.439716831670
TA2515951597166916330.1317.9220816341649
TA2616431651171616840.4915.6454716811680
TA2716801682171217010.126.517361700.51698
TA2816031617163916250.876.6137416231622
TA2916251627164216310.124.948761628.51627
TA30158415841618160706.064291608.51606
DMU0632443254338133210.3130.426733193307
DMU0730463065322331270.6237.531923122.53118
DMU0831883192338532550.1341.8169632533202
DMU0930923121323131740.9429.519123173.53228
DMU1029843001308430420.5723.124630413032
DMU4640354133418941712.4313.9342441724176
DMU4739424024409440702.0813.912444073.54074
DMU4837633856398839072.4720.985839063908
DMU4937103822387138513.0221.3830139063902
DMU5037293829390738822.6816.252813881.53881
YN18848859058960.114.51558895.5896
YN29049069309170.226.43353916913
YN389289291590305.92459903.5904
YN496896899097805.83525977.5974
Table 7. Efficiency and efficacy results for FT and LA benchmarks.
Table 7. Efficiency and efficacy results for FT and LA benchmarks.
ProbOpSTt SecBGt SecSGt SecAMt SecTAt SecSGSt SecTGAt SecTS/PRt SecUPt SecHOt SecGTAG
%RE
Size 10 × 10
FT1093001.05010.1----064.603.81.855700.0604.750120804.10.540
LA1694505.104.6038.8--------030400.09400.1501458019.90.110.10
LA1778404.904.6----------------00.01600.08078019.900
LA1884804.204.6----------------00.01500.09076019.900
LA1984204.104.6034.6----00.5----00.02500.1601130019.901.18
LA2090204.3404.6----------------00.03100.1101304019.90.550.55
Size 15 × 15
LA3612680371.6021.404655036.609.9----00.5704.50.7948,38701053.16--
LA3713970230021.40.2941440879.6042.1----00.51026.20.7249,83601056.59--
LA381196055021.40.425049055.4047.8----01.25032.61.5950,87601056.61--
LA391233054021.4----065.7028.6----00.5011.61.3850,60301054.62--
LA40122202245021.40.3345440.16941.40.1652.1----0.160.8603850.5750,6090.161052.46--
Table 8. Efficiency and efficacy for orb, ABZ, TA, DMU, and YN benchmarks.
Table 8. Efficiency and efficacy for orb, ABZ, TA, DMU, and YN benchmarks.
ProblemOp/UBSTt SecBGt SecAMt SecTSSAt SecSGST SecTGAt SecIOt SecTS/PRt SecUPt SecGTAG
%RE
Size 10 × 10
ORB01105904.3405.8056.603.5034200.06----00.51023122.363.12
ORB028880972005.80569.306.40.130600.06----01.690.1123930.230.68
ORB0310050104805.80403.7013.81.233000.15----01.46023583.182.39
ORB041005015505.8017.9014.3030600.45----03.7107962.291.09
ORB058870135405.80670.306.6036600.76----07.280.2324580.791.58
ORB06101005905.8----08.5----00.72----01.810.3025252.481.78
ORB0739704.9505.8----00.5----00.02----00.13020961.762.02
ORB08899010.3305.8-----07.2----00.09----03.99023384.231.67
ORB099340505.8----00.4----00.09----00.4708840.960.96
ORB1094404.8405.8----00.3----00.03----00.0908172.44--
ABZ51234012.62----0501.9--------00.04------------0.32--
ABZ694304.23----0199.3--------00.03------------0.42--
Size 15 × 15
TA0112310328030.401531.4011.23.12782----012402.93--------
TA0212440501030.40685.2030.1--------0118038--------
TA03121804373030.40.161833.70108.5--------0120044--------
TA0411750301030.401186.2071.7--------0117039--------
TA05122402218030.40.331492.6010.8--------0120011--------
TA06123805090030.401549.10125.2--------01130178--------
TA0712270.08990.08130.40.0816870.08138.6--------01170.080.60--------
TA08121701986030.40968.4027.6--------010802.43--------
TA09127401433030.401694.2061.3--------0127019--------
TA10124103380030.401418.2068--------0122042--------
Size 20 × 20
TA2116420.2419380143.20.314158.40.12437--------04080.12503--------
TA221600034760143.20.063586.40433.5--------03950229--------
TA2315570.1916810143.20.194175.70.19429.4--------03900360--------
TA2416440.433970.12143.20.493320.20.12431.6--------0.124350.06779--------
TA2515950.1322080143.20.133654.30.13421--------04140416--------
TA2616430.4945470143.20.553178.80.24436.2--------0870.24268--------
TA2716800.1217360143.20.363523.80447.8--------04230255--------
TA2816030.8713740143.20.943804.80431.2--------03700.62326--------
TA2916250.1248760143.20.123324.90.12426.2--------0396094--------
TA301584064290143.20.694003.50436.1--------04290389--------
DMU0632440.312670145.4--------------------0.03823--------
DMU0730460.6231920145.4--------------------0361--------
DMU0831880.1316960145.4--------------------0296--------
DMU0930920.9419120145.4--------------------0.07148--------
DMU1029840.572460145.4--------------------0.03253--------
DMU4640352.4334240187.7---------------------0985--------
DMU4739392.1512440187.7---------------------0.08829--------
DMU4837632.478580.48187.7-------------------0.40939--------
DMU4937103.0283010.35187.7--------------------0634--------
DMU5037292.6852810.08187.7--------------------0610--------
YN18840.1115580105.2----0106.60.215,7860.2392.801900169---- --
YN29040.2233530105.2----0.33110.44.414,5860.7713.101970202--------
YN3892024590105.2----0110.81.316,6620.5637.202120344--------
YN49670.135250.1105.2----0.21108.72.1714,7520.83114.10.10---0.10321--------
Table 9. Parallel algorithms, efficacy for FT, LA, ORB, TA, DMU, and YN benchmarks.
Table 9. Parallel algorithms, efficacy for FT, LA, ORB, TA, DMU, and YN benchmarks.
ProblemSizeOp/UB%RE
SACTPPSOcGA-PRPaGAHGAPSAHIMGANIMGAIIMMAPGSPABCHG
FT066 × 6550----0--00000--
FT1010 × 109300--07.2--0000.900
LA1610 × 10945029--5.2--00.110--00
LA1710 × 10784033--1.2--000--00
LA1810 × 10848033--1.4--000--00
LA1910 × 10842037--3.7--000--00
LA2010 × 10902032--1.1--00.550--0.550
LA3615 × 151268065----0.8701.970----0
LA3715 × 151397058----0.7903.010----0
LA3815 × 1511960681.0--1.9202.170----0
LA3915 × 151233067----1.0502.110----0
LA4015 × 1512220681.31--1.560.161.960.16----0
ORB0110 × 1010590--08.5--0000--0
ORB0210 × 108880----4.6--00.2300.1--0
ORB0310 × 1010050--012.3--02.0900--0
ORB0410 × 1010050--05.7--01.3900--0
ORB0510 × 108870----5.5--00.6800--0
ORB0610 × 1010100----4.0--00.200----0
ORB0710 × 103970----4.8--000----0
ORB0810 × 108990--012.4--01.110----0
ORB0910 × 109340----6.4--00.860----0
ORB1010 × 109440--0----0--0----0
TA2120 × 2016420.24--0.49----0.49----------
TA2220 × 2016000--0.38----------------
TA2320 × 2015570.19--0.19----------------
TA2420 × 2016460.3--0.36----------------
TA2520 × 2015950.13--0.13----------------
TA2620 × 2016430.49--0.55----------------
TA2720 × 2016800.12--0.36----------------
TA2820 × 2016030.87--0.87----------------
TA2920 × 2016250.12--0.25----------------
TA3020 × 2015840--0----------------
DMU0620 × 2032440.31--0.52--------------0.74
DMU0720 × 2030460.62--1.15--------------0.59
DMU0820 × 2031880.13--0.53--------------0
DMU0920 × 2030920.94--0.13--------------0.59
DMU1020 × 2029840.57--0.84--------------0.10
YN120 × 208840.11--2.49----1.01--0.221.4--0.23
YN220 × 209040.22--1.77----0.99--0.551.2--0.33
YN320 × 208920--1.01----0.90--0.340.9--0
YN420 × 209670.1--1.45----0.93--0.211.76--0.21

Share and Cite

MDPI and ACS Style

Cruz-Chávez, M.A.; Peralta-Abarca, J.d.C.; Cruz-Rosales, M.H. Cooperative Threads with Effective-Address in Simulated Annealing Algorithm to Job Shop Scheduling Problems. Appl. Sci. 2019, 9, 3360. https://doi.org/10.3390/app9163360

AMA Style

Cruz-Chávez MA, Peralta-Abarca JdC, Cruz-Rosales MH. Cooperative Threads with Effective-Address in Simulated Annealing Algorithm to Job Shop Scheduling Problems. Applied Sciences. 2019; 9(16):3360. https://doi.org/10.3390/app9163360

Chicago/Turabian Style

Cruz-Chávez, Marco Antonio, Jesús del C. Peralta-Abarca, and Martín H. Cruz-Rosales. 2019. "Cooperative Threads with Effective-Address in Simulated Annealing Algorithm to Job Shop Scheduling Problems" Applied Sciences 9, no. 16: 3360. https://doi.org/10.3390/app9163360

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop