Skip to content

Projects for Google Summer of Code 2023

Wang Boyu edited this page Mar 28, 2023 · 20 revisions

GSOC ideas to select from

The ideas below are in no particular order, but open to discussion. We should discuss which one or two we would like to pitch.

Add ability for jupyter interactions.

This has been a long standing desire to have as a part of Mesa. There have been a couple of discussions and attempts around this, but nothing that has solidified. We believe it will make it far easier to do Mesa GUI everywhere, because in the context of research ecosystem, Jupyter instances are far more ubiquitous than Heroku-like web hosting services.

  • Expected outcomes:
    1. Review the history around and interview users to discuss how they would most like to use this functionality. Would they like a complete embedding of all components or some subset of components. Propose what juptyer interactions would look like.
    2. Work with the development team on a plan of attack for the jupyter notebook integration.
    3. Build out jupyter embedding according to the identified requirements in the previous step.
  • Difficulty: moderate/hard
  • Project length: 350 hours
  • Proposed student: TBD
  • Helpful experience: IPython, ZeroMQ, Tornado, jQuery, Bootstrap
  • Engineering advisor leads: @rht, @jackiekazil
  • Related:

Integrate a reinforcement learning library into Mesa.

One of the first reinforcement learning models was the ABM El Farol Bar model. Multi-Agent RL (MARL) is a fundamental way to develop agent behaviors to uncover the dynamics of complex systems. Mesa would like an extension that allows users to easily integrate Python's reinforcement learning libraries (e.g. KerasRL, OpenAIbaselines, Open AI Gym, TFAgents etc) into agent evolution.

  • Expected outcomes:
    1. The landscape of RL libraries is researched. The most viable libraries are identified. A plan to integrate is created.
    2. The integration plan is executed. The result is an example model that shows an integration as well as any additional code outside of the model to support it. The additional code should be abstracted for others to apply to their own research.
    3. Stretch goal: Metrics for measuring model results.
  • Difficulty: moderate - some knowledge of ML is needed. We can advise on simple ABM models to construct to demonstrate the functionality.
  • Project length: 175 hours
  • Proposed student: TBD
  • Helpful experience: Knowledge of reinforcement learning and machine learning.
  • There are a few Python MARL frameworks worth comparing to:
  • Engineering advisor leads: @boyu @jackiekazil @tpike3
  • Related: https://github.com/projectmesa/mesa/discussions/1042

Implement a Cythonized Mesa.

@rht and @tortar have been working on a version on an experiment of this. In early trials there have been some speed improvements in one example, but this needs a more holistic look at and testing.

Additional Ideas

These ideas were pitched, but did not make the top 3. They can be considered if you are interested in them.

Engineering advisor lead: @tpike3

  • Pure python front end - The idea is to have an pure python front end option( e.g. dash, plotly, matplotlib, bokeh etc). The concern is if users wanted to alter their interactive but weren't proficient then they would have more capability to do so.

    • Must be able to plot agents and landscape items (e.g. walls) dynamically. This should include changing agents being able to change colors as well as tooltips to provide agent information is user mouse overs agent.
    • Must allow for multiple types of graphic visualizations (histograms, line plots etc). That dynamically update based on data collection form the model.
    • Must allow user to select where items, such as plots and landscape, go in model visualization
    • Must allow for users to start, stop and reset model form the interface
    • Can allow for parameter entry and reset of model.
  • Cacheable Models for Replay The idea is to extend the cacheable start from @logende. More information: https://github.com/projectmesa/mesa/issues/1393

    • Identify and store critical dynamics of model (critical dynamics can be identified by modeler)
    • Be able to quickly (i.e. there is not a compute time) reply cached model to demonstrate key findings
    • Difficulty: moderate/hard
    • Project length: 175 hours
    • Proposed student: TBD
    • Helpful experience: Memory allocation, compression, data storage
  • Network based scheduler Create an activation regime based on a network approach that allows for multiple levels of gent processinf.

    • A substantive start is multi-level mesa which needs to refactor of multi-level mesa)
    • One approach is to use hypergraphs to create agent activation regimes. The concept is a network acts if links in that network are stimulated, resulting in agent action.
    • A detailed description of this idea is available through arxiv - Multi-Level Mesa
    • Difficulty: hard
    • Project length: 350 hours
    • Proposed student: TBD
    • Helpful experience: Network Science, Hypergraphs, Dynamic Networks
  • A rich ecosystem of data pipelines Create data pipelines to help develop more rigorous models faster

    • ABMs are often more effective if they are calibrated to existing realities. A robust ecosystem of data pipelines that can allow users to feed ABMs of interest may prove critical in advancing ABMs as a research tool.
    • A journal article outlining these ideas is available through the Simulation Journal - Growing the Simulation Ecosystem. This article describes two prototypes of this ideas with two binder-linked repositories. (1) synthetic population creation and (2) cropyield.
    • Difficulty: moderate
    • Project length: 175 hours
    • Proposed student: TBD
    • Helpful experience: Familiarity with a potential dataset that can support model development