Solving computationally expensive problems using surrogate-assisted optimization : methods and applications