Patterns for self-adaptation in Cyber-Physical Systems