混合直传-中继闭环模型扩展说明
混合直传-中继闭环模型扩展说明
1. 文档目的
本文说明如何在 Kim et al. (2025) 的 Observation -> Relay -> Downlink 主线 MILP 上,扩展出更符合工程实际的两种闭环方式并存模型:
观测星 -> 地面站直接闭环观测星 -> 中继星 -> 地面站中继闭环
你的输入可以抽象为四类候选窗口:
- 某观测星对某目标的可行观测窗口
- 某观测星对某地面站的可行直传窗口
- 某观测星对某中继星的可行星间传输窗口
- 某中继星对某地面站的可行下传窗口
你的输出希望包含四类调度结果:
- 某观测星对某目标的开始观测时间和总观测时长
- 某观测星对某中继星的开始传输时间和总传输时长
- 某观测星对某地面站的开始传输时间和总传输时长
- 某中继星对某地面站的开始传输时间和总传输时长
这类需求相比论文主模型,一定会新增约束,而且不仅是新增约束,目标函数也必须调整,否则模型会天然偏向中继路径。
2. 先给结论
2.1 在论文模型上,必须新增什么
至少需要新增三类内容:
- 一类新的任务窗口和变量:
观测星 -> 地面站直接下传任务 - 一组新的资源互斥约束:保证观测星和地面站资源不会被“直传任务”和“中继任务”同时占用
- 一组新的数据守恒约束:保证观测星上生成的数据既可以走直传,也可以走中继,但总出流不能超过已观测生成的数据
2.2 仅加约束还不够
Kim 论文的原目标函数是:
$$
J=\max\left[
\sum_{s\in S}\sum_{j\in J}\sum_{k\in K^O_{s,j}} t^{Img} x^O_{s,j,k}
- \sum_{s\in S}\sum_{r\in R}\sum_{k\in K^R_{s,r}} p^R_{s,r,k}
- \sum_{r\in R}\sum_{g\in G}\sum_{k\in K^D_{r,g}} p^D_{r,g,k}
\right]
$$
它对“中继模式”会记两次传输收益:
- 一次是
观测星 -> 中继星的p^R - 一次是
中继星 -> 地面站的p^D
但对“直传模式”如果你只新增 观测星 -> 地面站,只会记一次传输收益。
这里要注意,x^O_{s,j,k} 本身只是“是否选择某个观测窗口”,它并不区分后续走直传还是中继。
因此偏置不是来自 x^O,而是来自“在同一次观测已经被选中的前提下,后续传输项如何计分”。
于是,对同一个已选中的观测窗口,如果两种闭环方式都能把这次观测的数据完整送到地面,则:
- 直传模式的增量收益:
p^{DG}_{s,g,k} = t^{Img} - 中继模式的增量收益:
p^R_{s,r,k_1} + p^D_{r,g,k_2} = 2t^{Img}
也就是说,若观测项相同,中继路径会比直传路径多拿到一份 t_Img 的传输奖励。
这会导致模型在混合模式下系统性偏向中继,哪怕直传已经足够好。
所以如果要做混合闭环,目标函数必须同步改。
2.3 如果你想精确回答“某次观测到底走直传还是中继”
仅靠论文当前这种“按卫星总存储量守恒”的聚合流模型,还不够。
如果你后续希望输出:
Target-17这次观测到底是直传完成闭环- 还是先上中继再下地
那么还要新增“按观测归因”的流变量或链路分配变量。这一点不是论文原模型自带的,是混合工程模型的进一步扩展。
3. 论文原模型回顾
Kim 2025 的主线任务只有三类:
- 观测任务
O - 星间中继任务
R - 中继星到地面站的下传任务
D
对应窗口集合为:
- Ks,jOK^O_{s,j}Ks,jO:观测星 sss 对目标 jjj 的观测窗口
- Ks,rRK^R_{s,r}Ks,rR:观测星 sss 对中继星 rrr 的中继窗口
- Kr,gDK^D_{r,g}Kr,gD:中继星 rrr 对地面站 ggg 的下传窗口
对应变量为:
- xO,tO,mOx^O, t^O, m^OxO,tO,mO
- xR,tR,pR,mR,s,mR,rx^R, t^R, p^R, m^{R,s}, m^{R,r}xR,tR,pR,mR,s,mR,r
- xD,tD,pD,mDx^D, t^D, p^D, m^DxD,tD,pD,mD
注意这里的 DDD 只表示:
中继星→地面站 \text{中继星} \rightarrow \text{地面站} 中继星→地面站
不包含:
观测星→地面站 \text{观测星} \rightarrow \text{地面站} 观测星→地面站
4. 混合闭环模型的新增窗口与变量
为了支持直传,需要新增一类窗口:
Ks,gDG K^{DG}_{s,g} Ks,gDG
表示观测星 sss 到地面站 ggg 的直接下传窗口。
为避免和论文中继下传变量 DDD 混淆,本文用 DG 表示 Direct-to-Ground。
4.1 新增决策变量
对任意 k∈Ks,gDGk \in K^{DG}_{s,g}k∈Ks,gDG,新增:
- xs,g,kDG∈{0,1}x^{DG}_{s,g,k} \in \{0,1\}xs,g,kDG∈{0,1}:是否启用该直传窗口
- ts,g,kDG≥0t^{DG}_{s,g,k} \ge 0ts,g,kDG≥0:直传开始时间
- ps,g,kDG≥0p^{DG}_{s,g,k} \ge 0ps,g,kDG≥0:直传数据长度
- ms,g,kDG,s≥0m^{DG,s}_{s,g,k} \ge 0ms,g,kDG,s≥0:观测星 sss 在该直传任务开始前的可用数据量
4.2 新增辅助顺序变量
为保持和论文 (5)-(43) 一致的线性化风格,还要新增若干顺序辅助变量:
- ys,j,k1,g,k2O2DG,ys,g,k2,j,k1DG2Oy^{O2DG}_{s,j,k_1,g,k_2}, y^{DG2O}_{s,g,k_2,j,k_1}ys,j,k1,g,k2O2DG,ys,g,k2,j,k1DG2O:观测任务 (s,j,k1)(s,j,k_1)(s,j,k1) 与直传任务 (s,g,k2)(s,g,k_2)(s,g,k2) 的先后顺序
- ys,g,k1,r,k2DG2R,ys,r,k2,g,k1R2DGy^{DG2R}_{s,g,k_1,r,k_2}, y^{R2DG}_{s,r,k_2,g,k_1}ys,g,k1,r,k2DG2R,ys,r,k2,g,k1R2DG:直传任务 (s,g,k1)(s,g,k_1)(s,g,k1) 与中继任务 (s,r,k2)(s,r,k_2)(s,r,k2) 的先后顺序
- ys,g1,k1,g2,k2DG2DG,sy^{DG2DG,s}_{s,g_1,k_1,g_2,k_2}ys,g1,k1,g2,k2DG2DG,s:同一观测星 sss 上两个直传任务的顺序
- yg,s1,k1,s2,k2DG2DG,gy^{DG2DG,g}_{g,s_1,k_1,s_2,k_2}yg,s1,k1,s2,k2DG2DG,g:同一地面站 ggg 上两个直传任务的顺序
- ys,g,k1,r,k2DG2D,yr,g,k2,s,k1D2DGy^{DG2D}_{s,g,k_1,r,k_2}, y^{D2DG}_{r,g,k_2,s,k_1}ys,g,k1,r,k2DG2D,yr,g,k2,s,k1D2DG:直传任务 (s,g,k1)(s,g,k_1)(s,g,k1) 与中继星下传任务 (r,g,k2)(r,g,k_2)(r,g,k2) 在同一地面站上的先后顺序
如果要做连续变量和二元变量乘积的线性化,也要新增对应的 zzz 变量,例如:
zs,g,k1,j,k2DG2O=ps,g,k1DG⋅ys,g,k1,j,k2DG2O z^{DG2O}_{s,g,k_1,j,k_2} = p^{DG}_{s,g,k_1} \cdot y^{DG2O}_{s,g,k_1,j,k_2} zs,g,k1,j,k2DG2O=ps,g,k1DG⋅ys,g,k1,j,k2DG2O
5. 目标函数必须如何修改
5.1 原论文目标函数为什么不再合适
原论文目标函数:
$$
J_{paper}
=\max\left[
\sum_{s\in S}\sum_{j\in J}\sum_{k\in K^O_{s,j}} t^{Img} x^O_{s,j,k}
- \sum_{s\in S}\sum_{r\in R}\sum_{k\in K^R_{s,r}} p^R_{s,r,k}
- \sum_{r\in R}\sum_{g\in G}\sum_{k\in K^D_{r,g}} p^D_{r,g,k}
\right]
$$
现在加入直传后,如果直接改成:
$$
J_{naive}
=\max\left[
\sum_{s\in S}\sum_{j\in J}\sum_{k\in K^O_{s,j}} t^{Img} x^O_{s,j,k}
- \sum_{s\in S}\sum_{g\in G}\sum_{k\in K^{DG}{s,g}} p^{DG}{s,g,k}
- \sum_{s\in S}\sum_{r\in R}\sum_{k\in K^R_{s,r}} p^R_{s,r,k}
- \sum_{r\in R}\sum_{g\in G}\sum_{k\in K^D_{r,g}} p^D_{r,g,k}
\right]
$$
会出现一个严重偏置:
- 一幅图像若走直传,只贡献
p^{DG}_{s,g,k} - 一幅图像若走中继,会贡献
p^R_{s,r,k_1} + p^D_{r,g,k_2}
也就是“中继路径被奖励两次,直传路径只奖励一次”。
5.2 推荐目标函数
若你的目标是“尽可能完成闭环并把数据送到地面”,更合理的目标函数应该是:
$$
J_{hybrid}
=\max\left[
\alpha \sum_{s\in S}\sum_{j\in J}\sum_{k\in K^O_{s,j}} t^{Img} x^O_{s,j,k}
- \beta \sum_{s\in S}\sum_{g\in G}\sum_{k\in K^{DG}{s,g}} p^{DG}{s,g,k}
- \beta \sum_{r\in R}\sum_{g\in G}\sum_{k\in K^D_{r,g}} p^D_{r,g,k}
- \varepsilon \sum_{s\in S}\sum_{r\in R}\sum_{k\in K^R_{s,r}} p^R_{s,r,k}
\right]
$$
其中:
- α>0\alpha > 0α>0:奖励完成观测
- β>0\beta > 0β>0:奖励真正送到地面的数据
- ε≥0\varepsilon \ge 0ε≥0 且 ε≪β\varepsilon \ll \betaε≪β:给中继链路一个很小的次级偏好,只用于打破平局,而不是主导选择
常见设置可以是:
- α=1\alpha = 1α=1
- β=1\beta = 1β=1
- ε=10−3\varepsilon = 10^{-3}ε=10−3
如果你特别关心“地面收到的数据最多”,甚至可以进一步简化为:
$$
J_{ground}
=\max\left(
\sum_{s\in S}\sum_{g\in G}\sum_{k\in K^{DG}{s,g}} p^{DG}{s,g,k}
- \sum_{r\in R}\sum_{g\in G}\sum_{k\in K^D_{r,g}} p^D_{r,g,k}
\right)
$$
再把“尽量多观测目标”作为次级目标或词典序目标。
6. 新增约束一:直传任务本身的窗口约束
这一组约束是论文 (23)-(26) 的直传版。
对任意 s∈Ss \in Ss∈S, g∈Gg \in Gg∈G, k∈Ks,gDGk \in K^{DG}_{s,g}k∈Ks,gDG,记对应直传任务为 (s,g,k)(s,g,k)(s,g,k)。
6.1 激活约束
ts,g,kDG≤Mxs,g,kDG(H1) t^{DG}_{s,g,k} \le M x^{DG}_{s,g,k} \tag{H1} ts,g,kDG≤Mxs,g,kDG(H1)
ps,g,kDG≤Mxs,g,kDG(H2) p^{DG}_{s,g,k} \le M x^{DG}_{s,g,k} \tag{H2} ps,g,kDG≤Mxs,g,kDG(H2)
6.2 必须落在窗口内部
设该直传窗口的起止边界为 is,g,kDG,ds,g,kDGi^{DG}_{s,g,k}, d^{DG}_{s,g,k}is,g,kDG,ds,g,kDG,则:
is,g,kDG−ts,g,kDG≤M(1−xs,g,kDG)(H3) i^{DG}_{s,g,k} - t^{DG}_{s,g,k} \le M(1 - x^{DG}_{s,g,k}) \tag{H3} is,g,kDG−ts,g,kDG≤M(1−xs,g,kDG)(H3)
ts,g,kDG+ps,g,kDG−ds,g,kDG≤M(1−xs,g,kDG)(H4) t^{DG}_{s,g,k} + p^{DG}_{s,g,k} - d^{DG}_{s,g,k} \le M(1 - x^{DG}_{s,g,k}) \tag{H4} ts,g,kDG+ps,g,kDG−ds,g,kDG≤M(1−xs,g,kDG)(H4)
意义:
- 如果没有选中该窗口,时间和数据量被压到 0
- 如果选中了,就必须在窗口内开始和结束
7. 新增约束二:观测星资源互斥
观测星现在会执行三类任务:
- 观测
- 传中继星
- 直接传地面站
所以论文原有的 观测-观测、观测-中继、中继-中继 还不够,需要再补两类。
7.1 观测和直传不能重叠
对同一观测星上的观测任务 (s,j,k1)(s,j,k_1)(s,j,k1) 和直传任务 (s,g,k2)(s,g,k_2)(s,g,k2):
ys,j,k1,g,k2O2DG+ys,g,k2,j,k1DG2O=xs,j,k1Oxs,g,k2DG(H5) y^{O2DG}_{s,j,k_1,g,k_2} + y^{DG2O}_{s,g,k_2,j,k_1} = x^O_{s,j,k_1} x^{DG}_{s,g,k_2} \tag{H5} ys,j,k1,g,k2O2DG+ys,g,k2,j,k1DG2O=xs,j,k1Oxs,g,k2DG(H5)
ts,j,k1O+tImg−ts,g,k2DG≤M(1−ys,j,k1,g,k2O2DG)(H6) t^O_{s,j,k_1} + t^{Img} - t^{DG}_{s,g,k_2} \le M(1 - y^{O2DG}_{s,j,k_1,g,k_2}) \tag{H6} ts,j,k1O+tImg−ts,g,k2DG≤M(1−ys,j,k1,g,k2O2DG)(H6)
ts,g,k2DG+ps,g,k2DG−ts,j,k1O≤M(1−ys,g,k2,j,k1DG2O)(H7) t^{DG}_{s,g,k_2} + p^{DG}_{s,g,k_2} - t^O_{s,j,k_1} \le M(1 - y^{DG2O}_{s,g,k_2,j,k_1}) \tag{H7} ts,g,k2DG+ps,g,k2DG−ts,j,k1O≤M(1−ys,g,k2,j,k1DG2O)(H7)
含义:
- 如果观测和直传都被选中,则二者必须二选一排序
- 要么先观测后直传,要么先直传后观测
7.2 直传和中继不能重叠
因为这两类任务都占用观测星的发射资源。
ys,g,k1,r,k2DG2R+ys,r,k2,g,k1R2DG=xs,g,k1DGxs,r,k2R(H8) y^{DG2R}_{s,g,k_1,r,k_2} + y^{R2DG}_{s,r,k_2,g,k_1} = x^{DG}_{s,g,k_1} x^R_{s,r,k_2} \tag{H8} ys,g,k1,r,k2DG2R+ys,r,k2,g,k1R2DG=xs,g,k1DGxs,r,k2R(H8)
ts,g,k1DG+ps,g,k1DG−ts,r,k2R≤M(1−ys,g,k1,r,k2DG2R)(H9) t^{DG}_{s,g,k_1} + p^{DG}_{s,g,k_1} - t^R_{s,r,k_2} \le M(1 - y^{DG2R}_{s,g,k_1,r,k_2}) \tag{H9} ts,g,k1DG+ps,g,k1DG−ts,r,k2R≤M(1−ys,g,k1,r,k2DG2R)(H9)
ts,r,k2R+ps,r,k2R−ts,g,k1DG≤M(1−ys,r,k2,g,k1R2DG)(H10) t^R_{s,r,k_2} + p^R_{s,r,k_2} - t^{DG}_{s,g,k_1} \le M(1 - y^{R2DG}_{s,r,k_2,g,k_1}) \tag{H10} ts,r,k2R+ps,r,k2R−ts,g,k1DG≤M(1−ys,r,k2,g,k1R2DG)(H10)
7.3 同一观测星上的两个直传任务不能重叠
对同一观测星 sss 上的两个直传任务 (s,g1,k1)(s,g_1,k_1)(s,g1,k1) 和 (s,g2,k2)(s,g_2,k_2)(s,g2,k2):
ys,g1,k1,g2,k2DG2DG,s+ys,g2,k2,g1,k1DG2DG,s=xs,g1,k1DGxs,g2,k2DG(H11) y^{DG2DG,s}_{s,g_1,k_1,g_2,k_2} + y^{DG2DG,s}_{s,g_2,k_2,g_1,k_1} = x^{DG}_{s,g_1,k_1} x^{DG}_{s,g_2,k_2} \tag{H11} ys,g1,k1,g2,k2DG2DG,s+ys,g2,k2,g1,k1DG2DG,s=xs,g1,k1DGxs,g2,k2DG(H11)
ts,g1,k1DG+ps,g1,k1DG−ts,g2,k2DG≤M(1−ys,g1,k1,g2,k2DG2DG,s)(H12) t^{DG}_{s,g_1,k_1} + p^{DG}_{s,g_1,k_1} - t^{DG}_{s,g_2,k_2} \le M(1 - y^{DG2DG,s}_{s,g_1,k_1,g_2,k_2}) \tag{H12} ts,g1,k1DG+ps,g1,k1DG−ts,g2,k2DG≤M(1−ys,g1,k1,g2,k2DG2DG,s)(H12)
ts,g2,k2DG+ps,g2,k2DG−ts,g1,k1DG≤M(1−ys,g2,k2,g1,k1DG2DG,s)(H13) t^{DG}_{s,g_2,k_2} + p^{DG}_{s,g_2,k_2} - t^{DG}_{s,g_1,k_1} \le M(1 - y^{DG2DG,s}_{s,g_2,k_2,g_1,k_1}) \tag{H13} ts,g2,k2DG+ps,g2,k2DG−ts,g1,k1DG≤M(1−ys,g2,k2,g1,k1DG2DG,s)(H13)
8. 新增约束三:地面站资源互斥
地面站现在会接收两类任务:
- 观测星直传
DG - 中继星下传
D
因此论文原有的“中继星下传之间在同一地面站不能重叠”还不够,还要补两类约束。
8.1 两个直传任务在同一地面站不能重叠
对两个都面向同一地面站 ggg 的直传任务 (s1,g,k1)(s_1,g,k_1)(s1,g,k1) 和 (s2,g,k2)(s_2,g,k_2)(s2,g,k2):
yg,s1,k1,s2,k2DG2DG,g+yg,s2,k2,s1,k1DG2DG,g=xs1,g,k1DGxs2,g,k2DG(H14) y^{DG2DG,g}_{g,s_1,k_1,s_2,k_2} + y^{DG2DG,g}_{g,s_2,k_2,s_1,k_1} = x^{DG}_{s_1,g,k_1} x^{DG}_{s_2,g,k_2} \tag{H14} yg,s1,k1,s2,k2DG2DG,g+yg,s2,k2,s1,k1DG2DG,g=xs1,g,k1DGxs2,g,k2DG(H14)
ts1,g,k1DG+ps1,g,k1DG−ts2,g,k2DG≤M(1−yg,s1,k1,s2,k2DG2DG,g)(H15) t^{DG}_{s_1,g,k_1} + p^{DG}_{s_1,g,k_1} - t^{DG}_{s_2,g,k_2} \le M(1 - y^{DG2DG,g}_{g,s_1,k_1,s_2,k_2}) \tag{H15} ts1,g,k1DG+ps1,g,k1DG−ts2,g,k2DG≤M(1−yg,s1,k1,s2,k2DG2DG,g)(H15)
ts2,g,k2DG+ps2,g,k2DG−ts1,g,k1DG≤M(1−yg,s2,k2,s1,k1DG2DG,g)(H16) t^{DG}_{s_2,g,k_2} + p^{DG}_{s_2,g,k_2} - t^{DG}_{s_1,g,k_1} \le M(1 - y^{DG2DG,g}_{g,s_2,k_2,s_1,k_1}) \tag{H16} ts2,g,k2DG+ps2,g,k2DG−ts1,g,k1DG≤M(1−yg,s2,k2,s1,k1DG2DG,g)(H16)
8.2 直传任务和中继星下传任务在同一地面站不能重叠
这一组约束是论文里没有的新约束,因为论文里地面站只服务中继星。
对于直传任务 (s,g,k1)(s,g,k_1)(s,g,k1) 和中继星下传任务 (r,g,k2)(r,g,k_2)(r,g,k2):
ys,g,k1,r,k2DG2D+yr,g,k2,s,k1D2DG=xs,g,k1DGxr,g,k2D(H17) y^{DG2D}_{s,g,k_1,r,k_2} + y^{D2DG}_{r,g,k_2,s,k_1} = x^{DG}_{s,g,k_1} x^D_{r,g,k_2} \tag{H17} ys,g,k1,r,k2DG2D+yr,g,k2,s,k1D2DG=xs,g,k1DGxr,g,k2D(H17)
ts,g,k1DG+ps,g,k1DG−tr,g,k2D≤M(1−ys,g,k1,r,k2DG2D)(H18) t^{DG}_{s,g,k_1} + p^{DG}_{s,g,k_1} - t^D_{r,g,k_2} \le M(1 - y^{DG2D}_{s,g,k_1,r,k_2}) \tag{H18} ts,g,k1DG+ps,g,k1DG−tr,g,k2D≤M(1−ys,g,k1,r,k2DG2D)(H18)
tr,g,k2D+pr,g,k2D−ts,g,k1DG≤M(1−yr,g,k2,s,k1D2DG)(H19) t^D_{r,g,k_2} + p^D_{r,g,k_2} - t^{DG}_{s,g,k_1} \le M(1 - y^{D2DG}_{r,g,k_2,s,k_1}) \tag{H19} tr,g,k2D+pr,g,k2D−ts,g,k1DG≤M(1−yr,g,k2,s,k1D2DG)(H19)
9. 新增约束四:观测星上的数据守恒
这是混合模型里最关键的一组约束。
在论文原模型中,观测星上产生的数据只能流向中继任务;现在扩展后,观测星上产生的数据可以流向两条路径:
- 直接下传到地面站
- 传给中继星
因此观测星上的存储平衡式必须改写。
9.1 观测开始前的观测星存储量
论文 (34) 的思想是:
- 之前完成的观测会增加数据
- 之前完成的中继会减少数据
扩展后,还要再减去之前完成的直传。
对观测任务 (s,j,k)(s,j,k)(s,j,k):
ms,j,kO,s=∑j′∈J∑k′∈Ks,j′OtImg ys,j′,k′,j,kO2O−∑r′∈R∑k′∈Ks,r′Rzs,r′,k′,j,kR2O−∑g′∈G∑k′∈Ks,g′DGzs,g′,k′,j,kDG2O(H20) m^{O,s}_{s,j,k} =\sum_{j'\in J}\sum_{k'\in K^O_{s,j'}} t^{Img} \, y^{O2O}_{s,j',k',j,k}- \sum_{r'\in R}\sum_{k'\in K^R_{s,r'}} z^{R2O}_{s,r',k',j,k}- \sum_{g'\in G}\sum_{k'\in K^{DG}_{s,g'}} z^{DG2O}_{s,g',k',j,k} \tag{H20} ms,j,kO,s=j′∈J∑k′∈Ks,j′O∑tImgys,j′,k′,j,kO2O−r′∈R∑k′∈Ks,r′R∑zs,r′,k′,j,kR2O−g′∈G∑k′∈Ks,g′DG∑zs,g′,k′,j,kDG2O(H20)
其中:
zs,g,k1,j,k2DG2O=ps,g,k1DGys,g,k1,j,k2DG2O z^{DG2O}_{s,g,k_1,j,k_2} = p^{DG}_{s,g,k_1} y^{DG2O}_{s,g,k_1,j,k_2} zs,g,k1,j,k2DG2O=ps,g,k1DGys,g,k1,j,k2DG2O
表示“如果直传任务 (s,g,k1)(s,g,k_1)(s,g,k1) 发生在观测任务 (s,j,k2)(s,j,k_2)(s,j,k2) 之前,那么它从观测星上带走的数据量”。
9.2 中继任务开始前,观测星侧的数据量
论文 (35) 只扣除了更早发生的中继任务,现在还要扣除更早发生的直传任务:
ms,r,kR,s=∑j′∈J∑k′∈Ks,j′OtImg ys,j′,k′,r,kO2R−∑r′∈R∑k′∈Ks,r′Rzs,r′,k′,r,kR2R,s−∑g′∈G∑k′∈Ks,g′DGzs,g′,k′,r,kDG2R(H21) m^{R,s}_{s,r,k} = \sum_{j'\in J}\sum_{k'\in K^O_{s,j'}} t^{Img} \, y^{O2R}_{s,j',k',r,k}- \sum_{r'\in R}\sum_{k'\in K^R_{s,r'}} z^{R2R,s}_{s,r',k',r,k}- \sum_{g'\in G}\sum_{k'\in K^{DG}_{s,g'}} z^{DG2R}_{s,g',k',r,k}\tag{H21} ms,r,kR,s=j′∈J∑k′∈Ks,j′O∑tImgys,j′,k′,r,kO2R−r′∈R∑k′∈Ks,r′R∑zs,r′,k′,r,kR2R,s−g′∈G∑k′∈Ks,g′DG∑zs,g′,k′,r,kDG2R(H21)
然后保留容量约束:
ps,r,kR−ms,r,kR,s≤M(1−xs,r,kR)(H22) p^R_{s,r,k} - m^{R,s}_{s,r,k} \le M(1 - x^R_{s,r,k}) \tag{H22} ps,r,kR−ms,r,kR,s≤M(1−xs,r,kR)(H22)
9.3 直传任务开始前,观测星侧的数据量
这是新增的一整条平衡式。
ms,g,kDG,s=∑j′∈J∑k′∈Ks,j′OtImg ys,j′,k′,g,kO2DG−∑r′∈R∑k′∈Ks,r′Rzs,r′,k′,g,kR2DG−∑g′∈G∑k′∈Ks,g′DGzs,g′,k′,g,kDG2DG,s(H23) m^{DG,s}_{s,g,k} =\sum_{j'\in J}\sum_{k'\in K^O_{s,j'}} t^{Img} \, y^{O2DG}_{s,j',k',g,k}- \sum_{r'\in R}\sum_{k'\in K^R_{s,r'}} z^{R2DG}_{s,r',k',g,k}- \sum_{g'\in G}\sum_{k'\in K^{DG}_{s,g'}} z^{DG2DG,s}_{s,g',k',g,k}\tag{H23} ms,g,kDG,s=j′∈J∑k′∈Ks,j′O∑tImgys,j′,k′,g,kO2DG−r′∈R∑k′∈Ks,r′R∑zs,r′,k′,g,kR2DG−g′∈G∑k′∈Ks,g′DG∑zs,g′,k′,g,kDG2DG,s(H23)
并加入容量约束:
ps,g,kDG−ms,g,kDG,s≤M(1−xs,g,kDG)(H24) p^{DG}_{s,g,k} - m^{DG,s}_{s,g,k} \le M(1 - x^{DG}_{s,g,k}) \tag{H24} ps,g,kDG−ms,g,kDG,s≤M(1−xs,g,kDG)(H24)
含义:
- 直传前,观测星上的可用数据来自更早的观测
- 会扣除更早发生的中继出流
- 也会扣除更早发生的其他直传出流
这样才能保证:
直传出流+中继出流≤已观测生成的数据 \text{直传出流} + \text{中继出流} \le \text{已观测生成的数据} 直传出流+中继出流≤已观测生成的数据
9.4 中继星侧的数据守恒
论文 (37)-(39) 描述的是中继星上的数据平衡:
- 进入中继星的是来自观测星的中继数据
- 离开中继星的是中继星对地面站的下传数据
这一块在混合模型里不用改结构,因为直传路径不经过中继星。
10. 新增约束五:如果你要“每次观测只能选择一种闭环方式”
上面的 (H20)-(H24) 已经足够保证总数据守恒,但它仍然是“聚合流模型”。
这意味着:
- 它能保证观测星总共产生 120 秒数据
- 总共通过直传和中继送出不超过 120 秒
- 但它不直接告诉你“第 3 次观测到底是直传还是中继”
如果你需要逐观测地判断闭环方式,则还要新增一层“按观测归因”的变量。
10.1 新增闭环模式变量
对每个观测任务 (s,j,k)(s,j,k)(s,j,k),新增:
- us,j,kdir∈{0,1}u^{dir}_{s,j,k} \in \{0,1\}us,j,kdir∈{0,1}:该观测是否选择直传闭环
- us,j,krel∈{0,1}u^{rel}_{s,j,k} \in \{0,1\}us,j,krel∈{0,1}:该观测是否选择中继闭环
并要求:
us,j,kdir+us,j,krel≤xs,j,kO(H25) u^{dir}_{s,j,k} + u^{rel}_{s,j,k} \le x^O_{s,j,k} \tag{H25} us,j,kdir+us,j,krel≤xs,j,kO(H25)
如果你要求“被调度的观测必须闭环且只能二选一”,则可写成:
us,j,kdir+us,j,krel=xs,j,kO(H26) u^{dir}_{s,j,k} + u^{rel}_{s,j,k} = x^O_{s,j,k} \tag{H26} us,j,kdir+us,j,krel=xs,j,kO(H26)
10.2 新增按观测归因的流变量
例如:
- fs,j,k1,g,k2DG≥0f^{DG}_{s,j,k_1,g,k_2} \ge 0fs,j,k1,g,k2DG≥0:观测任务 (s,j,k1)(s,j,k_1)(s,j,k1) 通过直传窗口 (s,g,k2)(s,g,k_2)(s,g,k2) 发送的数据量
- fs,j,k1,r,k2R≥0f^R_{s,j,k_1,r,k_2} \ge 0fs,j,k1,r,k2R≥0:观测任务 (s,j,k1)(s,j,k_1)(s,j,k1) 通过中继窗口 (s,r,k2)(s,r,k_2)(s,r,k2) 发送到中继星的数据量
- fs,j,k1,r,g,k2D≥0f^D_{s,j,k_1,r,g,k_2} \ge 0fs,j,k1,r,g,k2D≥0:属于观测任务 (s,j,k1)(s,j,k_1)(s,j,k1) 的数据通过中继星下传窗口 (r,g,k2)(r,g,k_2)(r,g,k2) 送地的数据量
10.3 逐观测的闭环守恒
如果观测选择直传模式:
∑g∈G∑k2∈Ks,gDGfs,j,k1,g,k2DG=tImg us,j,k1dir(H27) \sum_{g\in G}\sum_{k_2\in K^{DG}_{s,g}} f^{DG}_{s,j,k_1,g,k_2} = t^{Img} \, u^{dir}_{s,j,k_1} \tag{H27} g∈G∑k2∈Ks,gDG∑fs,j,k1,g,k2DG=tImgus,j,k1dir(H27)
如果观测选择中继模式:
∑r∈R∑k2∈Ks,rRfs,j,k1,r,k2R=tImg us,j,k1rel(H28) \sum_{r\in R}\sum_{k_2\in K^R_{s,r}} f^R_{s,j,k_1,r,k_2} = t^{Img} \, u^{rel}_{s,j,k_1} \tag{H28} r∈R∑k2∈Ks,rR∑fs,j,k1,r,k2R=tImgus,j,k1rel(H28)
∑r∈R∑g∈G∑k2∈Kr,gDfs,j,k1,r,g,k2D=tImg us,j,k1rel(H29) \sum_{r\in R}\sum_{g\in G}\sum_{k_2\in K^D_{r,g}} f^D_{s,j,k_1,r,g,k_2} = t^{Img} \, u^{rel}_{s,j,k_1} \tag{H29} r∈R∑g∈G∑k2∈Kr,gD∑fs,j,k1,r,g,k2D=tImgus,j,k1rel(H29)
并要求每个中继路径在中继星侧守恒:
∑r∈R∑k2∈Ks,rRfs,j,k1,r,k2R=∑r∈R∑g∈G∑k2∈Kr,gDfs,j,k1,r,g,k2D(H30) \sum_{r\in R}\sum_{k_2\in K^R_{s,r}} f^R_{s,j,k_1,r,k_2} = \sum_{r\in R}\sum_{g\in G}\sum_{k_2\in K^D_{r,g}} f^D_{s,j,k_1,r,g,k_2} \tag{H30} r∈R∑k2∈Ks,rR∑fs,j,k1,r,k2R=r∈R∑g∈G∑k2∈Kr,gD∑fs,j,k1,r,g,k2D(H30)
再用窗口容量限制:
∑j∈J∑k1∈Ks,jOfs,j,k1,g,k2DG≤ps,g,k2DG(H31) \sum_{j\in J}\sum_{k_1\in K^O_{s,j}} f^{DG}_{s,j,k_1,g,k_2} \le p^{DG}_{s,g,k_2} \tag{H31} j∈J∑k1∈Ks,jO∑fs,j,k1,g,k2DG≤ps,g,k2DG(H31)
∑j∈J∑k1∈Ks,jOfs,j,k1,r,k2R≤ps,r,k2R(H32) \sum_{j\in J}\sum_{k_1\in K^O_{s,j}} f^R_{s,j,k_1,r,k_2} \le p^R_{s,r,k_2} \tag{H32} j∈J∑k1∈Ks,jO∑fs,j,k1,r,k2R≤ps,r,k2R(H32)
∑s∈S∑j∈J∑k1∈Ks,jOfs,j,k1,r,g,k2D≤pr,g,k2D(H33) \sum_{s\in S}\sum_{j\in J}\sum_{k_1\in K^O_{s,j}} f^D_{s,j,k_1,r,g,k_2} \le p^D_{r,g,k_2} \tag{H33} s∈S∑j∈J∑k1∈Ks,jO∑fs,j,k1,r,g,k2D≤pr,g,k2D(H33)
10.4 这一层为什么不是“可有可无”
如果你只要总调度表:
- 总共哪几个观测做了
- 哪些直传做了
- 哪些中继做了
- 哪些中继下传做了
那么聚合流模型已经够用。
但如果你还要回答:
- 目标
T17这次观测到底走了哪条闭环 - 一次观测是否被拆成了“部分直传 + 部分中继”
那么 (H25)-(H33) 这类按观测归因的变量就必须加。
11. 用一个最小案例说明为什么这些新增是必要的
11.1 场景
- 1 颗观测星
S1 - 1 颗中继星
R1 - 1 个地面站
G1 - 1 个目标
T1 - 成像时间
t_Img = 30 s
窗口如下:
- 观测窗口:
S1 -> T1 : [0, 40] - 直传窗口:
S1 -> G1 : [50, 100] - 中继窗口:
S1 -> R1 : [45, 90] - 中继下传窗口:
R1 -> G1 : [95, 140]
11.2 如果沿用论文原目标函数会发生什么
方案 A:直传闭环
- 观测 30 秒
- 直传 30 秒
若观测窗口本身已经被选中,则额外传输收益为:
30 30 30
方案 B:中继闭环
- 观测 30 秒
- 传中继 30 秒
- 中继下地 30 秒
若观测窗口本身已经被选中,则额外传输收益为:
30+30=60 30 + 30 = 60 30+30=60
也就是说,在“观测项相同”的比较前提下,中继方案会比直传方案多拿一份传输奖励。
虽然两种方案都已经成功把同一幅图像送到地面,但原目标函数仍会固定偏向中继。
这就是为什么混合模型里必须改目标函数。
11.3 如果不加地面站混合互斥约束会发生什么
假设:
- 直传窗口
S1 -> G1 : [90, 120] - 中继下传窗口
R1 -> G1 : [100, 130]
如果没有 (H17)-(H19),模型可能会同时安排:
S1在[90,120]向G1直传R1在[100,130]向G1下传
但地面站 G1 实际只有一套接收资源,这显然不合理。
11.4 如果不改观测星存储平衡会发生什么
假设 S1 只做了一次 30 秒观测,但模型同时安排:
- 先直传 30 秒
- 又向中继传 30 秒
如果存储平衡里没有把“直传出流”和“中继出流”同时扣掉,模型就会错误地认为同一份 30 秒数据可以被发送两次。
这就是 (H20)-(H24) 必须存在的原因。
12. 对你当前工程的直接启示
你的现有工程数据结构已经有一半准备好了:
ObservationWindowRelayWindowDownlinkWindowsatellite_is_relay
这意味着从工程实现角度,你完全可以把全部地面下传窗口仍然存在 DownlinkWindow 中:
satellite_is_relay = false:表示观测星 -> 地面站直传窗口satellite_is_relay = true:表示中继星 -> 地面站下传窗口
但当前 GurobiModelBuilder.cpp 的论文主线实现只取了:
satellite_is_relay = true
也就是只建了中继星到地面的 x^D, t^D, p^D,并没有把 satellite_is_relay = false 的窗口纳入主模型。
如果要实现本文的混合模型,求解器层至少要做两件事:
- 为
satellite_is_relay = false的窗口建立新的直传变量族x^{DG}_{s,g,k}, t^{DG}_{s,g,k}, p^{DG}_{s,g,k}, m^{DG,s}_{s,g,k} - 新增本文
(H1)-(H24)这些约束,并把目标函数改为J_hybrid
如果还要输出“某个观测到底是直传闭环还是中继闭环”,则继续加 (H25)-(H33)。
13. 推荐的实现分层
为了避免把代码一次性改得过于复杂,建议按两层实现:
第一层:混合资源-流模型
目标:
- 允许观测星既可直传,也可走中继
- 输出四类任务的开始时间和时长
- 保证总资源冲突和总数据守恒
对应本文内容:
(H1)-(H24)
特点:
- 与论文
(1)-(43)风格最接近 - 改动量可控
- 能快速得到可用调度表
不足:
- 不能天然给出“每次观测的闭环模式标签”
第二层:按观测归因的闭环模型
目标:
- 明确知道每次观测是直传还是中继
- 禁止同一次观测被拆成“部分直传 + 部分中继”
对应本文内容:
(H25)-(H33)
特点:
- 输出解释性最强
- 更适合做任务链可视化和闭环统计
不足:
- 变量量级会显著上升
- 计算复杂度明显高于第一层
14. 最终结论
如果把你的实际需求放到 Kim 2025 论文模型上,答案是:
- 有新增约束条件,而且是成体系地新增
- 不仅要新增约束,还必须修改目标函数
- 如果要精确到“某个观测到底走直传还是中继”,还必须新增按观测归因的流变量
最小可行扩展是:
- 新增直传任务变量
- 新增观测星和地面站上的混合互斥约束
- 新增观测星上的混合数据守恒约束
- 修改目标函数,避免中继路径被双重奖励
如果要做工程上真正可解释的“闭环方式”输出,则再进一步加入逐观测归因约束。
15. 一句话建议
如果你当前目标是“先让模型能在两种闭环方式并存的输入上快速筛选任务”,先做本文的第一层混合资源-流模型最稳。
如果你后续目标是“论文复现之外,再给出每个目标的闭环路径解释、甘特图链路标注、直传/中继对比统计”,再继续上第二层按观测归因模型。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)