  This project proposes and compares a new way to optimise Super Mario Bros.
(SMB) environment where the control is in hand of two approaches, namely,
Genetic Algorithm (MarioGA) and NeuroEvolution (MarioNE). Not only we learn
playing SMB using these techniques, but also optimise it with constrains of
collection of coins and finishing levels. Firstly, we formalise the SMB agent
to maximize the total value of collected coins (reward) and maximising the
total distance traveled (reward) in order to finish the level faster (time
penalty) for both the algorithms. Secondly, we study MarioGA and its evaluation
function (fitness criteria) including its representation methods, crossover
used, mutation operator formalism, selection method used, MarioGA loop, and few
other parameters. Thirdly, MarioNE is applied on SMB where a population of ANNs
with random weights is generated, and these networks control Marios actions in
the game. Fourth, SMB is further constrained to complete the task within the
specified time, rebirths (deaths) within the limit, and performs actions or
moves within the maximum allowed moves, while seeking to maximize the total
coin value collected. This ensures an efficient way of finishing SMB levels.
Finally, we provide a fivefold comparative analysis by plotting fitness plots,
ability to finish different levels of world 1, and domain adaptation (transfer
learning) of the trained models.
