Class FieldPenalizedCartesianFuelCost<T extends CalculusFieldElement<T>>

java.lang.Object
org.orekit.control.indirect.adjoint.cost.FieldAbstractCartesianCost<T>
org.orekit.control.indirect.adjoint.cost.FieldPenalizedCartesianFuelCost<T>
Type Parameters:
T - type of the field elements
All Implemented Interfaces:
FieldCartesianCost<T>
Direct Known Subclasses:
FieldLogarithmicBarrierCartesianFuel, FieldQuadraticPenaltyCartesianFuel

public abstract class FieldPenalizedCartesianFuelCost<T extends CalculusFieldElement<T>> extends FieldAbstractCartesianCost<T>
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:
  • Constructor Details

    • FieldPenalizedCartesianFuelCost

      protected FieldPenalizedCartesianFuelCost(String name, T massFlowRateFactor, T maximumThrustMagnitude, T epsilon)
      Constructor.
      Parameters:
      name - adjoint name
      massFlowRateFactor - mass flow rate factor
      maximumThrustMagnitude - maximum thrust magnitude
      epsilon - penalty weight
  • Method Details

    • getEpsilon

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

      public T getMaximumThrustMagnitude()
      Getter for maximum thrust magnitude.
      Returns:
      maximum thrust
    • evaluateFieldPenaltyFunction

      public abstract T evaluateFieldPenaltyFunction(T 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
    • getFieldThrustDirection

      protected FieldVector3D<T> getFieldThrustDirection(T[] adjointVariables)
      Computes the direction of thrust.
      Parameters:
      adjointVariables - adjoint vector
      Returns:
      thrust direction
    • getFieldHamiltonianContribution

      public T getFieldHamiltonianContribution(T[] adjointVariables, T mass)
      Computes the Hamiltonian contribution to the cost function. It equals the Lagrange-form integrand multiplied by -1.
      Parameters:
      adjointVariables - adjoint vector
      mass - mass
      Returns:
      contribution to Hamiltonian