## 2 The Model  
We used the NetLogo software [43] to implement our model. NetLogo is an agent-based programming language as well as an integrated development environment (IDE) that provides a comprehensive environment, from the implementation of the simulation model to the creation of the graphical interface supporting the simulation. The graphical interface typically includes various elements such as switches, sliders, choosers, and inputs, chosen according to the user's needs for model development. These elements allow a real-time interaction to observe changes in the dynamics without directly modifying the code. Interface elements can correspond to either simple model variables or code blocks and are arbitrary, as they may not be present for the model's executability, as long as the associated variables or code are properly defined in the source code. The graphical interface must include two elements: one designed to invoke the code initializing the simulation environment (typically named \"setup\"), and another that calls the code initiating the dynamics (commonly labeled as \"start\").  
The environment is a weighted network defined as a graph \(G=(V,E,w)\), where \(V\) is the set of vertices, \(E\) is the set of edges, and \(w\colon V\times V\to\mathbb{R}^{+}\) is the weight function which assigns a positive cost to each edge of the graph. The weight measures the difficulty of crossing a specific edge. The starting point is a randomly selected node on one side (e.g., left side), while the exit point is another randomly chosen node on the opposite side (e.g., right side). The graph is undirected, therefore, all the edges can be crossed in both directions.  
Let \(A_{i}=\{j\in V:(i,j)\in E\}\) represent the set of vertices adjacent to vertex \(i\) and let \(\pi^{k}(t)=(\pi_{1},\pi_{2},\ldots,\pi_{t})\) denote the set of vertices visited by the ant \(k\) at a specific time \(t\), where \((\pi_{i},\pi_{i+1})\in E\) for \(i=1,\ldots,t-1\). The probability \(p_{ij}^{k}(t)\) which measures the likelihood that ant \(k\), placed on a vertex \(i\), chooses as destination one of its neighbor vertices \(j\) at time \(t\) is defined as\[p_{ij}^{k}(t)=\begin{cases}\frac{\tau_{ij}(t)^{*}\cdot\eta_{ij}^{\beta}}{\sum_{l_{ ij}\in J_{i}^{k}\tau_{l}(t)^{*}\cdot\eta_{jl}^{\beta}}}&\text{if }j\in J_{i}^{k}\\ 0&\text{otherwise},\end{cases} \tag{1}\]  
where \(J_{i}^{k}=A_{i}\setminus\{\pi_{t}^{k}\}\) represents all the possible displacements of ant \(k\) from vertex \(i\), \(\tau_{ij}(t)\) is the pheromone intensity on edge \((i,j)\), and \(\eta_{ij}(t)\) is the desirability of edge \((i,j)\) at a given time \(t\). The parameters \(\alpha\) and \(\beta\) determine, respectively, the importance of pheromone intensity and the importance of the desirability of an edge. Each link undergoes asynchronous updates through two types of rules based on the number of ticks \(T\) (the tick is the unit of time in the simulation software). The first rule is a _local updating rule_, which adjusts the pheromone levels after each movement of the ant as follows:  
\[\tau_{ij}(t+1)=\tau_{ij}(t)+K. \tag{2}\]  
Here, \(K\) denotes the pheromone left by each ant after traversing an edge \((i,j)\), and \(\tau_{ij}(t)\) represents the pheromone amount on the link at time \(t\).  
The second rule is a _global updating rule_, which updates the pheromone amount on all network links every \(T\) ticks as follows:  
\[\tau_{ij}(t+1)=(1-\rho)\cdot\tau_{ij}(t), \tag{3}\]  
where \(\tau_{ij}(t)\) is the trace amount on edge \((i,j)\) at time \(t\), and \(\rho\) is the evaporation decay parameter. At any given time \(t\), the desirability \(\eta_{ij}(t)\) measures the attractiveness of an edge \((i,j)\). This desirability is associated with the information \(I_{ij}(t)\) about the weight of the edge. It is shared by each ant on the endpoint of the crossed edge \((i,j)\) and initialized to 0, as in Algorithm 1 line 3.