Using particle swarm optimization to solve effectively the school timetabling problem