A general variable neighborhood search algorithm for a parallel-machine scheduling problem considering machine health conditions and preventive maintenance