# Smart Manufacturing Scheduling Approaches--Systematic Review and Future Directions
## 2 Manufacturing Scheduling
Production scheduling aims to efficiently allocate the available resources and reach a predefined goal since scheduling is a process of optimizing work and time. A scheduling problem may be described as an environment composed of one or more machines, with specific characteristics, and a set of jobs (products with one or more operations that will be processed by the machines). The goal is to optimize an objective or group of objectives by assigning each job to a specific machine in a specific time in order to be processed, while conflicts between operations are avoided [22]. Succinctly, scheduling determines what is going to be carried out and where this will happen and with what resources. Manufacturing processes can be very dynamic. Even in environments where the processes happening on the shopfloor are always the same and known in advance, they can be affected by one or another disturbance that forces all production to stop until the problem is solved. Although some years ago manufacturing systems were not ready for this change and were not efficient enough to deal with these disturbances, nowadays, manufacturing is becoming more adaptive, dynamic, and highly flexible to meet market requirements and adjusts to every change that may improve the process. This is even more important in the era of the emergence of mass individualization, where the disturbances in the production line can be even more significant. In order to minimize the unexpected events and improve the overall production performance, one of the key challenges is to develop reliable and robust scheduling solutions. 14.0 scheduling approaches should be designed to deal with these smart and dynamic manufacturing systems and their new technologies. Although this has been studied for decades, complex and robust scheduling solutions are frequently disregarded in real manufacturing scenarios, where they are sometimes carried out manually, on data sheets, or on simple or limited software programs. These solutions frequently lead to significant errors since they do not consider the current status of the shopfloor and are not adaptive to different scenarios. Though, more robust solutions are not implemented mainly due to the complexity of implementing them in large-scale systems with real-time constraints, since it is considered to be a non-deterministic polynomial-time hard combinatorial optimization problem which is quite difficult to reach an optimal solution for with traditional optimization techniques [23]. However, scheduling optimization has direct impacts on the production efficiency, sustainability, and also on costs of manufacturing systems and must be developed to its full capabilities [5; 24]. Most researchers assume some constraints, such as that resources are always available or that the processing time of a job is known in advance and remains constant during the entire process, but in real systems this is not always true. Disturbances may occur during the production process, which lead to a rescheduling that should be performed as fast as possible. These disturbances can be the arrival of new orders, canceled orders, or machine breakdowns which lead to the machine's unavailability, or some emergency event [5; 25]. Additionally, job processing times may increase over time, which is a situation knowing as _deterioration of resources_ in scheduling problems [26], or even decrease when there is a learning factor or the workload can be reinforced [27]. Consequently, to adapt to the manufacturing system, it is vital that the scheduling process is dynamic and quick to avoid unnecessary system downtimes and costs. In flexible and agile manufacturing environments, products can have several different feasible processing plans and most of the time it is very hard to find a good one for all the products. Production scheduling is a very important decision making in a factory and it can be a difficult problem depending on the number of calculations necessary to obtain a schedule that gives an optimal or near-optimal solution for the given objectives [19].