Individuals in a species (esp. humans) may cooperate and they may communicate. Recent decades have seen quite a lot of efforts to use computational simulation — so-called individual/agent-based modelling — to investigate what cooperation is , and how communication factors into it, striving to fit this into a general picture of varying levels of survival and reproduction in generational succession. This project would involve working with software to simulate the evolution in time of an ecology of individuals and their environment (in a highly abstracted form). Questions one might use such simulations to answer include
— if cooperation takes the form of a perfectly egalitarian sharing of resources, is that sustainable?
— if language is thought of as conferring a ‘survival advantage’ over rivals without language, can that be demonstrated in a simulation?
— human language at some level is not merely an invariant instinct but involves replication of the language of others, with imperfections and improvisations, leading to change and diversity. Can simulations reproduce known patterns of language change?
I made a short video giving perhaps further insight into what this project would entail http://www.scss.tcd.ie/Martin.Emms/ProjVids2021/recording_about_sim.mp4
Practically speaking I would provide a code-base in C++ as starting point. Some directions this might be taken
[SHARING FOOD] investigating possible paradoxes of sharing.
If a group of individuals help each other out by repeatedly sharing amongst each other what they have individually obtained, then it would seem that this would help members of the group who have prospered less, avoiding early death. An ‘egalitarian’ group with such a behaviour might well, so it would appear, survive better than a purely individualistic group. Does it? Code modifications could be made to explore all the ways this might play out
[COMMS REALISM]
currently communication is implemented in a rather abstract way, one leading to all communicators ‘at home’ coming to all have the same knowledge via communication. Could look at somewhat more realistic versions. For example, with info spreading thru a population like a virus. This might also be a possible basis for looking at a complementary ‘cost’ of communication, tied to particular individuals and individual communicative acts, which the current abstract set-up does not suit
[SHARING INFO] could look at possibly counter-productive info sharing leading to ‘stampede’ situations with too many congregating in a single area. Are there cases where ‘ignorance is bliss’?
[FURTHER INFO TYPES] currently the only information communicated concerns ‘wipeouts’. Perhaps further information types could be added. An example could a be a ‘Threat’ which emerges at a particular location on a particular iteration and persists only for a while
[‘ENCOUNTER’ EVENTS] the code uses an ‘event-driven’ design, with a time-ordered event ‘queue’, dispatching events from which causes system updates relating to event participants. This has advantages over a ‘time-driven’ design, where everything is update at each time-tick, but makes it trickier to accommodate pair-wise ‘encounters’, where 2 individuals transiently are colocated. The necessary code modifications to permit this could be attempted (following some known algorithmic techniques (see Chap 6 ‘Algorithms’ Sedgewick & Wayne)
[TIME-TICK ALTERNATIVE] An alternative time-tick simulation approach could be taken and exploration could be done of the efficiency trade-offs vs the event-driven approach. See eg. p135-136 ‘Fast Simulaton of Multicomponent Dynamic Systems’ Lubachevsky 2000
[‘DASHBOARD’] Without modification of the system’s algorithms per-se there are possibilities regarding GUIs for configuring runs and visualising outcomes