Grasshopper Optimisation Algorithm: Theory and application