In this paper, we discuss the co-evolution of agents in a multi-agent system where agents interact with each other. These interactions are modelled in an abstract manner using ideas from game theory. This paper focuses on the iterated prisoner's dilemma (IPD). We discuss properties that we believe to be of importance with respect to fitness of strategies in traditional environments and also in environments where noise is present. Specifically, we discuss the notion of forgiveness, where strategies attempt to forgive strategies that defect in the game, with the aim of increasing the level of cooperation present. We study these strategies by using evolutionary computation which provides a powerful means to search the large range of strategies' features.