Skip to content

pollycoder/bigProject-asteroidMiner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4cb5f62 · Jan 27, 2024

History

61 Commits
Jan 26, 2024
Jan 27, 2024
Jan 27, 2024
Jan 27, 2024
Nov 22, 2023
Nov 22, 2023
Jan 22, 2024

Repository files navigation

航天动力学大作业

1. 题目信息解读

(1) 优化指标和优化变量

  • 优化指标:终端干重相反数$-m_f$

  • 优化变量: 手动调整:关键节点序列(总飞行策略) 优化器调整:各关键节点的时间$t_i$

生成步骤:先生成关键节点序列(主要是确定借力的节点),然后优化时间序列

(2) 约束

  • 最小借力高度:

r p 300 k m

  • 几个轨道交点的要求:
  1. 小行星:交会(采矿过程)

  2. 火星:借力(脉冲等效模型,鉴于多数计算结果都是借力后加脉冲更好,目前统一设置成辅助后加脉冲)

  3. 最长出发窗口:1825天(5年) 最长任务总时间:5475天(15年)

  4. 最大剩余速度4m/s,否则加脉冲

  5. 燃料只有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} $$ 总的来说就是质量指数降低,其中样本质量只参与了返程的燃料消耗,初始干重参与了往返程的燃料消耗,这样就可以直接得到燃料消耗。

(3) 已知量

轨道根数:已经保存在.mat文件中

单位换算:已经保存在.mat文件中 不过发现用全局会有Bug,所以还是老老实实c+v进优化函数 单位换算关系: 时间:年,为了减少优化计算量 长度:AU,以地球公转轨道半长轴为准 速度、引力系数单位:用时间、长度重新换算 轨道根数换算:封装成了一个数组,除了半长轴使用长度单位换算,其他全部置1 g=9.80665$m/s^2$

比冲:3000s

初始干重:500kg

燃料:共500kg

2. 方案生成

11.26 双借力

方案概述:去时借力一次,回时借力一次,只采一次

如何获取优化指标:

  1. 直接给采样质量撒点。如果燃料发现不足,给惩罚(指标为负,给个正数就行,比如1)

  2. 先进行脉冲优化,取总脉冲量最小的一种,然后计算最大能采多少(比较粗略,可以先比结果)

问题分析:

  1. 质量变化:第一次借力前只用算总重,鉴于比冲很大,一次脉冲量级约在$5\sim 7*10^3m/s$以下,所以脉冲一次花掉的燃料占据总重大约为

1 e 1 3 15.3

这个质量消耗还是相当大的,以初始干重霍曼转移为例,会花掉总重近20%质量的燃料,相当于30~40%的燃料。如果要去Psyche,不借力连到达都成问题。

  1. 如果满燃料返回能装多少?

假设我们上火星借力一次回了地球,那么以$10^4m/s$来估算,花掉的燃料占据总重的28.3%,那么燃料就占总重的28.3%,也就是大概能采770kg的小行星。之后计算的结果应该和这个值在同一量级。

  1. 时间分析:

出发窗口是5年,我们知道地火借力的等待周期是777.9天,约为两年多一点,而火星周期是2年。所以等待借力时机足够用,最好能在两年内出发,为多次借力(主要是共振借力,后续方案改进可能会用)留下时间。

总的任务时间是15年。小行星的半长轴约为地球的3倍,周期就是大约5.2年,也就是采样后返回的速度要快,不能等,除非使用循环轨道,多次采样,但是也要采完后立刻返回。

共振轨道最好周期是火星的两倍,再多时间就超过了。

优化变量:(事件序列-变量名)

(注:以下变量除了质量外全部采用新单位计算)

1 从地球出发,脉冲 t 0
6 第一次火星借力,前往小行星,脉冲 t 1 ,$r_{p_1}$, ϕ 1
2 到达小行星,交会,脉冲 t 2
3 采样,质量瞬间变化 m f
4 从小行星返航,脉冲 t 3
6 第二次火星借力,回地球,脉冲 t 4 ,$r_{p_2}$,$\phi_2$
5 到达地球,脉冲 t 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_mainxx_objxx_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的指标,已经通过验证。该方案暂时告一段落,下一步准备尝试一下借力双椭圆方案。

12.14 借力+双椭圆/共振借力

方案概述:如果借力足够大,在Psyche轨道外侧找一处,做双椭圆。

问题:时间可能不够,要么就是燃料消耗大(一般椭圆越长越好,特别是借力情况下,但显然椭圆太长了时间问题会很严重)

方案2概述:如果用共振轨道,有没有可能进一步减小脉冲?

问题:还是时间不够,需要精准的保持两倍火星周期才可以(就是加了4年),时间上会较紧。目前双借力方案的时间大概在12.5年左右,只空出了不到3年

About

Big project for Astrodynamics course.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages