I'm a Psychology student with a decent (yet not extensive) knowledge of mathematics and computer science. My knowledge on this two fields are those of a person beginning the third year of computer science (since I studied computer science for two years).

My field of academic interest is evolutionary psychology and behavorial biology. I want to program a fairly simple evolutionary model in Python, which would simulate evolution in a population, or group of populations, with an emphasis on the selection of behavioral traits. (I will progressively increase the complexity of the program throughout this year, but for the moment my aim is to keep it very simple.)

To name a simple example, create a population of organisms with a certain degree of altruism ranging from 0, totally selfish, and 1, totally altruistic. Organisms would compete for food: their sucess at getting enough food determines their reproductive potential, and their level of altruism would determine the chance of them sharing part of their food (thus lowering somewhat their reproductive potential) with organisms that didn't succeed at finding any on their own.

Of course there are many details to be precised in the previous model, such as how the altruism level of an organism determines the amount of food it shares and the amount it keeps for itself, should the sharing mechanism activate. But then again it's just an example. Many layers of complications (even game theory!) can be added on top of that fairly elemental model.

My question is, what are some general computer science models I should want to be familiar with to develop a program that simulates evolution? Should I, for example, learn neural networks, or wouldn't I find a use for one in my project?

In other words, what programming or computer science models/techniques are a must for my purpose?

  • $\begingroup$ Thanks for the edit. If I understood you correctly, then what you need is differential equations. I.e. you need to know how to construct a system of differential equations describing your model and how to solve it (maybe numerically). $\endgroup$
    – user114966
    Apr 9, 2021 at 21:56
  • $\begingroup$ Thank you for the response. Would you care to elaborate, even if just very briefly, why would I need differential equations? $\endgroup$
    – lafinur
    Apr 9, 2021 at 23:00
  • $\begingroup$ Something along these lines, I guess: en.wikipedia.org/wiki/Lotka%E2%80%93Volterra_equations, aimspress.com/fileOther/PDF/MBE/mbe-16-05-183.pdf (maybe this is what you need to look at). Essentially, you have $x_1(t), x_2(t), \ldots, x_n(t)$ - the number of specimen of various types at time $t$. An depending on how they behave, you somehow can express $\dot x_1(t), \dot x_2(t), \ldots, \dot x_n(t)$ - how their amount increases/decreases. $\endgroup$
    – user114966
    Apr 9, 2021 at 23:12
  • $\begingroup$ That is excellent. I thank you very much for all the help! $\endgroup$
    – lafinur
    Apr 10, 2021 at 23:32
  • 1
    $\begingroup$ Neural networks are as irrelevant here as they are for sorting numbers. There is a perception in the general public that neural networks are the one algorithms that solves all computational problems. It isn't the case. $\endgroup$ Apr 13, 2021 at 7:50


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.