e2m2e.algorithm.transfer.cost 源代码

"""转移轨道脉冲代价计算模块。

提供 ΔV 出发/插入脉冲及总代价的计算。
"""

from typing import NamedTuple

import numpy as np


[文档] class TransferCost(NamedTuple): """转移代价三元组(无量纲速度单位)。 Attributes: dv1: 出发脉冲大小。 dv2: 插入脉冲大小。 total: dv1 + dv2。 """ dv1: float dv2: float total: float
[文档] def compute_transfer_cost( departure_state: np.ndarray, initial_velocity: np.ndarray, final_velocity: np.ndarray, insertion_velocity: np.ndarray, ) -> TransferCost: """计算两脉冲转移代价 Δv₁ + Δv₂。 Args: departure_state: 出发点六维状态 [x,y,z,vx,vy,vz]。 initial_velocity: 出发注入速度(调整后)[vx,vy,vz]。 final_velocity: 转移轨迹末端速度 [vx,vy,vz]。 insertion_velocity: 目标轨道上插入点的速度 [vx,vy,vz]。 Returns: TransferCost 含 dv1、dv2 及 total。 """ # departure_state[3:] 即出发点的原始速度;与注入速度之差给出出发脉冲 dv1 = float(np.linalg.norm(initial_velocity - departure_state[3:])) # 转移末端速度与目标轨道插入速度之差给出插入脉冲 dv2 = float(np.linalg.norm(final_velocity - insertion_velocity)) return TransferCost(dv1=dv1, dv2=dv2, total=dv1 + dv2)