Reinforcement Learning
ml-agents
TensorBoard
ONNX
Pyramids
deep-reinforcement-learning
ML-Agents-Pyramids
Instructions to use AnnaMats/ppo-Pyramids-Training with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ml-agents
How to use AnnaMats/ppo-Pyramids-Training with ml-agents:
mlagents-load-from-hf --repo-id="AnnaMats/ppo-Pyramids-Training" --local-dir="./download: string[]s"
- Notebooks
- Google Colab
- Kaggle
| using System; | |
| using Unity.MLAgents.Actuators; | |
| using UnityEngine; | |
| namespace Unity.MLAgentsExamples | |
| { | |
| /// <summary> | |
| /// A simple example of a ActuatorComponent. | |
| /// This should be added to the same GameObject as the BasicController | |
| /// </summary> | |
| public class BasicActuatorComponent : ActuatorComponent | |
| { | |
| public BasicController basicController; | |
| ActionSpec m_ActionSpec = ActionSpec.MakeDiscrete(3); | |
| /// <summary> | |
| /// Creates a BasicActuator. | |
| /// </summary> | |
| /// <returns></returns> | |
| public override IActuator[] CreateActuators() | |
| { | |
| return new IActuator[] { new BasicActuator(basicController) }; | |
| } | |
| public override ActionSpec ActionSpec | |
| { | |
| get { return m_ActionSpec; } | |
| } | |
| } | |
| /// <summary> | |
| /// Simple actuator that converts the action into a {-1, 0, 1} direction | |
| /// </summary> | |
| public class BasicActuator : IActuator | |
| { | |
| public BasicController basicController; | |
| ActionSpec m_ActionSpec; | |
| public BasicActuator(BasicController controller) | |
| { | |
| basicController = controller; | |
| m_ActionSpec = ActionSpec.MakeDiscrete(3); | |
| } | |
| public ActionSpec ActionSpec | |
| { | |
| get { return m_ActionSpec; } | |
| } | |
| /// <inheritdoc/> | |
| public String Name | |
| { | |
| get { return "Basic"; } | |
| } | |
| public void ResetData() | |
| { | |
| } | |
| public void OnActionReceived(ActionBuffers actionBuffers) | |
| { | |
| var movement = actionBuffers.DiscreteActions[0]; | |
| var direction = 0; | |
| switch (movement) | |
| { | |
| case 1: | |
| direction = -1; | |
| break; | |
| case 2: | |
| direction = 1; | |
| break; | |
| } | |
| basicController.MoveDirection(direction); | |
| } | |
| public void Heuristic(in ActionBuffers actionBuffersOut) | |
| { | |
| var direction = Input.GetAxis("Horizontal"); | |
| var discreteActions = actionBuffersOut.DiscreteActions; | |
| if (Mathf.Approximately(direction, 0.0f)) | |
| { | |
| discreteActions[0] = 0; | |
| return; | |
| } | |
| var sign = Math.Sign(direction); | |
| discreteActions[0] = sign < 0 ? 1 : 2; | |
| } | |
| public void WriteDiscreteActionMask(IDiscreteActionMask actionMask) | |
| { | |
| } | |
| } | |
| } | |