-
Notifications
You must be signed in to change notification settings - Fork 20
ForagerRL_step11
By Killian Trouillet
During training, we used GAMA in headless mode for speed. Now that the model is trained, we switch to the GAMA GUI to watch the agent in action.
| Mode | Port | Speed | Display | Use |
|---|---|---|---|---|
| Headless | 1001 |
Fast (no rendering) | None | Training |
| GUI | 1000 |
Slow (renders display) | Yes | Testing / Visualization |
- Open GAMA normally (double-click the application)
- The GUI server runs on port 1000 by default — no extra setup needed
from train_forager import PPOAgent
agent = PPOAgent(state_dim=13, action_dim=2)
agent.load("saved_models/ppo_forager.pth")This loads the neural network weights saved during training.
The only change from training: the port number.
env = gym.make(
"gama_gymnasium_env/GamaEnv-v0",
gaml_experiment_path="path/to/forager_gym.gaml",
gaml_experiment_name="gym_env",
gama_ip_address="localhost",
gama_port=1000,
)action, _, _ = agent.select_action(obs, test=True)During training, the policy samples actions from a Normal distribution (adding noise for exploration). During testing, we set test=True to use the mean action — no randomness, just the best action the network has learned.
time.sleep(0.1) # 100ms delay between stepsWe add a small delay between steps so the movement is visible in the GAMA display.
cd models/gym
python test_forager.pyWatch the GAMA display — the blue forager should navigate smoothly around obstacles to reach the green food!
==================================================
Smart Forager - PPO Test (GUI)
==================================================
Step 0: obs[:5]=[0.05, 0.05, 0.95, 0.52, 0.48] action=[0.73, 0.71]
Step 1: obs[:5]=[0.07, 0.07, 0.93, 0.54, 0.50] action=[0.81, 0.78]
...
Result: FOUND FOOD! | Steps: 49 | Reward: 92.6
Done.
| Concept | Implementation |
|---|---|
| Continuous world | No grid, free {x, y} movement in 100×100 space |
| GAMA↔Python bridge |
GymAgent species + gama-gymnasium WebSocket |
| Neural network policy | Custom ActorCritic with PyTorch Normal distribution |
| Headless training |
gama-headless.bat -socket 1001 → fast, no GUI |
| GUI testing | Load .pth + connect to GAMA GUI (port 1000) |
| Action space |
Box([-1,-1], [1,1]) — continuous velocity (dx, dy) |
| Observation space |
Box([0]×13, [1]×13) — position + food direction + 8 sensors |
| Reward shaping | Distance delta bonus + food reward + living penalty |
global, species, reflex, action, aspect, experiment, parameter, geometry, rectangle, circle, line, distance_to, towards, intersects, inter, cos, sin, list, map, loop, draw
gymnasium, gym.make(), env.reset(), env.step(), torch.nn.Module, Normal distribution, ActorCritic, PPOAgent, asyncio
| File | Description |
|---|---|
models/gym/forager_gym.gaml |
GAMA model with GymAgent bridge |
models/gym/train_forager.py |
PPO training script (headless) |
models/gym/test_forager.py |
Testing script (GUI visualization) |
- Installation and Launching
- Workspace, Projects and Models
- Editing Models
- Running Experiments
- Running Headless
- Preferences
- Troubleshooting
- Introduction
- Manipulate basic Species
- Global Species
- Defining Advanced Species
- Defining GUI Experiment
- Classes and Objects
- Exploring Models
- Optimizing Models
- Multi-Paradigm Modeling
- Manipulate OSM Data
- Cleaning OSM Data
- Diffusion
- Using Database
- Using Dataframes
- Using FIPA ACL
- Using BDI with BEN
- Using Driving Skill
- Manipulate dates
- Manipulate lights
- Using comodel
- Save and restore Simulations
- Using network
- Writing Unit Tests
- Ensure model's reproducibility
- Going further with extensions
- Built-in Species
- Built-in Skills
- Built-in Architecture
- Statements
- Data Type
- File Type
- Stats Extension
- Sound Extension
- BDI Extension
- FIPA Skill
- Expressions
- Exhaustive list of GAMA Keywords
- Installing the development version
- Developing Extensions
- Introduction to GAMA Java API
- Using GAMA flags
- Creating a release of GAMA
- Documentation generation
- Predator Prey
- Road Traffic
- Incremental Model
- Luneray's flu
- BDI Agents
- Forager RL
- SIR Analysis
- 3D Model