Improved biogeography-based optimization algorithm for flexible job-shop scheduling problem