Genetic algorithm with critical path improvement strategy for solving project scheduling problem with multiple modes