Skip to content

To infinity and beyond

Matheus Vieira Portela edited this page Nov 29, 2016 · 2 revisions

The following ideas will definitely enhance the system, making it more powerful, flexible, and applicable to other use cases. They are ordered by degree of difficulty, i.e., the first idea is the simplest and the last one is the hardest to implement.

Multiprocessing

Running a couple hundred of Pac-Man simulations are extremely costly, during dozens of hours. In fact, the complete simulation suite necessary for the project lasted about an entire week. Since the system is mostly CPU bounded, instead of processing agents one by one, distributing computation to all available CPU cores will accelerate simulation time up to 8x. It is also possible to use GPUs to perform state estimation. Python has the multiprocessing library that allows multicore computation with this language.

Connect with different platforms and simulators

So far, the system only works with Windy World and Pac-Man simulator, which are constrained simulation environments. Implementing connectors with other simulators, games, and even real robots will be pretty interesting to understand how the developed ideas perform in different scenarios. One example is using ROS to implement connections with real-world robots.

Distributed processing

Even though multiprocessing provides a ten-fold speedup time, it is always limited to the number of available CPU cores. To have greater simulation speeds, it would be necessary to buy more expensive machines. Another option is to distribute agents to be processed in different machines, such as Amazon EC2 instances, which allows virtually infinite horizontal scaling, constrained only by the project's budget. This simple step will prepare the system to process hundreds or thousands of agents, enabling, for instance, tests with swarm robotics techniques.