Class MixedPolicy<T>
- Namespace
- AiDotNet.ReinforcementLearning.Policies
- Assembly
- AiDotNet.dll
Policy for environments with both discrete and continuous action spaces. Outputs both categorical distribution for discrete actions and Gaussian for continuous actions. Common in robotics where you have discrete mode selection and continuous parameter control.
public class MixedPolicy<T> : PolicyBase<T>, IPolicy<T>, IDisposable
Type Parameters
TThe numeric type used for calculations.
- Inheritance
-
PolicyBase<T>MixedPolicy<T>
- Implements
-
IPolicy<T>
- Inherited Members
Constructors
MixedPolicy(NeuralNetwork<T>, NeuralNetwork<T>, int, int, IExplorationStrategy<T>, IExplorationStrategy<T>, bool, Random?)
Initializes a new instance of the MixedPolicy class.
public MixedPolicy(NeuralNetwork<T> discreteNetwork, NeuralNetwork<T> continuousNetwork, int discreteActionSize, int continuousActionSize, IExplorationStrategy<T> discreteExploration, IExplorationStrategy<T> continuousExploration, bool sharedFeatures = false, Random? random = null)
Parameters
discreteNetworkNeuralNetwork<T>Network for discrete action logits.
continuousNetworkNeuralNetwork<T>Network for continuous action parameters (mean and log_std).
discreteActionSizeintNumber of discrete actions.
continuousActionSizeintNumber of continuous action dimensions.
discreteExplorationIExplorationStrategy<T>Exploration strategy for discrete actions.
continuousExplorationIExplorationStrategy<T>Exploration strategy for continuous actions.
sharedFeaturesboolWhether networks share feature extraction layers.
randomRandomOptional random number generator.
Methods
ComputeLogProb(Vector<T>, Vector<T>)
Computes log probability of mixed action.
public override T ComputeLogProb(Vector<T> state, Vector<T> action)
Parameters
stateVector<T>actionVector<T>
Returns
- T
GetNetworks()
Gets the neural networks used by this policy.
public override IReadOnlyList<INeuralNetwork<T>> GetNetworks()
Returns
Reset()
Resets both exploration strategies.
public override void Reset()
SelectAction(Vector<T>, bool)
Selects mixed action: [discrete_action, continuous_actions]
public override Vector<T> SelectAction(Vector<T> state, bool training = true)
Parameters
stateVector<T>trainingbool
Returns
- Vector<T>