# Multi-Satellite Observation-Relay Transmission-Downloading Coupling Scheduling Method
## 2 Problem Description
### Rule-Based Dijkstra Data Transmission Path Scheduling Method  
#### 3.4.1 Method Process  
The data transmission path planning process is the process of calculating satellite observation missions corresponding inter-satellite data transmission links, inter-satellite data transmission time, the associated satellite and ground station for satellite-ground data downloading, and satellite-ground data downloading time. The calculation is based on the current observation solutions \(x_{ki}\) and \(g_{ki,j}\). The multi-satellite data transmission path planning problem has the following characteristics as follows:  
1. The observation data can be temporarily saved in storage. During data transmission, there is no strict requirement to maintain continuous connectivity between all satellites. As shown in Figure 3, the generation of the data transmission path graph involves calculating inter-satellite data transmission time windows and determining if a data transmission path exists according to the data transmission time windows. In cases where satellites are not continuously connected (e.g., Satellite 1 and Satellite 3 in Figure 3), they can still be considered connectivity for data transmission if there is an inter-satellite data transmission time window between satellites;
2. There can be multiple satellite nodes downloading data. It is necessary to identify the available satellites for downloading, find the optimal path for each download satellite, and pick the optimal solution among them;
3. The distance between data transmission nodes will change with the data transmission mission arrangement. Consequently, the conventional Dijkstra algorithm [28] is adapted to accommodate these specific requirements. The method of workflow is as follows:  
1. Based on the current observation solutions \(x_{kiCur}\) and \(g_{ki,jCur}\), determine the observation result sequences \(s_{k}\) for each satellite, where \(s_{k}=\left\{M_{k1},M_{k2},\ldots,M_{kn_{k}}\right\}\), and \(n_{lk}\) is the number of observation targets for satellite \(k\). Combine the observation result sequences of all satellites into one mission sequence \(S=\left\{s_{1},s_{2},\ldots,s_{n_{t}}\right\}\);
2. Calculate the satellite cluster's status according to observation solutions and data transmission solutions related to missions that finished data transmission path planning;
3. Select a mission \(M_{ki}\) in the mission sequence \(S\) by order. Take the satellite corresponding to the observation of mission \(M_{ki}\) as the starting satellite node \(l\). Put the starting node into the selected node set \(ND_{s}\), and put other satellite nodes into the unselected node set \(ND_{u}\). Calculate the total distance \(d_{l}\) for the starting node. Initialize the total distance for the nodes in the unselected node and set \(ND_{u}\) to infinity. Set the starting node as the current node;
4. Select the data transmission path planning strategy; the selection rules are described in Section 3.4.2. Calculate the inter-node distance \(a_{l,lu}\) between the current node \(l\) and all unselected nodes \(lu\) in the unselected node set \(ND_{u}\) based on the selected strategy. Figure 3: Inter-satellite data transmission path graph generation diagram. The calculation method for node distance is described in Section 3.4.3. Update \(d_{lu}\) according to the smaller value between \(d_{l}+a_{l,\,lu}\) and \(d_{lu}\);
5. Select the node \(l^{\prime}\) in the unselected node set \(N_{Du}\) with the smallest \(d_{lu}\), and mark the current node \(l\) as the previous node of the node \(l^{\prime}\). Put \(l^{\prime}\) into the selected node set and delete it from the unselected node set. Set \(l^{\prime}\) as the current node \(l\);
6. Repeat steps 4-5 until there is no node left in the unselected node set;
7. Record all the shortest paths corresponding to nodes that can download \(M_{ki}\) data. Sort recorded paths in ascending order based on the total distance \(d\) to the downloading nodes;
8.