Surprise! Surprise! Learn and Adapt
Abstract
Self-adaptive systems (SAS) adjust their behavior at runtime in response to environmental changes, which are often unpredictable at design time. SAS must make decisions under uncertainty, balancing trade-offs between quality attributes (e.g., cost minimization vs. reliability maximization or energy consumption minimization vs. performance maximization), based on the impact of possible adaptation actions. Traditionally, SAS have been designed with fixed assumptions about these impacts, but such assumptions may not always hold during execution. Therefore, SAS require techniques to learn the actual impact of adaptation actions at runtime to support informed decision-making. This paper introduces the concept of Surprise, where an SAS detects deviations between its assumed and observed impacts during execution, enabling it to adjust its decisions accordingly. The approach is demonstrated through an application in the networking domain.