-
优化指标:终端干重相反数$-m_f$
-
优化变量: 手动调整:关键节点序列(总飞行策略) 优化器调整:各关键节点的时间$t_i$
生成步骤:先生成关键节点序列(主要是确定借力的节点),然后优化时间序列
- 最小借力高度:
- 几个轨道交点的要求:
-
小行星:交会(采矿过程)
-
火星:借力(脉冲等效模型,鉴于多数计算结果都是借力后加脉冲更好,目前统一设置成辅助后加脉冲)
-
最长出发窗口:1825天(5年) 最长任务总时间:5475天(15年)
-
最大剩余速度4m/s,否则加脉冲
-
燃料只有500kg,中间任何一次脉冲时发现烧光都必须终止。可行性的预测:先进行剩余燃料的优化,$J=-m_{fuel}$,如果指标最终优化结果可以达到负数,证明可行(时间序列已经加过惩罚),然后再进行采样质量的优化(先保证可行,再保证采样)。
燃料约束的处理方式:不用管燃料,用采样质量表示燃料的可行性。
利用齐奥尔科夫斯基方程,质量是指数降低,则有采样前: $$ m_1=m_0e^{-\frac{\Delta v_1}{I_{sp}g_0}} $$ 其中$\Delta v_1$代表采样前的脉冲总和;
采样后: $$ m_2=(m_1+m_{sample})e^{-\frac{\Delta v_2}{I_{sp}g_0}} $$ 其中$\Delta v_2$代表采样后的脉冲总和。
于是有 $$ (m_0-m_1)+(m_1+m_{sample}-m_2)\leq m_{fuel}\ m_0-m_2+m_{sample}\leq m_{fuel}\ m_0(1-e^{-\frac{\Delta v_1+\Delta v_2}{I_{sp}g_0}})+m_{sample}(1-e^{-\frac{\Delta v_2}{I_{sp}g_0}})\leq m_{fuel} $$ 总的来说就是质量指数降低,其中样本质量只参与了返程的燃料消耗,初始干重参与了往返程的燃料消耗,这样就可以直接得到燃料消耗。
轨道根数:已经保存在.mat文件中
单位换算:已经保存在.mat文件中 不过发现用全局会有Bug,所以还是老老实实c+v进优化函数 单位换算关系: 时间:年,为了减少优化计算量 长度:AU,以地球公转轨道半长轴为准 速度、引力系数单位:用时间、长度重新换算 轨道根数换算:封装成了一个数组,除了半长轴使用长度单位换算,其他全部置1 g=9.80665$m/s^2$
比冲:3000s
初始干重:500kg
燃料:共500kg
如何获取优化指标:
-
直接给采样质量撒点。如果燃料发现不足,给惩罚(指标为负,给个正数就行,比如1)
-
先进行脉冲优化,取总脉冲量最小的一种,然后计算最大能采多少(比较粗略,可以先比结果)
- 质量变化:第一次借力前只用算总重,鉴于比冲很大,一次脉冲量级约在$5\sim 7*10^3m/s$以下,所以脉冲一次花掉的燃料占据总重大约为
这个质量消耗还是相当大的,以初始干重霍曼转移为例,会花掉总重近20%质量的燃料,相当于30~40%的燃料。如果要去Psyche,不借力连到达都成问题。
- 如果满燃料返回能装多少?
假设我们上火星借力一次回了地球,那么以$10^4m/s$来估算,花掉的燃料占据总重的28.3%,那么燃料就占总重的28.3%,也就是大概能采770kg的小行星。之后计算的结果应该和这个值在同一量级。
- 时间分析:
出发窗口是5年,我们知道地火借力的等待周期是777.9天,约为两年多一点,而火星周期是2年。所以等待借力时机足够用,最好能在两年内出发,为多次借力(主要是共振借力,后续方案改进可能会用)留下时间。
总的任务时间是15年。小行星的半长轴约为地球的3倍,周期就是大约5.2年,也就是采样后返回的速度要快,不能等,除非使用循环轨道,多次采样,但是也要采完后立刻返回。
共振轨道最好周期是火星的两倍,再多时间就超过了。
(注:以下变量除了质量外全部采用新单位计算)
1 | 从地球出发,脉冲 | |
---|---|---|
6 | 第一次火星借力,前往小行星,脉冲 |
|
2 | 到达小行星,交会,脉冲 | |
3 | 采样,质量瞬间变化 | |
4 | 从小行星返航,脉冲 | |
6 | 第二次火星借力,回地球,脉冲 |
|
5 | 到达地球,脉冲 |
优化变量序列:[$t_0, t_1, t_2, t_3, t_4, t_5, r_{p_1},r_{p_2},\phi_1, \phi_2, m_f]$
/astrodynamics-utils:自己写的轨道计算工具包,主要包括了轨道根数计算的函数、各种特殊转移以及简单双脉冲轨道转移优化的示例程序,前者主要用于轨迹的实际计算,后者主要用于前期的量级估算和几个行星的轨迹观察。
/numerical_analysis:自己写的数值分析工具库,里面非线性方程求解的部分是/astrodynamics-utils的依赖项。
/src:大作业的主体部分源码,包括xx_main
,xx_obj
,xx_obj1
三种.m文件
方案简称 | 文件结构 | 备注 |
---|---|---|
monoGA | monoGA_main.m | 主程序,包括优化和所有需要的物理量的重新求解 |
monoGA_obj1.m | 优化函数,因为燃料约束比较容易超过,使用惩罚项不太容易立刻得到符合条件的解(会一直惩罚,优化器没法继续搜索新的解),所以先优化燃料 | |
monoGA_obj.m | 优化函数,和上一个基本一致,但是增加了燃料约束惩罚,优化指标是采样质量的相反数$-m_{sample}$ |
/data:保存了轨道根数数据和每个方案的求解数据
/result:保存了上传的数据和轨迹图
和助教沟通了一些约束上的细节之后小修了代码,目前已经获得890kg的结果,已经上传,但是精度没过(10km)。
修改了牛顿迭代器的精度,之前是1e-7,现在修改成1e-12,并且新增了1085kg的结果,星期五等验证。
最终生成了1243.76kg的指标,已经通过验证。该方案暂时告一段落,下一步准备尝试一下借力双椭圆方案。
问题:时间可能不够,要么就是燃料消耗大(一般椭圆越长越好,特别是借力情况下,但显然椭圆太长了时间问题会很严重)
问题:还是时间不够,需要精准的保持两倍火星周期才可以(就是加了4年),时间上会较紧。目前双借力方案的时间大概在12.5年左右,只空出了不到3年