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:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.orekit.control.indirect.adjoint.cost.FieldAbstractCartesianCost
FieldAbstractCartesianCost.FieldSwitchFunction -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedFieldPenalizedCartesianFuelCost(String name, T massFlowRateFactor, T maximumThrustMagnitude, T epsilon) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionabstract TevaluateFieldPenaltyFunction(T controlNorm) Evaluate the penalty term (without the weight), assumed to be a function of the control norm.Getter for the penalty weight epsilon.getFieldHamiltonianContribution(T[] adjointVariables, T mass) Computes the Hamiltonian contribution to the cost function.protected FieldVector3D<T> getFieldThrustDirection(T[] adjointVariables) Computes the direction of thrust.Getter for maximum thrust magnitude.Methods inherited from class org.orekit.control.indirect.adjoint.cost.FieldAbstractCartesianCost
buildSwitchDetector, getAdjointDimension, getAdjointName, getFieldAdjointVelocityNorm, 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.FieldCartesianCost
getCostDerivativeProvider, getFieldEventDetectors, getFieldThrustAccelerationVector, toCartesianCost, updateFieldAdjointDerivatives
-
Constructor Details
-
FieldPenalizedCartesianFuelCost
protected FieldPenalizedCartesianFuelCost(String name, T massFlowRateFactor, T maximumThrustMagnitude, T epsilon) Constructor.- Parameters:
name- adjoint namemassFlowRateFactor- mass flow rate factormaximumThrustMagnitude- maximum thrust magnitudeepsilon- penalty weight
-
-
Method Details
-
getEpsilon
Getter for the penalty weight epsilon.- Returns:
- epsilon
-
getMaximumThrustMagnitude
Getter for maximum thrust magnitude.- Returns:
- maximum thrust
-
evaluateFieldPenaltyFunction
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
Computes the direction of thrust.- Parameters:
adjointVariables- adjoint vector- Returns:
- thrust direction
-
getFieldHamiltonianContribution
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
-