Model-based tools are getting more mature for creating high quality systems such as tools for design space exploration (DSE). The purpose of DSE is to generate design candidates that fulfill the provided constraints and can find the best candidates based on different objectives. Rule-based DSE starts from an initial model and explores other model states using a set of provided transformation rules. As a solution it returns a sequence of transformation steps that transforms the initial model to the best explored model state.
An important challenge of DSE is to identify recurring model states as retraversing them decreases performance and can even lead to an infinite loop. To efficiently identify these states a unique state code is generated for each traversed model state. Expectations of such state codes are that they are identical if and only if the model states are identical and that each model state has a deterministic state code.
VIATRA-DSE is a rule-based DSE framework that has a generic built-in state coder. This state coder helps in the early stages of defining the DSE problem, but it can be greatly outperformed by a domain-specific state coder. However, creating a such a state coder is non-trivial and it is easy to make mistakes. Given that, my purpose is to generate a state coder based on the metamodel and user-specified configuration, that is able to outperform the generic state coder.