Dominance Relations
Background
Apart from "hard" constraints, constraints problems often involve multiple values that need to be optimised.
In that case, some solutions are "dominated" by others, i.e they provide a "worse" value for one variable with no benefit to the others.
The job of the solver is to efficiently enumerate all non-dominated solutions, i.e. solutions where …
Background
Apart from "hard" constraints, constraints problems often involve multiple values that need to be optimised.
In that case, some solutions are "dominated" by others, i.e they provide a "worse" value for one variable with no benefit to the others.
The job of the solver is to efficiently enumerate all non-dominated solutions, i.e. solutions where at least one of the values can't be improved without sacrificing the others. This can be done by incrementally generating and adding new constraints during the search to progressively shrink the search space.
This involves:
- Defining a dominance relation, i.e. a function of two solutions a,b defining what it means for a to be dominated by b
- Generating new constraints based on this relation
- Interfacing with the solver to add these new constraints at runtime
The work would span the parsing, rewrite, and solver adaptor layers.
See: https://ozgurakgun.github.io/files/fulltext/2020/Exploiting%20incomparability%20in%20solution%20dominance%20-%20improving%20general%20purpose%20constraint-based%20mining.pdf
And: https://ozgurakgun.github.io/files/fulltext/2019/Towards%20improving%20solution%20dominance%20with%20incomparability%20conditions%20-%20a%20case-study%20using%20Generator%20Itemset%20Mining.pdf