This PR introduces a finished implementation of the simulation side of Earthmover, with a simulation engine agnostic runtime. This is done by defining a trait for any simulation backend, which in our case will likely be either rapier or bevy. The function itself is ran by an Orchestrator that can run a set amount of simulations and aggregate the most 'fit' simulation for a future batch. The simulation method passes in a send channel for new instructions and the final fitness of the model.
✨ New Features:
Added a new field to the Instruction struct to support more comprehensive movement commands for agents.
Introduced a new Simulation trait, abstracting away the simulation backend logic for flexibility.
♻️ Refactor:
Updated the simulate function to support multiple backend simulation types using generics.
Refined the Orchestrator struct to support complex simulation management and batch processing.
Enhanced SimRes to support comparisons and ordered ranking based on results.
🔨 Improvements:
Modified the Rewardable trait by adding Send and Sync bounds, ensuring thread safety for async contexts for execution in parallel.
This PR introduces a finished implementation of the simulation side of
Earthmover
, with a simulation engine agnostic runtime. This is done by defining a trait for any simulation backend, which in our case will likely be either rapier or bevy. The function itself is ran by anOrchestrator
that can run a set amount of simulations and aggregate the most 'fit' simulation for a future batch. The simulation method passes in a send channel for new instructions and the final fitness of the model.✨ New Features:
♻️ Refactor:
Orchestrator
struct to support complex simulation management and batch processing.🔨 Improvements:
Rewardable
trait by adding Send and Sync bounds, ensuring thread safety for async contexts for execution in parallel.