## 4 Industrial Implementation
The scheduling request followed the structure defined within the agent's AAS and contained the information for the scheduling problem that needed to be optimized. Before moving to the optimization, the agent should make the decision of which optimizer/scheduler to use. As long as the agent had already defined the connections with the schedulers and had received a collection of environment, constraints, and objectives that were compatible with each algorithm, it needed to classify the problem and match it with any compatible schedulers. The scheduler selection algorithm implemented a specific set of rules linked to each type of environment and constraints over the production data and assigned the corresponding notations to the scheduling request. Once this process was performed, the agent excluded the non-compatible algorithms and selected one of the remaining ones. Now, the process for selecting among the remaining algorithms had to do with performance. In this case, each algorithm had a parameterized method based on the number of resources and jobs and returned an estimation of the scheduling time required. The agent would select the closest to the demand given by the request. In cases where there was no demand, all the schedulers would be used simultaneously, and multiple scheduling responses would be produced. A similar procedure could take place for scheduling requests coming from outside the MAS. The AAS platform, rather than hosting the AAS elements' values, also provided endpoints for the AAS operations. Any third-party components, in this case, the UI, could request a new schedule by posting the request over the AAS platform on the operation public URL. An MQTT connection between the AAS and the agent in Janus was established, and the same process would be followed in order to be able to broadcast the response back to the UI. The different software components are displayed in Figure 6, showing the software and hardware deployment architecture for industrial implementation, including the hardware devices (servers) utilized for the specific industrial case. The shopfloor UI, as the name suggests, should be deployed on the production line, allowing the user to interact with the MAS and display the results. The shopfloor UI was a Java web application installed locally  
Figure 5: Class diagram implementation of agent in Janus. on the shopfloor computer on the factory site, while it was integrated with information coming from the ERP database. The connection between the ERP DB and the UI was made using SQL queries, loading all the production orders that are to be produced within the upcoming days. The AAS platform was also installed on the local production network, holding information about the agents deployed for the specific use case. During the initialization, the MAS will recall these AAS files in order to deploy the different scheduling agents and define the connection between the agents and the schedulers. The MAS was also installed on a Virtual Machine (VM) on the local network. The algorithms/schedulers, however, were deployed on a different server outside of the industrial network. The specific VM required the highest specifications for memory and performance as it contained the optimization processes of the framework. It used 32 GB of RAM and an Intel (R) Core (TM) i7-10700 CPU @ 2.90 GHz. The industrial case came from a bicycle Original Equipment Manufacturing (OEM) industry specifically for the departments of painting and wheel assembly. Three different schedulers were deployed: (1) a heuristic multi-objective scheduling framework, (2) a Mixed Integer Programming [68] (MIP) model optimizer for production scheduling, and (3) a deep reinforcement learning (DRL) scheduler for dynamic production scheduling. For the latter two (2, 3), two Flask applications were deployed to integrate the algorithms as REST services. Similarly, for the heuristic scheduler, a Java REST service was developed. On top of that, a RabbitMQ broker was used in order to return information regarding the status of the optimization process.