The prisonners dilemma is not a good approach at all. You can just define matrixes of behaviours and assign variables to each creature so they can behave differently (as in a RPS bot) but you won't accomplish much and it definetly won't be much of a social interaction.
You should start practicing with Finite State Machines.
http://www.devmaster.net/articles/fsm_intro/http://en.wikipedia.org/wiki/Finite-state_machineCreate some sort of world variables that will be relevant to your critters.
Create your critters as FSMs (lone first, then give them the abilitiy to interact between each other)
quick example:
World-> Food: 20 Shelter: 20
Creature-> Energy: 0/10 Strenght: 0/10
Attack another creature -> (depends on strenght , energy & random factor) if it wins gains +3 energy +1 strenght
Pick Food -> +2 energy.
Hide in Shelter -> can't be attacked by hunters or creatures.
Every turn:
Creatures change -1 energy.
Hunters hunt a determined amount of creatures that didnt hide based on (amount of food & random factor) The more food for humans, the less they need to hunt creatures.
Food is created between some values (random min/max)
Once you have some simple model like this one running with creatures taking just random options. You might look at the tendencies and stuff. Statystical analysis are cool. Anyway, once you get to this point, you can start adding characteristics (genes, personalities, whatever) to the creatures so they can base their actions accordingly.
What language are you coding in?
btw, predicting the future involves knowing some factors, calculating some results and acting upon it. But the more you know, the more complex the calculations will be.
Remembering things is even harder. You're better trying all these things first and then, if you manage a nice simulation. You might want to dwell into that kind of madness.