e2m2e.transfer package
e2m2e 转移轨道设计模块
提供 DRO-RO 转移轨道的网格搜索和 NLP 优化工具,实现 Cui et al. (2025) 的"搜索-优化"两步法。
- Classes:
SearchConfig: 搜索/优化参数配置 dataclass TransferSearch: 通用轨道转移网格搜索 Transfer: 简化的转移轨道优化接口 DROTRONLPOptimizer: DRO-RO 转移轨道 NLP 优化器 COPTNLPSolver: 基于 COPT 的 NLP 求解器封装
- Functions:
load_orbit_from_json: 从 JSON 文件加载轨道数据 optimize_transfer: 便捷函数:优化 DRO 到 RO 转移 optimize_with_copt: 使用 COPT 求解 NLP
- class e2m2e.transfer.SearchConfig(alpha_min=None, alpha_max=None, n_alpha=None, n_departure=None, max_transfer_time=None, intersection_threshold=None, min_distance_threshold=None, collision_earth_radius=None, collision_moon_radius=None, integration_dt=None, alpha_range=None, transfer_time_range=None, t_ins_range=None, velocity_angle_tolerance=None)[源代码]
基类:
objectTransferSearch 网格搜索配置
所有参数默认为 None,使用前须显式赋值或通过
configure_search()/search()设置。- 参数:
alpha_min (float | None)
alpha_max (float | None)
n_alpha (int | None)
n_departure (int | None)
max_transfer_time (float | None)
intersection_threshold (float | None)
min_distance_threshold (float | None)
collision_earth_radius (float | None)
collision_moon_radius (float | None)
integration_dt (float | None)
velocity_angle_tolerance (float | None)
- class e2m2e.transfer.TransferSearch(dynamics, name='TransferSearch', config=None)[源代码]
基类:
object通用轨道转移搜索算法
实现论文Section III.A的搜索阶段算法: 1. 从出发点轨道等时间间隔采样 2. 对每个出发点,网格化搜索α 3. 前向积分获取转移轨迹 4. 筛选与目标轨道相交或距离局部最小的候选解
搜索参数集中存储在
self.config``(:class:`SearchConfig` dataclass)中, 同时通过属性代理提供向后兼容的直接读写访问(``self.alpha_min等)。- 使用方式:
transfer = TransferSearch(dynamics) transfer.configure_search(alpha_min=0.5, alpha_max=2.5, n_alpha=101) results = transfer.search(...)
- 或通过 SearchConfig:
from e2m2e.transfer import SearchConfig cfg = SearchConfig(alpha_min=0.5, alpha_max=2.5, n_alpha=101) transfer = TransferSearch(dynamics, config=cfg)
- 参数:
dynamics (CR3BP_Dynamics)
name (str)
config (SearchConfig | None)
- property config: SearchConfig
搜索/优化配置对象。
- set_parallel_backend(backend)[源代码]
设置并行后端:``processes``(默认,多进程)或 ``threads``(多线程)。
- 参数:
backend (str)
- 返回类型:
- search(*, alpha_min, alpha_max, n_alpha, n_departure, max_transfer_time, intersection_threshold, min_distance_threshold, collision_earth_radius, collision_moon_radius, integration_dt, departure_orbit=None, arrival_orbit=None, verbose=True, n_workers=None, parallel_backend='processes')[源代码]
执行网格搜索
- 参数:
alpha_min (float) -- α 下界
alpha_max (float) -- α 上界
n_alpha (int) -- α 方向网格点数
n_departure (int) -- 出发点采样数量
max_transfer_time (float) -- 最大转移时间(CR3BP 无量纲时间)
intersection_threshold (float) -- 相交判定距离阈值
min_distance_threshold (float) -- 候选解距离阈值
collision_earth_radius (float) -- 地球碰撞检测半径
collision_moon_radius (float) -- 月球碰撞检测半径
integration_dt (float) -- 积分时间步长
departure_orbit (Orbit | None) -- 出发轨道(可选,未提供则使用已设置的轨道)
arrival_orbit (Orbit | None) -- 目标轨道(可选,未提供则使用已设置的轨道)
verbose (bool) -- 是否输出详细信息(含进度)
n_workers (int | None) -- 并行 worker 数量
parallel_backend (str) --
processes``(默认)或 ``threads
- 返回:
搜索结果列表
- 返回类型:
- e2m2e.transfer.DROTransferSearch
TransferSearch的别名
- e2m2e.transfer.DROROTransferSearch
TransferSearch的别名
- class e2m2e.transfer.Transfer(dynamics)[源代码]
基类:
objectDRO-RO 转移轨迹优化器
提供基于 NLP 方法的 DRO(远距逆行轨道)到 RO(直线轨道)转移轨迹优化简化接口。
示例
>>> from e2m2e.transfer import Transfer, TransferConfig >>> from e2m2e.core import CR3BP_System, CR3BP_Dynamics >>> from scripts.utils.common import MU >>> >>> system = CR3BP_System(mu=MU, primary="earth", secondary="moon") >>> dynamics = CR3BP_Dynamics(system=system) >>> transfer = Transfer(dynamics) >>> transfer.set_orbit(start=dro_orbit, end=ro_orbit) >>> result = transfer.optimize( ... initial_guess={"alpha": 1.0, "transfer_time": 15.0, "t_ins": 5.0}, ... alpha_range=(0.5, 2.5), ... use_relaxed_velocity=True, ... velocity_angle_tol=0.05, ... )
- 参数:
dynamics (CR3BP_Dynamics)
- __init__(dynamics)[源代码]
初始化转移优化器
- 参数:
dynamics (CR3BP_Dynamics) -- CR3BP 动力学实例,用于轨道传播
- property config: TransferConfig
转移优化配置。
- property result: TransferOptimizationResult | None
最新优化结果。
- optimize(initial_guess, alpha_range, departure_state=None, t_ins_range=None, use_relaxed_velocity=None, velocity_angle_tol=None)[源代码]
优化转移轨迹
- 参数:
initial_guess (dict[str, float]) -- 初始猜测,包含 'alpha'、'transfer_time'、't_ins'
departure_state (ndarray | None) -- 手动指定出发点状态 [6];None 时自动从 DRO 采样
t_ins_range (tuple[float, float] | None) -- RO 上的插入时间范围,默认为完整 RO 周期
use_relaxed_velocity (bool | None) -- 覆盖配置中的 use_relaxed_velocity
velocity_angle_tol (float | None) -- 覆盖配置中的 velocity_angle_tol
- 返回:
TransferOptimizationResult,包含优化详情
- 返回类型:
- class e2m2e.transfer.TransferConfig(alpha_min=0.5, alpha_max=2.5, earth_radius=0.0005202845956738336, moon_radius=0.0002601422978369168, use_relaxed_velocity=True, velocity_angle_tol=0.05, use_copt=False, fallback_to_scipy=True)[源代码]
基类:
object转移优化配置
- 参数:
- class e2m2e.transfer.TransferOptimizationResult(success=False, message='', departure_state=None, departure_alpha=0.0, departure_beta=0.0, insertion_state=None, final_state=None, delta_v1=0.0, delta_v2=0.0, total_delta_v=0.0, transfer_time=0.0, t_ins=0.0, transfer_trajectory=None, transfer_trajectory_times=None, constraints_violation=0.0)[源代码]
基类:
object转移优化结果
- 参数:
success (bool)
message (str)
departure_state (ndarray | None)
departure_alpha (float)
departure_beta (float)
insertion_state (ndarray | None)
final_state (ndarray | None)
delta_v1 (float)
delta_v2 (float)
total_delta_v (float)
transfer_time (float)
t_ins (float)
transfer_trajectory (ndarray | None)
transfer_trajectory_times (ndarray | None)
constraints_violation (float)
- departure_state
出发点状态 [x, y, z, vx, vy, vz]
- Type:
numpy.ndarray | None
- insertion_state
RO 上的插入点状态 [x, y, z, vx, vy, vz]
- Type:
numpy.ndarray | None
- final_state
插入后最终状态 [x, y, z, vx, vy, vz]
- Type:
numpy.ndarray | None
- transfer_trajectory
完整转移轨迹 [n_steps, 6]
- Type:
numpy.ndarray | None
- transfer_trajectory_times
轨迹时间序列 [n_steps]
- Type:
numpy.ndarray | None
- class e2m2e.transfer.DROTRONLPOptimizer(system, dynamics, departure_orbit, arrival_orbit, departure_state)[源代码]
基类:
objectDRO到RO转移轨道NLP优化器
实现论文Section III.B的优化阶段算法。 使用SQP(序贯二次规划)方法求解NLP问题。
- 参数:
system (CR3BP_System)
dynamics (CR3BP_Dynamics)
departure_orbit (Orbit)
arrival_orbit (Orbit)
departure_state (np.ndarray)
- system
CR3BP系统对象
- dynamics
CR3BP动力学对象
- departure_orbit
出发点轨道
- arrival_orbit
目标轨道
- departure_state
出发点状态
- alpha_range
α搜索范围
- velocity_angle_tolerance
速度平行性容差(弧度)
- earth_radius
地球半径(无量纲)
- moon_radius
月球半径(无量纲)
- DEFAULT_ALPHA_RANGE = (0.5, 2.5)
- DEFAULT_TRANSFER_TIME_RANGE = (1.0, 30.0)
- DEFAULT_T_INS_RANGE = (0.0, 10.0)
- EARTH_RADIUS_ND = 0.016366661277947565
- MOON_RADIUS_ND = 0.00452159209157128
- DEFAULT_VELOCITY_ANGLE_TOL = 1e-06
- __init__(system, dynamics, departure_orbit, arrival_orbit, departure_state)[源代码]
初始化NLP优化器
- 参数:
system (CR3BP_System) -- CR3BP系统对象
dynamics (CR3BP_Dynamics) -- CR3BP动力学对象
departure_orbit (Orbit) -- 出发点轨道
arrival_orbit (Orbit) -- 目标轨道
departure_state (ndarray) -- 出发点状态 [x, y, z, vx, vy, vz]
- get_arrival_state_at_t_ins(t_ins)[源代码]
获取目标轨道上 t_ins(绝对时间)对应的状态
- 参数:
t_ins (float) -- 绝对时间(与 orbit.times 同一坐标系)
- 返回:
位置和速度
- 返回类型:
(position, velocity)
- constraint_position(y)[源代码]
位置连续性约束 Eq.(13)
(x_f - x_ins)^2 + (y_f - y_ins)^2 + (z_f - z_ins)^2 = 0
- constraint_velocity_parallel(y)[源代码]
速度平行性约束 Eq.(14) 或relaxed Eq.(17)
v_f · v_ins / (||v_f|| ||v_ins||) - 1 = 0
- check_collision(y)[源代码]
检查是否撞击地球或月球
- 参数:
y (ndarray) -- 优化变量 [alpha, T, t_ins]
- 返回:
是否撞击地球、月球
- 返回类型:
(earth_collision, moon_collision)
- optimize(initial_guess=None, alpha_range=None, transfer_time_range=None, t_ins_range=None, use_relaxed_velocity_constraint=False, velocity_angle_constraint=0.0, verbose=True)[源代码]
执行NLP优化
- 参数:
initial_guess (NLPOptimizationVariables | None) -- 初始猜测
use_relaxed_velocity_constraint (bool) -- 是否使用松弛速度约束
velocity_angle_constraint (float) -- 松弛速度约束角度(弧度)
verbose (bool) -- 是否打印信息
- 返回:
优化结果
- 返回类型:
- class e2m2e.transfer.NLPOptimizationResult(alpha=0.0, transfer_time=0.0, t_ins=0.0, objective_value=0.0, delta_v1=0.0, delta_v2=0.0, transfer_trajectory=None, transfer_times=None, departure_state=None, insertion_state=None, final_state=None, success=False, message='', transfer_type=TransferType.DIRECT, constraints_violation=<factory>)[源代码]
基类:
objectNLP优化结果
- 参数:
alpha (float)
transfer_time (float)
t_ins (float)
objective_value (float)
delta_v1 (float)
delta_v2 (float)
transfer_trajectory (ndarray | None)
transfer_times (ndarray | None)
departure_state (ndarray | None)
insertion_state (ndarray | None)
final_state (ndarray | None)
success (bool)
message (str)
transfer_type (TransferType)
- transfer_trajectory
转移轨迹状态序列
- Type:
numpy.ndarray | None
- transfer_times
转移轨迹时间序列
- Type:
numpy.ndarray | None
- departure_state
出发点状态
- Type:
numpy.ndarray | None
- insertion_state
插入点状态
- Type:
numpy.ndarray | None
- final_state
转移轨迹末端状态
- Type:
numpy.ndarray | None
- transfer_type
转移类型
- transfer_type: TransferType = 'direct'
- class e2m2e.transfer.NLPOptimizationVariables(alpha=0.0, transfer_time=0.0, t_ins=0.0)[源代码]
基类:
objectNLP优化变量
优化变量: y = {α, T, t_ins}
- class e2m2e.transfer.TransferType(*values)[源代码]
基类:
Enum- DIRECT = 'direct'
- LGA = 'lga'
- EXTERNAL = 'external'
- e2m2e.transfer.optimize_transfer(system, dynamics, departure_orbit, arrival_orbit, departure_state, initial_guess=None, **kwargs)[源代码]
便捷函数: 优化DRO到RO转移
- 参数:
system (CR3BP_System) -- CR3BP系统
dynamics (CR3BP_Dynamics) -- CR3BP动力学
departure_orbit (Orbit) -- 出发点轨道
arrival_orbit (Orbit) -- 目标轨道
departure_state (ndarray) -- 出发点状态
initial_guess (NLPOptimizationVariables | None) -- 初始猜测
**kwargs -- 其他优化参数
- 返回:
优化结果
- 返回类型:
- e2m2e.transfer.optimize_with_copt(optimizer, initial_guess=None, *, fallback_to_scipy=True, max_iter=1000, threads=1, bar_threads=1, time_limit=None, scipy_fallback_kwargs=None)[源代码]
使用 COPT 求解 NLP(与
data_processing_module中用法一致:cp.Envr/createModel/COPT.Param/solve)。数学形式与
DROTRONLPOptimizer.optimize相同(等式约束 + 最小化 Δv)。- 参数:
optimizer (DROTRONLPOptimizer) -- 已设置
alpha_range/transfer_time_range/t_ins_range的DROTRONLPOptimizerinitial_guess (NLPOptimizationVariables | None) -- 初始猜测
(α, T, t_ins);默认(1, 10, 5)fallback_to_scipy (bool) -- 未安装 COPT 或求解失败时是否回退 SciPy SLSQP
max_iter (int) --
COPT.Param.NLPIterLimitbar_threads (int) --
COPT.Param.Threads/ ``BarThreads``(Python 回调建议为 1)time_limit (float | None) -- 若给定,则设置 ``COPT.Param.TimeLimit``(秒),与参考脚本中 MILP 用法一致
scipy_fallback_kwargs (dict[str, Any] | None) -- 回退时传给
optimizer.optimize的额外参数threads (int)
bar_threads
- 返回:
NLPOptimizationResult- 返回类型:
Submodules
e2m2e.transfer.transfer module
DRO-RO 转移轨迹优化模块
提供基于 NLP 方法(Cui et al. 2025)的简化转移轨迹优化接口。
- class e2m2e.transfer.transfer.TransferConfig(alpha_min=0.5, alpha_max=2.5, earth_radius=0.0005202845956738336, moon_radius=0.0002601422978369168, use_relaxed_velocity=True, velocity_angle_tol=0.05, use_copt=False, fallback_to_scipy=True)[源代码]
基类:
object转移优化配置
- 参数:
- class e2m2e.transfer.transfer.TransferOptimizationResult(success=False, message='', departure_state=None, departure_alpha=0.0, departure_beta=0.0, insertion_state=None, final_state=None, delta_v1=0.0, delta_v2=0.0, total_delta_v=0.0, transfer_time=0.0, t_ins=0.0, transfer_trajectory=None, transfer_trajectory_times=None, constraints_violation=0.0)[源代码]
基类:
object转移优化结果
- 参数:
success (bool)
message (str)
departure_state (ndarray | None)
departure_alpha (float)
departure_beta (float)
insertion_state (ndarray | None)
final_state (ndarray | None)
delta_v1 (float)
delta_v2 (float)
total_delta_v (float)
transfer_time (float)
t_ins (float)
transfer_trajectory (ndarray | None)
transfer_trajectory_times (ndarray | None)
constraints_violation (float)
- departure_state
出发点状态 [x, y, z, vx, vy, vz]
- Type:
numpy.ndarray | None
- insertion_state
RO 上的插入点状态 [x, y, z, vx, vy, vz]
- Type:
numpy.ndarray | None
- final_state
插入后最终状态 [x, y, z, vx, vy, vz]
- Type:
numpy.ndarray | None
- transfer_trajectory
完整转移轨迹 [n_steps, 6]
- Type:
numpy.ndarray | None
- transfer_trajectory_times
轨迹时间序列 [n_steps]
- Type:
numpy.ndarray | None
- class e2m2e.transfer.transfer.Transfer(dynamics)[源代码]
基类:
objectDRO-RO 转移轨迹优化器
提供基于 NLP 方法的 DRO(远距逆行轨道)到 RO(直线轨道)转移轨迹优化简化接口。
示例
>>> from e2m2e.transfer import Transfer, TransferConfig >>> from e2m2e.core import CR3BP_System, CR3BP_Dynamics >>> from scripts.utils.common import MU >>> >>> system = CR3BP_System(mu=MU, primary="earth", secondary="moon") >>> dynamics = CR3BP_Dynamics(system=system) >>> transfer = Transfer(dynamics) >>> transfer.set_orbit(start=dro_orbit, end=ro_orbit) >>> result = transfer.optimize( ... initial_guess={"alpha": 1.0, "transfer_time": 15.0, "t_ins": 5.0}, ... alpha_range=(0.5, 2.5), ... use_relaxed_velocity=True, ... velocity_angle_tol=0.05, ... )
- 参数:
dynamics (CR3BP_Dynamics)
- __init__(dynamics)[源代码]
初始化转移优化器
- 参数:
dynamics (CR3BP_Dynamics) -- CR3BP 动力学实例,用于轨道传播
- property config: TransferConfig
转移优化配置。
- property result: TransferOptimizationResult | None
最新优化结果。
- optimize(initial_guess, alpha_range, departure_state=None, t_ins_range=None, use_relaxed_velocity=None, velocity_angle_tol=None)[源代码]
优化转移轨迹
- 参数:
initial_guess (dict[str, float]) -- 初始猜测,包含 'alpha'、'transfer_time'、't_ins'
departure_state (ndarray | None) -- 手动指定出发点状态 [6];None 时自动从 DRO 采样
t_ins_range (tuple[float, float] | None) -- RO 上的插入时间范围,默认为完整 RO 周期
use_relaxed_velocity (bool | None) -- 覆盖配置中的 use_relaxed_velocity
velocity_angle_tol (float | None) -- 覆盖配置中的 velocity_angle_tol
- 返回:
TransferOptimizationResult,包含优化详情
- 返回类型:
e2m2e.transfer.transfer_optimization module
DRO到RO转移轨道NLP优化模块
实现论文Cui et al. (2025)中的"搜索-优化"两步法的优化阶段。 优化变量: y = {α, T, t_ins} 目标函数: J(y) = Δv1 + Δv2 约束: 位置连续性、速度平行性、撞星约束
- class e2m2e.transfer.transfer_optimization.TransferType(*values)[源代码]
基类:
Enum- DIRECT = 'direct'
- LGA = 'lga'
- EXTERNAL = 'external'
- class e2m2e.transfer.transfer_optimization.NLPOptimizationVariables(alpha=0.0, transfer_time=0.0, t_ins=0.0)[源代码]
基类:
objectNLP优化变量
优化变量: y = {α, T, t_ins}
- class e2m2e.transfer.transfer_optimization.NLPOptimizationResult(alpha=0.0, transfer_time=0.0, t_ins=0.0, objective_value=0.0, delta_v1=0.0, delta_v2=0.0, transfer_trajectory=None, transfer_times=None, departure_state=None, insertion_state=None, final_state=None, success=False, message='', transfer_type=TransferType.DIRECT, constraints_violation=<factory>)[源代码]
基类:
objectNLP优化结果
- 参数:
alpha (float)
transfer_time (float)
t_ins (float)
objective_value (float)
delta_v1 (float)
delta_v2 (float)
transfer_trajectory (ndarray | None)
transfer_times (ndarray | None)
departure_state (ndarray | None)
insertion_state (ndarray | None)
final_state (ndarray | None)
success (bool)
message (str)
transfer_type (TransferType)
- transfer_trajectory
转移轨迹状态序列
- Type:
numpy.ndarray | None
- transfer_times
转移轨迹时间序列
- Type:
numpy.ndarray | None
- departure_state
出发点状态
- Type:
numpy.ndarray | None
- insertion_state
插入点状态
- Type:
numpy.ndarray | None
- final_state
转移轨迹末端状态
- Type:
numpy.ndarray | None
- transfer_type
转移类型
- transfer_type: TransferType = 'direct'
- class e2m2e.transfer.transfer_optimization.DROTRONLPOptimizer(system, dynamics, departure_orbit, arrival_orbit, departure_state)[源代码]
基类:
objectDRO到RO转移轨道NLP优化器
实现论文Section III.B的优化阶段算法。 使用SQP(序贯二次规划)方法求解NLP问题。
- 参数:
system (CR3BP_System)
dynamics (CR3BP_Dynamics)
departure_orbit (Orbit)
arrival_orbit (Orbit)
departure_state (np.ndarray)
- system
CR3BP系统对象
- dynamics
CR3BP动力学对象
- departure_orbit
出发点轨道
- arrival_orbit
目标轨道
- departure_state
出发点状态
- alpha_range
α搜索范围
- velocity_angle_tolerance
速度平行性容差(弧度)
- earth_radius
地球半径(无量纲)
- moon_radius
月球半径(无量纲)
- DEFAULT_ALPHA_RANGE = (0.5, 2.5)
- DEFAULT_TRANSFER_TIME_RANGE = (1.0, 30.0)
- DEFAULT_T_INS_RANGE = (0.0, 10.0)
- EARTH_RADIUS_ND = 0.016366661277947565
- MOON_RADIUS_ND = 0.00452159209157128
- DEFAULT_VELOCITY_ANGLE_TOL = 1e-06
- __init__(system, dynamics, departure_orbit, arrival_orbit, departure_state)[源代码]
初始化NLP优化器
- 参数:
system (CR3BP_System) -- CR3BP系统对象
dynamics (CR3BP_Dynamics) -- CR3BP动力学对象
departure_orbit (Orbit) -- 出发点轨道
arrival_orbit (Orbit) -- 目标轨道
departure_state (ndarray) -- 出发点状态 [x, y, z, vx, vy, vz]
- get_arrival_state_at_t_ins(t_ins)[源代码]
获取目标轨道上 t_ins(绝对时间)对应的状态
- 参数:
t_ins (float) -- 绝对时间(与 orbit.times 同一坐标系)
- 返回:
位置和速度
- 返回类型:
(position, velocity)
- constraint_position(y)[源代码]
位置连续性约束 Eq.(13)
(x_f - x_ins)^2 + (y_f - y_ins)^2 + (z_f - z_ins)^2 = 0
- constraint_velocity_parallel(y)[源代码]
速度平行性约束 Eq.(14) 或relaxed Eq.(17)
v_f · v_ins / (||v_f|| ||v_ins||) - 1 = 0
- check_collision(y)[源代码]
检查是否撞击地球或月球
- 参数:
y (ndarray) -- 优化变量 [alpha, T, t_ins]
- 返回:
是否撞击地球、月球
- 返回类型:
(earth_collision, moon_collision)
- optimize(initial_guess=None, alpha_range=None, transfer_time_range=None, t_ins_range=None, use_relaxed_velocity_constraint=False, velocity_angle_constraint=0.0, verbose=True)[源代码]
执行NLP优化
- 参数:
initial_guess (NLPOptimizationVariables | None) -- 初始猜测
use_relaxed_velocity_constraint (bool) -- 是否使用松弛速度约束
velocity_angle_constraint (float) -- 松弛速度约束角度(弧度)
verbose (bool) -- 是否打印信息
- 返回:
优化结果
- 返回类型:
- e2m2e.transfer.transfer_optimization.optimize_transfer(system, dynamics, departure_orbit, arrival_orbit, departure_state, initial_guess=None, **kwargs)[源代码]
便捷函数: 优化DRO到RO转移
- 参数:
system (CR3BP_System) -- CR3BP系统
dynamics (CR3BP_Dynamics) -- CR3BP动力学
departure_orbit (Orbit) -- 出发点轨道
arrival_orbit (Orbit) -- 目标轨道
departure_state (ndarray) -- 出发点状态
initial_guess (NLPOptimizationVariables | None) -- 初始猜测
**kwargs -- 其他优化参数
- 返回:
优化结果
- 返回类型:
- e2m2e.transfer.transfer_optimization.optimize_with_copt(optimizer, initial_guess=None, *, fallback_to_scipy=True, max_iter=1000, threads=1, bar_threads=1, time_limit=None, scipy_fallback_kwargs=None)[源代码]
使用 COPT 求解 NLP(与
data_processing_module中用法一致:cp.Envr/createModel/COPT.Param/solve)。数学形式与
DROTRONLPOptimizer.optimize相同(等式约束 + 最小化 Δv)。- 参数:
optimizer (DROTRONLPOptimizer) -- 已设置
alpha_range/transfer_time_range/t_ins_range的DROTRONLPOptimizerinitial_guess (NLPOptimizationVariables | None) -- 初始猜测
(α, T, t_ins);默认(1, 10, 5)fallback_to_scipy (bool) -- 未安装 COPT 或求解失败时是否回退 SciPy SLSQP
max_iter (int) --
COPT.Param.NLPIterLimitbar_threads (int) --
COPT.Param.Threads/ ``BarThreads``(Python 回调建议为 1)time_limit (float | None) -- 若给定,则设置 ``COPT.Param.TimeLimit``(秒),与参考脚本中 MILP 用法一致
scipy_fallback_kwargs (dict[str, Any] | None) -- 回退时传给
optimizer.optimize的额外参数threads (int)
bar_threads
- 返回:
NLPOptimizationResult- 返回类型:
e2m2e.transfer.transfer_search module
轨道转移搜索模块
实现论文Cui et al. (2025)中的"搜索-优化"两步法的搜索阶段。 专门用于平面转移轨道设计,搜索变量: 出发点位置、α(切向速度比)
- 使用方式:
transfer = TransferSearch(system, dynamics) transfer.set_departure_orbit(departure_orbit).set_arrival_orbit(arrival_orbit) transfer.alpha_min = 0.5 transfer.alpha_max = 2.5 transfer.n_alpha = 101 # ... 设置其他参数 results = transfer.search()
- class e2m2e.transfer.transfer_search.TransferSearch(dynamics, name='TransferSearch', config=None)[源代码]
基类:
object通用轨道转移搜索算法
实现论文Section III.A的搜索阶段算法: 1. 从出发点轨道等时间间隔采样 2. 对每个出发点,网格化搜索α 3. 前向积分获取转移轨迹 4. 筛选与目标轨道相交或距离局部最小的候选解
搜索参数集中存储在
self.config``(:class:`SearchConfig` dataclass)中, 同时通过属性代理提供向后兼容的直接读写访问(``self.alpha_min等)。- 使用方式:
transfer = TransferSearch(dynamics) transfer.configure_search(alpha_min=0.5, alpha_max=2.5, n_alpha=101) results = transfer.search(...)
- 或通过 SearchConfig:
from e2m2e.transfer import SearchConfig cfg = SearchConfig(alpha_min=0.5, alpha_max=2.5, n_alpha=101) transfer = TransferSearch(dynamics, config=cfg)
- 参数:
dynamics (CR3BP_Dynamics)
name (str)
config (SearchConfig | None)
- property config: SearchConfig
搜索/优化配置对象。
- set_parallel_backend(backend)[源代码]
设置并行后端:``processes``(默认,多进程)或 ``threads``(多线程)。
- 参数:
backend (str)
- 返回类型:
- search(*, alpha_min, alpha_max, n_alpha, n_departure, max_transfer_time, intersection_threshold, min_distance_threshold, collision_earth_radius, collision_moon_radius, integration_dt, departure_orbit=None, arrival_orbit=None, verbose=True, n_workers=None, parallel_backend='processes')[源代码]
执行网格搜索
- 参数:
alpha_min (float) -- α 下界
alpha_max (float) -- α 上界
n_alpha (int) -- α 方向网格点数
n_departure (int) -- 出发点采样数量
max_transfer_time (float) -- 最大转移时间(CR3BP 无量纲时间)
intersection_threshold (float) -- 相交判定距离阈值
min_distance_threshold (float) -- 候选解距离阈值
collision_earth_radius (float) -- 地球碰撞检测半径
collision_moon_radius (float) -- 月球碰撞检测半径
integration_dt (float) -- 积分时间步长
departure_orbit (Orbit | None) -- 出发轨道(可选,未提供则使用已设置的轨道)
arrival_orbit (Orbit | None) -- 目标轨道(可选,未提供则使用已设置的轨道)
verbose (bool) -- 是否输出详细信息(含进度)
n_workers (int | None) -- 并行 worker 数量
parallel_backend (str) --
processes``(默认)或 ``threads
- 返回:
搜索结果列表
- 返回类型:
- e2m2e.transfer.transfer_search.DROTransferSearch
TransferSearch的别名
- e2m2e.transfer.transfer_search.DROROTransferSearch
TransferSearch的别名
e2m2e.transfer.search_config module
转移轨道搜索配置模块
将 TransferSearch 的搜索参数提取为独立的 dataclass, 便于复用、序列化和类型检查。
- class e2m2e.transfer.search_config.SearchConfig(alpha_min=None, alpha_max=None, n_alpha=None, n_departure=None, max_transfer_time=None, intersection_threshold=None, min_distance_threshold=None, collision_earth_radius=None, collision_moon_radius=None, integration_dt=None, alpha_range=None, transfer_time_range=None, t_ins_range=None, velocity_angle_tolerance=None)[源代码]
基类:
objectTransferSearch 网格搜索配置
所有参数默认为 None,使用前须显式赋值或通过
configure_search()/search()设置。- 参数:
alpha_min (float | None)
alpha_max (float | None)
n_alpha (int | None)
n_departure (int | None)
max_transfer_time (float | None)
intersection_threshold (float | None)
min_distance_threshold (float | None)
collision_earth_radius (float | None)
collision_moon_radius (float | None)
integration_dt (float | None)
velocity_angle_tolerance (float | None)