Project scheduling with parallel activities, time windows and precedence constraints