In the following line of code:



 Preston_Willis:

param.data = self.botList[self.fittest.index].model.parameters():


the left hand side of the equation refers to the weights of one layer, but in the right-hand side refers to all model parameters. I think you would want to put the best model and the current model in a for-loop with zip() function. Assuming that you have two models current_model and best_model, then, the following should work:
for param_cur, param_best in zip(current_model.parameters(), best_model.parameters()):
    param_cur.data = param_best.data