Improving The Generalisability Of Brain Computer Interface Applications Via Machine Learning And Search-Based Heuristics