混合直传-中继闭环模型扩展说明

1. 文档目的

本文说明如何在 Kim et al. (2025) 的 Observation -> Relay -> Downlink 主线 MILP 上,扩展出更符合工程实际的两种闭环方式并存模型:

  1. 观测星 -> 地面站 直接闭环
  2. 观测星 -> 中继星 -> 地面站 中继闭环

你的输入可以抽象为四类候选窗口:

  • 某观测星对某目标的可行观测窗口
  • 某观测星对某地面站的可行直传窗口
  • 某观测星对某中继星的可行星间传输窗口
  • 某中继星对某地面站的可行下传窗口

你的输出希望包含四类调度结果:

  • 某观测星对某目标的开始观测时间和总观测时长
  • 某观测星对某中继星的开始传输时间和总传输时长
  • 某观测星对某地面站的开始传输时间和总传输时长
  • 某中继星对某地面站的开始传输时间和总传输时长

这类需求相比论文主模型,一定会新增约束,而且不仅是新增约束,目标函数也必须调整,否则模型会天然偏向中继路径。


2. 先给结论

2.1 在论文模型上,必须新增什么

至少需要新增三类内容:

  1. 一类新的任务窗口和变量:观测星 -> 地面站 直接下传任务
  2. 一组新的资源互斥约束:保证观测星和地面站资源不会被“直传任务”和“中继任务”同时占用
  3. 一组新的数据守恒约束:保证观测星上生成的数据既可以走直传,也可以走中继,但总出流不能超过已观测生成的数据

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 的主线任务只有三类:

  1. 观测任务 O
  2. 星间中继任务 R
  3. 中继星到地面站的下传任务 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}kKs,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,kDG0:直传开始时间
  • ps,g,kDG≥0p^{DG}_{s,g,k} \ge 0ps,g,kDG0:直传数据长度
  • ms,g,kDG,s≥0m^{DG,s}_{s,g,k} \ge 0ms,g,kDG,s0:观测星 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,k1DGys,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}ε=103

如果你特别关心“地面收到的数据最多”,甚至可以进一步简化为:

$$
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 SsS, g∈Gg \in GgG, k∈Ks,gDGk \in K^{DG}_{s,g}kKs,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,kDGMxs,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,kDGMxs,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,kDGts,g,kDGM(1xs,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,kDGds,g,kDGM(1xs,g,kDG)(H4)

意义:

  • 如果没有选中该窗口,时间和数据量被压到 0
  • 如果选中了,就必须在窗口内开始和结束

7. 新增约束二:观测星资源互斥

观测星现在会执行三类任务:

  1. 观测
  2. 传中继星
  3. 直接传地面站

所以论文原有的 观测-观测观测-中继中继-中继 还不够,需要再补两类。

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+tImgts,g,k2DGM(1ys,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,k2DGts,j,k1OM(1ys,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,k1DGts,r,k2RM(1ys,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,k2Rts,g,k1DGM(1ys,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,k1DGts,g2,k2DGM(1ys,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,k2DGts,g1,k1DGM(1ys,g2,k2,g1,k1DG2DG,s)(H13)


8. 新增约束三:地面站资源互斥

地面站现在会接收两类任务:

  1. 观测星直传 DG
  2. 中继星下传 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,k1DGts2,g,k2DGM(1yg,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,k2DGts1,g,k1DGM(1yg,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,k1DGtr,g,k2DM(1ys,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,k2Dts,g,k1DGM(1yr,g,k2,s,k1D2DG)(H19)


9. 新增约束四:观测星上的数据守恒

这是混合模型里最关键的一组约束。

在论文原模型中,观测星上产生的数据只能流向中继任务;现在扩展后,观测星上产生的数据可以流向两条路径:

  1. 直接下传到地面站
  2. 传给中继星

因此观测星上的存储平衡式必须改写。

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=jJkKs,jOtImgys,j,k,j,kO2OrRkKs,rRzs,r,k,j,kR2OgGkKs,gDGzs,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=jJkKs,jOtImgys,j,k,r,kO2RrRkKs,rRzs,r,k,r,kR2R,sgGkKs,gDGzs,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,kRms,r,kR,sM(1xs,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=jJkKs,jOtImgys,j,k,g,kO2DGrRkKs,rRzs,r,k,g,kR2DGgGkKs,gDGzs,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,kDGms,g,kDG,sM(1xs,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,krelxs,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,k2DG0:观测任务 (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,k2R0:观测任务 (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,k2D0:属于观测任务 (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} gGk2Ks,gDGfs,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} rRk2Ks,rRfs,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} rRgGk2Kr,gDfs,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} rRk2Ks,rRfs,j,k1,r,k2R=rRgGk2Kr,gDfs,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} jJk1Ks,jOfs,j,k1,g,k2DGps,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} jJk1Ks,jOfs,j,k1,r,k2Rps,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} sSjJk1Ks,jOfs,j,k1,r,g,k2Dpr,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. 对你当前工程的直接启示

你的现有工程数据结构已经有一半准备好了:

  • ObservationWindow
  • RelayWindow
  • DownlinkWindow
  • satellite_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 的窗口纳入主模型。

如果要实现本文的混合模型,求解器层至少要做两件事:

  1. 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}
  2. 新增本文 (H1)-(H24) 这些约束,并把目标函数改为 J_hybrid

如果还要输出“某个观测到底是直传闭环还是中继闭环”,则继续加 (H25)-(H33)


13. 推荐的实现分层

为了避免把代码一次性改得过于复杂,建议按两层实现:

第一层:混合资源-流模型

目标:

  • 允许观测星既可直传,也可走中继
  • 输出四类任务的开始时间和时长
  • 保证总资源冲突和总数据守恒

对应本文内容:

  • (H1)-(H24)

特点:

  • 与论文 (1)-(43) 风格最接近
  • 改动量可控
  • 能快速得到可用调度表

不足:

  • 不能天然给出“每次观测的闭环模式标签”

第二层:按观测归因的闭环模型

目标:

  • 明确知道每次观测是直传还是中继
  • 禁止同一次观测被拆成“部分直传 + 部分中继”

对应本文内容:

  • (H25)-(H33)

特点:

  • 输出解释性最强
  • 更适合做任务链可视化和闭环统计

不足:

  • 变量量级会显著上升
  • 计算复杂度明显高于第一层

14. 最终结论

如果把你的实际需求放到 Kim 2025 论文模型上,答案是:

  1. 有新增约束条件,而且是成体系地新增
  2. 不仅要新增约束,还必须修改目标函数
  3. 如果要精确到“某个观测到底走直传还是中继”,还必须新增按观测归因的流变量

最小可行扩展是:

  • 新增直传任务变量
  • 新增观测星和地面站上的混合互斥约束
  • 新增观测星上的混合数据守恒约束
  • 修改目标函数,避免中继路径被双重奖励

如果要做工程上真正可解释的“闭环方式”输出,则再进一步加入逐观测归因约束。


15. 一句话建议

如果你当前目标是“先让模型能在两种闭环方式并存的输入上快速筛选任务”,先做本文的第一层混合资源-流模型最稳。

如果你后续目标是“论文复现之外,再给出每个目标的闭环路径解释、甘特图链路标注、直传/中继对比统计”,再继续上第二层按观测归因模型

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐