Class PenalizedCartesianFuelCost

  • All Implemented Interfaces:
    CartesianCost
    Direct Known Subclasses:
    LogarithmicBarrierCartesianFuel, QuadraticPenaltyCartesianFuel

    public abstract class PenalizedCartesianFuelCost
    extends AbstractCartesianCost
    Abstract class for fuel cost with a penalty term proportional to a weight parameter epsilon. This is typically used in a continuation method, starting from epsilon equal to 1 and going towards 0 where the fuel cost is recovered. The point is to enhance convergence. The control vector is the normalized (by the upper bound on magnitude) thrust force in propagation frame. See the following reference: BERTRAND, Régis et EPENOY, Richard. New smoothing techniques for solving bang–bang optimal control problems—numerical results and statistical interpretation. Optimal Control Applications and Methods, 2002, vol. 23, no 4, p. 171-197.
    Since:
    13.0
    Author:
    Romain Serra
    See Also:
    CartesianFuelCost
    • Constructor Detail

      • PenalizedCartesianFuelCost

        protected PenalizedCartesianFuelCost​(String name,
                                             double massFlowRateFactor,
                                             double maximumThrustMagnitude,
                                             double epsilon)
        Constructor.
        Parameters:
        name - adjoint name
        massFlowRateFactor - mass flow rate factor
        maximumThrustMagnitude - maximum thrust magnitude
        epsilon - penalty weight
    • Method Detail

      • getEpsilon

        public double getEpsilon()
        Getter for the penalty weight epsilon.
        Returns:
        epsilon
      • getMaximumThrustMagnitude

        public double getMaximumThrustMagnitude()
        Getter for maximum thrust magnitude.
        Returns:
        maximum thrust
      • evaluatePenaltyFunction

        public abstract double evaluatePenaltyFunction​(double controlNorm)
        Evaluate the penalty term (without the weight), assumed to be a function of the control norm.
        Parameters:
        controlNorm - Euclidean norm of control vector
        Returns:
        penalty function
      • getThrustDirection

        protected Vector3D getThrustDirection​(double[] adjointVariables)
        Computes the direction of thrust.
        Parameters:
        adjointVariables - adjoint vector
        Returns:
        thrust direction
      • getHamiltonianContribution

        public double getHamiltonianContribution​(double[] adjointVariables,
                                                 double mass)
        Computes the Hamiltonian contribution of the cost function.
        Parameters:
        adjointVariables - adjoint vector
        mass - mass
        Returns:
        contribution to Hamiltonian