Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated mesa project #218

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

MariiaMelnychenko
Copy link

@MariiaMelnychenko MariiaMelnychenko commented Oct 8, 2024

  • A randomize_new_cells parameter has been added to the code, which allows the user to manually adjust the probability of randomly spawning new cells at each simulation step. This option can be adjusted through the user interface using a slider. This allows you to control the dynamics of the model and experiment with the frequency of the appearance of new cells during the simulation.

  • A new logic was also added to the game rules: if a cell has more than 4 living neighbors, it "dies" from overpopulation. This adds more realistic behavior to the game, because cells can die due to oversaturation of living neighbors. Cells with 2 or 3 neighbors remain alive, and dead cells with exactly 3 neighbors come to life.

@EwoutH
Copy link
Member

EwoutH commented Oct 8, 2024

Thanks for opening a PR! Could you translate the Ukrainian part to English?

I’m not sure if I want to alter the classic Game of Life rules themselves, but the “noise” concept could be interesting.

@EwoutH
Copy link
Member

EwoutH commented Oct 10, 2024

Thanks for translating! The PR is appreciated.

However, currently it changes too much unnecessarily. I'm also not fully convinced of changing such a classic, well defined model, like Conway's Game of Life.

The concept of noise/mutations is interesting though. I think you can go two ways with this:

  • "random mutations" (what you currently implemented): Each Agent can have a certain chance for a certain property to change each timestep
  • "communication noise": There's a chance that either information is lost or the decision is make incorrectly when an action if performed.
    • A neighbour cell is read incorrectly
    • The rule isn't applied (or inversed)

These are interesting concepts. Only maybe is this not the model to apply it on.

@projectmesa/maintainers would appreciate some other opinions, especially on in which models this might be useful (if at all).


@MariiaMelnychenko I would love to hear the background what you're using Mesa for, as part of which project/course/interest. Might help us help you better :)

@tpike3
Copy link
Member

tpike3 commented Oct 12, 2024

Thanks for translating! The PR is appreciated.

However, currently it changes too much unnecessarily. I'm also not fully convinced of changing such a classic, well defined model, like Conway's Game of Life.

The concept of noise/mutations is interesting though. I think you can go two ways with this:

  • "random mutations" (what you currently implemented): Each Agent can have a certain chance for a certain property to change each timestep

  • "communication noise": There's a chance that either information is lost or the decision is make incorrectly when an action if performed.

    • A neighbour cell is read incorrectly
    • The rule isn't applied (or inversed)

These are interesting concepts. Only maybe is this not the model to apply it on.

@projectmesa/maintainers would appreciate some other opinions, especially on in which models this might be useful (if at all).

@MariiaMelnychenko I would love to hear the background what you're using Mesa for, as part of which project/course/interest. Might help us help you better :)

As they are parameters, I think we should allow it. This can allow folks to explore the model and it underlying concepts more.

So I would say it defaults to the Conways classical model, but now has sliders/paramters to allow users to explore different variants.

@rht
Copy link
Contributor

rht commented Oct 12, 2024

You can always fork the classic model into a separate, adjacent model in another folder. Adding variations to the classic model will strain bandwidth of the learner who is trying to understand the essence of the model.

In short, I think it's better to create a separate model, named "conways_game_of_life_advanced", where any variations and extensions can be added.

@quaquel
Copy link
Member

quaquel commented Oct 12, 2024

Since I have been going through all the examples for the grid spaces, I feel that we have too many examples and variants of essentially the same model.

I recall a discussion on this before, but my idea would be to have a carefully curated set of famous examples in the main mesa repo (i.e., wolf-sheep, Schelling, Epstein civil violence, sugarscape, Axelrod evolution of collaboration, el farol, forest fire, Conway game of life, and virus on a network), and have a not actively maintained gallery for show and tell. We could do a template for the gallery that includes an environment file to enhance future reproducibility. The curated examples would be used for integration testing and be kept in sync with the main branch at all times.

@jackiekazil
Copy link
Member

Conceptually - there is the possibility of an infinite number of models that can be created off of one model.
I like what is being submitted here. During today's dev meeting, we discussed moving the core examples back to the main repo -- what if we created a Conway's folder with a readme that pointed to the core example (when it is moved), but also included this as an alternate example, which highlights X. One day if we have 10 versions -- the readme also lists each version and why you might want to look or consider it. Think of it like a writing assignment for 10 people come up with 10 different approaches. Thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants