# soofiyevv/parkingagent architecture

> Architecture diagram of the GitHub repository soofiyevv/parkingagent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/soofiyevv/parkingagent
- Repository: https://github.com/soofiyevv/parkingagent

## Overview

ParkingAgent is a Unity ML-Agents reinforcement-learning project: cars observe a randomized parking scene, learn to park through PPO training, and can run the exported policy in Unity. The documented workflow connects the scene, agent, trainer, configurations, and model; source excerpts were not available, so implementation details beyond the README are omitted.

Main entry points: [`Assets/Scenes/SampleScene.unity`](https://github.com/soofiyevv/parkingagent/blob/main/Assets/Scenes/SampleScene.unity) (Parking scene), [`Assets/Scripts/CarAgent.cs`](https://github.com/soofiyevv/parkingagent/blob/main/Assets/Scripts/CarAgent.cs) (Car agent), [`Assets/Models/CarParking.onnx`](https://github.com/soofiyevv/parkingagent/blob/main/Assets/Models/CarParking.onnx) (Trained policy), [`config/car_parking.yaml`](https://github.com/soofiyevv/parkingagent/blob/main/config/car_parking.yaml) (Baseline PPO)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_simulation["Parking simulation"]
  node_scene["Parking scene<br/>[SampleScene.unity]"]
  node_agent["Car agent<br/>[CarAgent.cs]"]
  node_sensor["Ray sensors<br/>[SampleScene.unity]"]
end

subgraph group_training["PPO training"]
  node_baseline["Baseline PPO<br/>[car_parking.yaml]"]
  node_small["Small PPO"]
  node_lr["High-rate PPO"]
  node_trainer["ML-Agents trainer"]
end

subgraph group_inference["Policy inference"]
  node_model["Trained policy<br/>[CarParking.onnx]"]
end

node_user(("Project user"))
node_tensorboard["TensorBoard"]

node_scene -->|"hosts agents"| node_agent
node_agent -->|"uses observations"| node_sensor
node_sensor -->|"provides rays"| node_agent
node_agent -->|"controls car"| node_scene
node_user -->|"starts training"| node_trainer
node_trainer -->|"reads config"| node_baseline
node_trainer -.->|"reads config"| node_small
node_trainer -.->|"reads config"| node_lr
node_trainer -->|"runs environment"| node_scene
node_scene -->|"sends experience"| node_trainer
node_trainer -->|"exports policy"| node_model
node_user -->|"runs inference"| node_scene
node_scene -->|"loads policy"| node_model
node_trainer -->|"logs metrics"| node_tensorboard
node_user -->|"monitors training"| node_tensorboard

click node_scene "https://github.com/soofiyevv/parkingagent/blob/main/Assets/Scenes/SampleScene.unity"
click node_agent "https://github.com/soofiyevv/parkingagent/blob/main/Assets/Scripts/CarAgent.cs"
click node_sensor "https://github.com/soofiyevv/parkingagent/blob/main/Assets/Scenes/SampleScene.unity"
click node_baseline "https://github.com/soofiyevv/parkingagent/blob/main/config/car_parking.yaml"
click node_small "https://github.com/soofiyevv/parkingagent/blob/main/config/car_parking_small.yaml"
click node_lr "https://github.com/soofiyevv/parkingagent/blob/main/config/car_parking_lr.yaml"
click node_model "https://github.com/soofiyevv/parkingagent/blob/main/Assets/Models/CarParking.onnx"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_scene,node_agent,node_sensor,node_user toneBlue
class node_baseline,node_small,node_lr,node_trainer toneAmber
class node_model toneMint
class node_tensorboard toneIndigo
```

## Components

### Parking simulation

- [Parking scene](https://github.com/soofiyevv/parkingagent/blob/main/Assets/Scenes/SampleScene.unity): `Assets/Scenes/SampleScene.unity`
- [Car agent](https://github.com/soofiyevv/parkingagent/blob/main/Assets/Scripts/CarAgent.cs): `Assets/Scripts/CarAgent.cs`
- [Ray sensors](https://github.com/soofiyevv/parkingagent/blob/main/Assets/Scenes/SampleScene.unity): `Assets/Scenes/SampleScene.unity`

### PPO training

- [Baseline PPO](https://github.com/soofiyevv/parkingagent/blob/main/config/car_parking.yaml): `config/car_parking.yaml`
- [Small PPO](https://github.com/soofiyevv/parkingagent/blob/main/config/car_parking_small.yaml): `config/car_parking_small.yaml`
- [High-rate PPO](https://github.com/soofiyevv/parkingagent/blob/main/config/car_parking_lr.yaml): `config/car_parking_lr.yaml`
- **ML-Agents trainer**

### Policy inference

- [Trained policy](https://github.com/soofiyevv/parkingagent/blob/main/Assets/Models/CarParking.onnx): `Assets/Models/CarParking.onnx`

### Other components

- **Project user**
- **TensorBoard**

## Connections

- Parking scene → Car agent: hosts agents
- Car agent → Ray sensors: uses observations
- Ray sensors → Car agent: provides rays
- Car agent → Parking scene: controls car
- Project user → ML-Agents trainer: starts training
- ML-Agents trainer → Baseline PPO: reads config
- ML-Agents trainer → Small PPO: reads config
- ML-Agents trainer → High-rate PPO: reads config
- ML-Agents trainer → Parking scene: runs environment
- Parking scene → ML-Agents trainer: sends experience
- ML-Agents trainer → Trained policy: exports policy
- Project user → Parking scene: runs inference
- Parking scene → Trained policy: loads policy
- ML-Agents trainer → TensorBoard: logs metrics
- Project user → TensorBoard: monitors training
