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?