-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Hello,
Thank you for your work on creating a Python version for constraint acquisition with the PyCona code (Also CP2023/AAAI24). Your effort in this area is much appreciated.
We have been exploring the code and encountered a few questions while attempting to create benchmarks for problems such as nqueens, the complete Golomb ruler, and zebra puzzles. It appears that some essential constraint types are not being handled as expected, which we suspect might be related to scope projection. Additionally, it seems that findC2 conjunctions on the same scope may not be functioning correctly.
Here are some specific examples I've observed:
Zebra Puzzle:
Constraints like "X = Y + 1" are not being learned; instead, an equivalent inequality constraint (X ≠ Y) is derived. Similarly, constraints involving absolute differences, such as "|X - Y| = 1", also seems to present an issue.
Golomb Ruler (Complete):
When using an oracle that includes all 378 distance constraints and the 28 inequality constraints, the scope projection appears to have difficulty with ternary distance constraints (|X - Y| ≠ |Y - Z|). During debugging, We noticed that when bias constraints are removed, the function get_con_subset(B, Y) in utils.py removes the scopes of some important constraints to be learned.
N-Queens:
When running Quacq with the findC2 option, it learns a partial and incorrect conjunction of constraints.
We have included the code for the oracle and bias construction for each of these problems below for your reference.
Any assistance you could provide in resolving these issues would be greatly appreciated.
Best regards.