## 1 Introduction  
The industrial world today is characterized by much more complex systems and machines than in the past [1]. Companies are increasingly investing in integrating complex systems to boost their productivity and efficiency to gain an edge over their competitors. Hence, in modern companies, it is easy to see automated storage and retrieval systems (AV/RS) [2; 3], automated guided vehicles (AGVs) [4; 5], advanced software for transports optimization or production scheduling, and complex software architectures with a high level of parallelism. A similar process happened in cities, hospitals, airports and everyday services, where it is more and more common to see activities like car-sharing [6], bike-sharing [7], ride-sharing [8], short-term rental, and advanced management of personnel and flights [9]. These are all examples of real systems with a high degree of dynamism that require a good level of organization between different events and continuous process optimization. Figure 1 shows an illustrative example of a dynamic optimization problem with synchronization issues. A total of three agents, initially located at an origin depot (O), have to visit a series of locations (numbered from 1 to 9) and then return to a destination depot (D). In order to move around the system, these agents employ a ride-sharing service provided by two vehicles. The box size associated with each location corresponds to the time each agent or vehicle spends at that location. In the solution depicted in this figure, vehicle 1 drives agent 1 to location 1, then takes agent 2 to location 5, and then drives agent 1 to locations 2 and 3 before leaving this agent at D. Similarly, vehicle 2 will drive agent 2 to location 4, then agent 3 to locations 7 and 8, then agent 2 again to location 6,agent 3 to location 9, and finally agents 2 and 3 to D. Of course, in order for this solution to be feasible, we need to make sure that the vehicles can complete the assigned tasks on time (synchronization issue), which might depend upon which locations are assigned to each agent and which vehicle is assigned to each trip. Here, a goal such as finding a feasible solution that minimizes the total time invested in completing all the routing processes (makespan) could be considered, and many alternative solutions could be tested for feasibility and makespan value. Due to the complexity of these systems, classical optimization approaches risk being ineffective or even detrimental. In fact, all classical optimization approaches (e.g., linear programming, dynamic programming, heuristics, metaheuristics, etc.) are based on the optimization of an objective function. If this objective function does not correctly represent the variables to be optimized in a system, the effort involved in the optimization model is almost useless. Following the seminal work of [PERSON] et al. (1999), this paper describes a hybrid approach which combines concepts from discrete-event simulation (DES) ([PERSON] et al., 2009) with heuristic algorithms ([PERSON] et al., 2009) and biased-randomized techniques ([PERSON] et al., 2010). As we will discuss in this paper, the 'discrete-event heuristic' (DEH) approach allows us to efficiently deal with time dependencies and synchronization issues in dynamic optimization problems. The heuristic component allows the computation of effective solutions according to the problem constraints, while the DES enables the consistent estimation of the effect the provided solutions might have on the system. A DES is understood as a dynamic system that evolves by the occurrence of a series of discrete events ([PERSON] et al., 2010). The logic of discrete-event systems is found in multidisciplinary fields such as manufacturing systems, communication networks, traffic systems, computer systems, among others ([PERSON] et al., 2010), and it could be used to represent both simple and complex processes, regardless of whether or not they present stochasticity.