Skip to main content
Glama
optimization.py7.57 kB
"""Trajectory optimization tools for the Aerospace MCP server.""" import json import logging from typing import Literal logger = logging.getLogger(__name__) def optimize_thrust_profile( rocket_geometry: dict, burn_time_s: float, total_impulse_target: float, n_segments: int = 5, objective: Literal[ "max_altitude", "min_max_q", "min_gravity_loss" ] = "max_altitude", ) -> str: """Optimize rocket thrust profile for better performance using trajectory optimization. Args: rocket_geometry: Rocket geometry parameters burn_time_s: Burn time in seconds total_impulse_target: Target total impulse in N⋅s n_segments: Number of thrust segments objective: Optimization objective Returns: JSON string with optimized thrust profile """ try: from ..integrations.trajopt import ( RocketGeometry, ) from ..integrations.trajopt import ( optimize_thrust_profile as _optimize, ) geometry = RocketGeometry(**rocket_geometry) result = _optimize( geometry, burn_time_s, total_impulse_target, n_segments, objective ) return json.dumps( { "optimization_result": result.optimization_result, "optimal_objective": result.optimal_objective, "optimal_parameters": result.optimal_parameters, "performance": { "max_altitude_m": result.performance.max_altitude_m, "max_velocity_ms": result.performance.max_velocity_ms, "total_impulse_ns": result.performance.total_impulse_ns, "apogee_time_s": result.performance.apogee_time_s, }, }, indent=2, ) except ImportError: return "Trajectory optimization not available - install optimization packages" except Exception as e: logger.error(f"Thrust profile optimization error: {str(e)}", exc_info=True) return f"Thrust profile optimization error: {str(e)}" def trajectory_sensitivity_analysis( rocket_geometry: dict, parameter_variations: dict, analysis_options: dict | None = None, ) -> str: """Perform sensitivity analysis on rocket trajectory parameters. Args: rocket_geometry: Baseline rocket geometry parameter_variations: Parameters to vary and their ranges analysis_options: Optional analysis settings Returns: JSON string with sensitivity analysis results """ try: from ..integrations.trajopt import ( RocketGeometry, ) from ..integrations.trajopt import ( trajectory_sensitivity_analysis as _sensitivity, ) geometry = RocketGeometry(**rocket_geometry) result = _sensitivity(geometry, parameter_variations, analysis_options or {}) return json.dumps(result, indent=2) except ImportError: return "Sensitivity analysis not available - install optimization packages" except Exception as e: logger.error(f"Sensitivity analysis error: {str(e)}", exc_info=True) return f"Sensitivity analysis error: {str(e)}" def genetic_algorithm_optimization( optimization_problem: dict, ga_parameters: dict | None = None ) -> str: """Optimize spacecraft trajectory using genetic algorithm. Args: optimization_problem: Problem definition (objective, constraints, variables) ga_parameters: Optional GA parameters (population_size, generations, etc.) Returns: JSON string with optimization results """ try: from ..integrations.trajopt import ( genetic_algorithm_optimization as _ga_optimize, ) result = _ga_optimize(optimization_problem, ga_parameters or {}) return json.dumps(result, indent=2) except ImportError: return "Genetic algorithm optimization not available - install optimization packages" except Exception as e: logger.error(f"GA optimization error: {str(e)}", exc_info=True) return f"GA optimization error: {str(e)}" def particle_swarm_optimization( optimization_problem: dict, pso_parameters: dict | None = None ) -> str: """Optimize spacecraft trajectory using particle swarm optimization. Args: optimization_problem: Problem definition (objective, constraints, variables) pso_parameters: Optional PSO parameters (n_particles, iterations, etc.) Returns: JSON string with optimization results """ try: from ..integrations.trajopt import particle_swarm_optimization as _pso_optimize result = _pso_optimize(optimization_problem, pso_parameters or {}) return json.dumps(result, indent=2) except ImportError: return ( "Particle swarm optimization not available - install optimization packages" ) except Exception as e: logger.error(f"PSO optimization error: {str(e)}", exc_info=True) return f"PSO optimization error: {str(e)}" def porkchop_plot_analysis( departure_body: str, arrival_body: str, departure_date_range: list[str], arrival_date_range: list[str], analysis_options: dict | None = None, ) -> str: """Generate porkchop plot for interplanetary transfer opportunities. Args: departure_body: Departure celestial body name arrival_body: Arrival celestial body name departure_date_range: Range of departure dates (ISO format) arrival_date_range: Range of arrival dates (ISO format) analysis_options: Optional analysis settings Returns: JSON string with porkchop plot data """ try: from ..integrations.trajopt import porkchop_plot_analysis as _porkchop result = _porkchop( departure_body, arrival_body, departure_date_range, arrival_date_range, analysis_options or {}, ) return json.dumps(result, indent=2) except ImportError: return ( "Porkchop plot analysis not available - install space trajectory packages" ) except Exception as e: logger.error(f"Porkchop plot error: {str(e)}", exc_info=True) return f"Porkchop plot error: {str(e)}" def monte_carlo_uncertainty_analysis( nominal_trajectory: dict, uncertainty_parameters: dict, n_samples: int = 1000, analysis_options: dict | None = None, ) -> str: """Perform Monte Carlo uncertainty analysis on spacecraft trajectory. Args: nominal_trajectory: Nominal trajectory parameters uncertainty_parameters: Parameters with uncertainty distributions n_samples: Number of Monte Carlo samples analysis_options: Optional analysis settings Returns: JSON string with uncertainty analysis results """ try: from ..integrations.trajopt import ( monte_carlo_uncertainty_analysis as _monte_carlo, ) result = _monte_carlo( nominal_trajectory, uncertainty_parameters, n_samples, analysis_options or {}, ) return json.dumps(result, indent=2) except ImportError: return "Monte Carlo analysis not available - install optimization packages" except Exception as e: logger.error(f"Monte Carlo analysis error: {str(e)}", exc_info=True) return f"Monte Carlo analysis error: {str(e)}"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cheesejaguar/aerospace-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server