Self-adaptation with end user preference, based on constraint solving