1
Fork 0

Deployed f569f4c with MkDocs version: 1.6.1

This commit is contained in:
github-actions[bot] 2026-05-20 13:05:42 +00:00
parent f1a349ed55
commit 3cd3e9ea81
56 changed files with 9292 additions and 11367 deletions

View file

@ -0,0 +1,22 @@
# Centralized Actor-Critic Architecture
# Baseline configuration with a single global sensor and motor.
# Default values are defined in CentralizedConfig dataclass.
# Use this configuration for standard PPO experiments.
name: "centralized"
sensor:
hidden_dims: [300, 300, 300]
activation: "tanh"
motor:
hidden_dims: []
activation: "tanh"
feature_extractor:
hidden_dims: [300, 300, 300]
activation: "tanh"
critic:
hidden_dims: []
activation: "tanh"

View file

@ -0,0 +1,32 @@
# Decentralized Actor Architecture (NerveNet-MLP variant)
# Multi-agent/distributed configuration using local sensors, propagators, and motors.
# Default values are defined in DecentralizedConfig dataclass.
# Use this configuration for decentralized execution experiments.
name: "decentralized"
sensor:
hidden_dims: [300, 300, 300]
activation: "tanh"
propagator:
hidden_dims: [300, 300, 300]
activation: "tanh"
motor:
hidden_dims: []
activation: "tanh"
feature_extractor:
hidden_dims: [300, 300, 300]
activation: "tanh"
critic:
hidden_dims: []
activation: "tanh"
# Synchronous message-passing rounds per control step
message_passing_steps: 4
# Connectivity topology (e.g., ring, fully_connected)
topology_type: "fully_connected"

View file

@ -0,0 +1,8 @@
# Default Arena Configuration
# Base aquarium environment settings.
size: [10.0, 5.0]
sand_ground_color: true
attach_target: true
wall_height: 1.5
wall_thickness: 0.1

View file

@ -0,0 +1,71 @@
# Custom Main Configuration
#
# Use with:
# uv run python scripts/train.py --config-name main_config_custom
#
# This keeps the project defaults intact while giving you a single custom
# training entrypoint you can edit freely.
defaults:
- brittle_star_config
- experiment: base
- logging: default
- evaluation: default
- ppo: default
- architecture: centralized
- morphology: 5_arms_full
- arena: default
- environment: directed_locomotion
- simulation: default
- _self_
morphology:
morph_mode: CENTRALIZED
experiment:
exp_name: "final-models/centralized/"
seed: 42
torch_deterministic: true
cuda: true
logging:
track: true
save_model: true
save_checkpoints: true
upload_final_model: true
upload_checkpoints: true
checkpoint_frequency: 20
wandb_project_name: "final-models"
evaluation:
evaluate_checkpoints: true
eval_max_steps: 2000
eval_seed: 0
ppo:
learning_rate: 0.0001
total_timesteps: 16384000
num_envs: 128
num_steps: 64
anneal_lr: true
gamma: 0.99
gae_lambda: 0.95
num_minibatches: 32
update_epochs: 4
norm_adv: true
clip_coef: 0.2
clip_vloss: true
ent_coef: 0.001
vf_coef: 1.0
max_grad_norm: 0.5
target_kl: 0.02
environment:
simulation_time: 100000.0
target_distance: 3.0
hydra:
job:
chdir: true
run:
dir: ${experiment.base_run_dir}/${experiment.exp_name}/${now:%Y-%m-%d}/${now:%H-%M-%S}

View file

@ -0,0 +1,2 @@
simulation_time: 50000.0
target_distance: 3.0

View file

@ -0,0 +1,12 @@
# Directed Locomotion Environment
# Baseline task setting.
task: DIRECTED_LOCOMOTION
simulation_time: 100000.0
num_physics_steps_per_control_step: 10
time_scale: 2
camera_ids: [0, 1]
render_size: [480, 640]
joint_randomization_noise_scale: 0.0
target_distance: 3.0
light_perlin_noise_scale: 0

View file

@ -0,0 +1,12 @@
# Light Escape Environment
# Advanced task requiring movement away from light source.
task: LIGHT_ESCAPE
simulation_time: 100000.0
num_physics_steps_per_control_step: 10
time_scale: 2
camera_ids: [0, 1]
render_size: [480, 640]
joint_randomization_noise_scale: 0.0
target_distance: 3.0
light_perlin_noise_scale: 200 # Must be integer factor of 200

View file

@ -0,0 +1,8 @@
# Default Evaluation Configuration
# Settings used for checkpoint evaluation during training.
evaluate_checkpoints: false
# Max number of control steps during evaluation rollout.
eval_max_steps: 2000
# Seed for deterministic evaluation reset.
eval_seed: 0

View file

@ -0,0 +1,23 @@
# @package evaluation
# Configuration for the models used in the poster comparison.
# Standard evaluation settings
evaluate_checkpoints: false
eval_max_steps: 5000
eval_seed: 0
# Cross-model comparison settings
# We use 10 episodes to get a more robust average for the final poster results.
comparison_base_seed: 0
comparison_num_episodes: 2
comparison_output_csv: "runs/evaluation/comparison.csv"
# Paths to the .cleanrl_model files to be compared (relative to workspace root).
comparison_models:
- "runs/input-space-2-arms/2026-05-02/08-14-58/final_model.flax"
# Path to the morphologies to evaluate against.
comparison_morphologies:
- "configs/morphology/5_arms_full.yaml"
- "configs/morphology/3_arms.yaml"
- "configs/morphology/2_arms.yaml"

View file

@ -0,0 +1,7 @@
# Base Experiment Configuration
# Default values align with ExperimentConfig dataclass.
exp_name: "brittle_star_ppo"
seed: 1
torch_deterministic: true
cuda: true

View file

@ -0,0 +1,7 @@
# Testing Experiment Configuration
# Quick experiment for local development/testing.
exp_name: "dev_test_brittle_star"
seed: 42
torch_deterministic: true
cuda: true

View file

@ -0,0 +1,7 @@
# HPC Smoke Test Configuration
# Uses minimal settings but simulates HPC environment.
exp_name: "hpc_smoke_test"
seed: 123
torch_deterministic: true
cuda: true

View file

@ -0,0 +1,6 @@
# Testing chicken dinner 4 but further distance.
exp_name: "long2arm"
seed: 123
torch_deterministic: true
cuda: true

View file

@ -0,0 +1,74 @@
# Custom Main Configuration
#
# Use with:
# uv run python scripts/train.py --config-name main_config_custom
#
# This keeps the project defaults intact while giving you a single custom
# training entrypoint you can edit freely.
defaults:
- brittle_star_config
- experiment: base
- logging: default
- evaluation: default
- ppo: default
- architecture: decentralized
- morphology: 5_arms_full
- arena: default
- environment: directed_locomotion
- simulation: default
- _self_
architecture:
topology_type: "fully_connected"
morphology:
morph_mode: FULLY_CONNECTED
experiment:
exp_name: "final-models/fully-connected/"
seed: 42
torch_deterministic: true
cuda: true
logging:
track: true
save_model: true
save_checkpoints: true
upload_final_model: true
upload_checkpoints: true
checkpoint_frequency: 20
wandb_project_name: "final-models"
evaluation:
evaluate_checkpoints: true
eval_max_steps: 2000
eval_seed: 0
ppo:
learning_rate: 0.0001
total_timesteps: 16384000
num_envs: 128
num_steps: 64
anneal_lr: true
gamma: 0.99
gae_lambda: 0.95
num_minibatches: 32
update_epochs: 4
norm_adv: true
clip_coef: 0.2
clip_vloss: true
ent_coef: 0.001
vf_coef: 1.0
max_grad_norm: 0.5
target_kl: 0.02
environment:
simulation_time: 100000.0
target_distance: 3.0
hydra:
job:
chdir: true
run:
dir: ${experiment.base_run_dir}/${experiment.exp_name}/${now:%Y-%m-%d}/${now:%H-%M-%S}

1013
configs/index.html Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,13 @@
# Default Logging Configuration
# Offline local-only setup (WandB disabled).
track: false
wandb_project_name: "PPO-Modularity"
wandb_entity: "SEL3-2026-Groep-4"
capture_video: false
save_model: true
save_checkpoints: true
checkpoint_frequency: 100
upload_final_model: false
upload_checkpoints: false
hf_entity: ""

9
configs/logging/hpc.yaml Normal file
View file

@ -0,0 +1,9 @@
track: true
wandb_project_name: "hpc-default"
wandb_entity: "SEL3-2026-Groep-4"
save_model: true
save_checkpoints: true
upload_final_model: true
upload_checkpoints: true
checkpoint_frequency: 100
hf_entity: ""

View file

@ -0,0 +1,13 @@
# WandB Enabled Logging Configuration
# For production/cloud experiments with weights synced.
track: true
wandb_project_name: "default-project"
wandb_entity: "SEL3-2026-Groep-4"
capture_video: false
save_model: true
save_checkpoints: true
checkpoint_frequency: 100
upload_final_model: true
upload_checkpoints: false
hf_entity: ""

23
configs/main_config.yaml Normal file
View file

@ -0,0 +1,23 @@
# Brittle Star Project - Main Configuration
# This file defines the default composition of the hierarchical configuration.
# Sub-configs are loaded from the relative directories.
defaults:
- brittle_star_config
- experiment: base
- logging: default
- evaluation: default
- ppo: default
- architecture: centralized
- morphology: 5_arms_full
- arena: default
- environment: directed_locomotion
- obs_bounds: default
- simulation: default
- _self_
hydra:
job:
chdir: True
run:
dir: ${experiment.base_run_dir}/${experiment.exp_name}/${now:%Y-%m-%d}/${now:%H-%M-%S}

View file

@ -0,0 +1,5 @@
# 2 Arms Morphology Configuration
segments_per_arm: [4, 0, 4, 0, 0]
use_p_control: true
use_torque_control: false

View file

@ -0,0 +1,6 @@
# 2 Arms Morphology Configuration
segments_per_arm: [4, 0, 4, 0, 0]
use_p_control: true
use_torque_control: false
morph_mode: FULLY_CONNECTED

View file

@ -0,0 +1,6 @@
# 3 Arms Morphology Configuration
# Symmetric amputation (arms 1 and 3 removed).
segments_per_arm: [4, 0, 4, 0, 4]
use_p_control: true
use_torque_control: false

View file

@ -0,0 +1,6 @@
# 5 Arms Full Morphology Configuration
# Baseline 5-arm brittle star.
segments_per_arm: [4, 4, 0, 4, 4]
use_p_control: true
use_torque_control: false

View file

@ -0,0 +1,6 @@
# 5 Arms Full Morphology Configuration
# Baseline 5-arm brittle star.
segments_per_arm: [4, 4, 4, 4, 4]
use_p_control: true
use_torque_control: false

View file

@ -0,0 +1,7 @@
# 5 Arms Full Morphology Configuration
# Baseline 5-arm brittle star.
segments_per_arm: [4, 4, 4, 4, 4]
use_p_control: true
use_torque_control: false
morph_mode: FULLY_CONNECTED

View file

@ -0,0 +1,6 @@
# Partial Amputation Configuration
# Random partial amputation for robustness testing.
segments_per_arm: [4, 2, 4, 4, 4]
use_p_control: true
use_torque_control: false

View file

@ -0,0 +1 @@
# Defaults provided by dataclass

View file

@ -0,0 +1,16 @@
anneal_lr: true
clip_coef: 0.2
clip_vloss: true
ent_coef: 0.001
gae_lambda: 0.95
gamma: 0.99
learning_rate: 0.0001
max_grad_norm: 0.5
norm_adv: true
num_envs: 32
num_minibatches: 32
num_steps: 64
target_kl: 0.02
total_timesteps: 12288000
update_epochs: 4
vf_coef: 1.0

16
configs/ppo/debug.yaml Normal file
View file

@ -0,0 +1,16 @@
learning_rate: 0.0003
total_timesteps: 409600
num_envs: 32
num_steps: 32
anneal_lr: true
gamma: 0.99
gae_lambda: 0.95
num_minibatches: 32
update_epochs: 4
norm_adv: true
clip_coef: 0.2
clip_vloss: true
ent_coef: 0.005
vf_coef: 1.0
max_grad_norm: 0.5
target_kl: null

19
configs/ppo/default.yaml Normal file
View file

@ -0,0 +1,19 @@
# Default PPO Configuration
# Standard hyperparams from original codebase.
learning_rate: 0.00025
total_timesteps: 10000000
num_envs: 100
num_steps: 128
anneal_lr: true
gamma: 0.99
gae_lambda: 0.95
num_minibatches: 4
update_epochs: 4
norm_adv: true
clip_coef: 0.1
clip_vloss: true
ent_coef: 0.01
vf_coef: 0.5
max_grad_norm: 0.5
target_kl: null

View file

@ -0,0 +1,16 @@
learning_rate: 0.0003
total_timesteps: 1228800
num_envs: 32
num_steps: 64
anneal_lr: true
gamma: 0.99
gae_lambda: 0.95
num_minibatches: 32
update_epochs: 4
norm_adv: true
clip_coef: 0.2
clip_vloss: true
ent_coef: 0.005
vf_coef: 1.0
max_grad_norm: 0.5
target_kl: null

View file

@ -0,0 +1,19 @@
# Fast PPO Configuration
# Lower timestep count for quick iterations/testing.
learning_rate: 0.0005
total_timesteps: 1024
num_envs: 32
num_steps: 32
anneal_lr: true
gamma: 0.99
gae_lambda: 0.95
num_minibatches: 4
update_epochs: 4
norm_adv: true
clip_coef: 0.2
clip_vloss: true
ent_coef: 0.01
vf_coef: 0.5
max_grad_norm: 0.5
target_kl: null

19
configs/ppo/stable.yaml Normal file
View file

@ -0,0 +1,19 @@
# Stable PPO Configuration
# Standard hyperparams with lower LR and larger batch.
learning_rate: 0.0001
total_timesteps: 10000000
num_envs: 100
num_steps: 256
anneal_lr: true
gamma: 0.99
gae_lambda: 0.95
num_minibatches: 8
update_epochs: 4
norm_adv: true
clip_coef: 0.1
clip_vloss: true
ent_coef: 0.01
vf_coef: 0.5
max_grad_norm: 0.5
target_kl: null

74
configs/ring-final.yaml Normal file
View file

@ -0,0 +1,74 @@
# Custom Main Configuration
#
# Use with:
# uv run python scripts/train.py --config-name main_config_custom
#
# This keeps the project defaults intact while giving you a single custom
# training entrypoint you can edit freely.
defaults:
- brittle_star_config
- experiment: base
- logging: default
- evaluation: default
- ppo: default
- architecture: decentralized
- morphology: 5_arms_full
- arena: default
- environment: directed_locomotion
- simulation: default
- _self_
architecture:
topology_type: "ring"
morphology:
morph_mode: RING
experiment:
exp_name: "final-models/ring/"
seed: 42
torch_deterministic: true
cuda: true
logging:
track: true
save_model: true
save_checkpoints: true
upload_final_model: true
upload_checkpoints: true
checkpoint_frequency: 20
wandb_project_name: "final-models"
evaluation:
evaluate_checkpoints: true
eval_max_steps: 2000
eval_seed: 0
ppo:
learning_rate: 0.0001
total_timesteps: 16384000
num_envs: 128
num_steps: 64
anneal_lr: true
gamma: 0.99
gae_lambda: 0.95
num_minibatches: 32
update_epochs: 4
norm_adv: true
clip_coef: 0.2
clip_vloss: true
ent_coef: 0.001
vf_coef: 1.0
max_grad_norm: 0.5
target_kl: 0.02
environment:
simulation_time: 100000.0
target_distance: 3.0
hydra:
job:
chdir: true
run:
dir: ${experiment.base_run_dir}/${experiment.exp_name}/${now:%Y-%m-%d}/${now:%H-%M-%S}

View file

@ -0,0 +1,26 @@
# Default Simulation Settings
# These values are used by scripts/simulate.py
# Path to the trained model (optional)
model_path: null
# Script behavior
headless: false
# In headless mode this is required; in viewer mode null means "infinite".
max_steps: null
# Optional: override morphology for amputation experiments.
# Points to a morphology config YAML file (e.g. configs/morphology/3_arms.yaml).
# If null, the training morphology from the model's metadata is used.
morphology_override: null
# Video recording (requires [evaluation] extra)
record_video: false
# When null, video is saved in a per-model evaluation folder alongside the model.
video_output_path: null
# Camera ID to use for video recording (1 is usually the close-up camera)
camera_id: 1
# Optional override for the metadata YAML file path.
# If null, the script looks for `<model_name>_metadata.yaml` alongside the model_path.
metadata_path: null