Rebuilds the top scoring model from an optimisation.

        Returns
        -------
        model: AMPAL
            Returns an AMPAL model of the top scoring parameters.

        Raises
        ------
        AttributeError
            Raises a name error if the optimiser has not been run.

def best_model(self):
        """Rebuilds the top scoring model from an optimisation.

        Returns
        -------
        model: AMPAL
            Returns an AMPAL model of the top scoring parameters.

        Raises
        ------
        AttributeError
            Raises a name error if the optimiser has not been run.
        """
        if not hasattr(self, 'halloffame'):
            raise AttributeError(
                'No best model found, have you ran the optimiser?')
        model = self.build_fn(
            (self.specification,
             self.sequences,
             self.parse_individual(self.halloffame[0])
            ))
        return model