## 2 Materials and Methods
### Algorithms for DTNs with UAVs
This protocol has low performance when nodes have small buffer sizes because of the adaptive threshold calculation, but it gives better performance with a larger buffer size. It has a so-called slow start problem, because, in the case of a large network, it may take a very long time before each node receives the delivery predictability of other nodes because of the disconnecting nature of the networks, as shown in [21]. Figure 5: Triangular network considered for experiments. MaxDelivery [42] is an algorithm based on prioritizing message delivery, using an appropriate buffer management strategy, consisting of forwarding, dropping, and buffer cleaning mechanisms. The Dijkstra algorithm is a method used to find the shortest path connecting two nodes in a network [43]. Our routing problem can be modeled using a time-dependent oriented network [44]. For the triangle drone network, an algorithm named TD-UAV Dijkstra (Figure 6) is proposed to find a route and its distance dist(d) in seconds from the source s to the destination d starting at the moment \"ts\". In this network, the nodes (from the set denoted V) are the vertices of the triangles, and the arcs (from the set denoted E) are the connections between these points assured by drones. The length of each arc a = (u, v) is in seconds, is different in time, and depends on the arrival moments of the drone at node v. In the flowchart in Figure 6, f(a, t) denotes the moment of arrival at node v if node u is left at moment t on the arc a = (u, v). The arrival moments of drones for all arcs are pre-calculated (once before starting to use the algorithm) since an exact schedule for drones is known based on each drone's starting second in a day, the travel on each arc, data transfer at nodes, and wireless charge/battery change time for each drone. Figure 6: Flowchart of the TD-UAV Dijkstra algorithm. In Table 2, the characteristics of each of the above six algorithms used for simulation are summarized. Delivery protocols of each file that has to be delivered were proposed. Thus, a \"json\" file is attached that keeps all the information needed to transfer the data file from the source to the destination: delivery type (Dijkstra, Spray and Wait, etc. ), file information (name, size), and route information (node ids: stations and UAVs). A \"json\" file for a Dijkstra-type delivery of a data file named \"filename121.txt\" is shown in Figure 7. As a convention, in the above example, the stations are encoded starting with \"s\" followed by the numerical id of the station. Similarly, the UAVs are encoded with \"d\" followed by the numerical id of the UAV. Of course, each route starts and ends with a station id, each station id (except for destination) is followed by an UAV id, and after each UAV id, a station id is next. The json file that keeps information for the algorithms implemented in the ONE environment is presented in Figure 8.  
Figure 8: json file that keeps information for the algorithms implemented in the ONE environment. \begin{table}
\begin{tabular}{c c} \hline \hline
**Algorithm** & **Characteristics** \\ \hline Epidemic & TTL \\ Spray and wait & TTL, maximum allowed number of copies \\ PRoPHET & TTL, predictability \\ MaxProp & TTL, predictability, hop count \\ MaxDelivery & TTL, hop count \\ Dijkstra & drone timetable \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Algorithm characteristics. Figure 7: json file that keeps route information for the TD-UAV Dijkstra algorithm. The transfer between the UAV and station is initiated when the UAV is approaching it. All the files that have that station id in the attached json file are transferred, from the UAV to the exchange point. In the case of the Dijkstra algorithm, if the station's code is the last one in the route enumeration, it means that the file reached the destination. After the UAV transfer to the station is completed, the station transfers to the drone all the files that have the drone's id in the attached json.