Class PenalizedCartesianFuelCost
java.lang.Object
org.orekit.control.indirect.adjoint.cost.AbstractCartesianCost
org.orekit.control.indirect.adjoint.cost.PenalizedCartesianFuelCost
- All Implemented Interfaces:
CartesianCost
- Direct Known Subclasses:
LogarithmicBarrierCartesianFuel,QuadraticPenaltyCartesianFuel
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 Summary
ConstructorsModifierConstructorDescriptionprotectedPenalizedCartesianFuelCost(String name, double massFlowRateFactor, double maximumThrustMagnitude, double epsilon) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionabstract doubleevaluatePenaltyFunction(double controlNorm) Evaluate the penalty term (without the weight), assumed to be a function of the control norm.doubleGetter for the penalty weight epsilon.doublegetHamiltonianContribution(double[] adjointVariables, double mass) Computes the Hamiltonian contribution to the cost function.doubleGetter for maximum thrust magnitude.protected Vector3DgetThrustDirection(double[] adjointVariables) Computes the direction of thrust.Methods inherited from class org.orekit.control.indirect.adjoint.cost.AbstractCartesianCost
buildSwitchDetector, getAdjointDimension, getAdjointName, getAdjointVelocityNorm, getMassFlowRateFactorMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.orekit.control.indirect.adjoint.cost.CartesianCost
getCostDerivativeProvider, getEventDetectors, getThrustAccelerationVector, updateAdjointDerivatives
-
Constructor Details
-
PenalizedCartesianFuelCost
protected PenalizedCartesianFuelCost(String name, double massFlowRateFactor, double maximumThrustMagnitude, double epsilon) Constructor.- Parameters:
name- adjoint namemassFlowRateFactor- mass flow rate factormaximumThrustMagnitude- maximum thrust magnitudeepsilon- penalty weight
-
-
Method Details
-
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
Computes the direction of thrust.- Parameters:
adjointVariables- adjoint vector- Returns:
- thrust direction
-
getHamiltonianContribution
public double getHamiltonianContribution(double[] adjointVariables, double mass) Computes the Hamiltonian contribution to the cost function. It equals the Lagrange-form integrand multiplied by -1.- Parameters:
adjointVariables- adjoint vectormass- mass- Returns:
- contribution to Hamiltonian
-