Проблема удовлетворения ограничений с использованием ограничения Python
Я сейчас работаю над CSP который строго использует
python-constraint
модуль
Проблема
У меня есть четыре переменные a, b, c и d, каждая из которых лежит в каком-то домене (на данный момент не важно)
from constraint import *
problem = Problem()
problem.addVariable("a", [1,2,3,4])
problem.addVariable("b", [1,4,9])
problem.addVariable("c", [1,2])
problem.addVariable("d", [1,3,5])
Задача должна удовлетворять следующим ограничениям :
- Все переменные должны иметь разные значения (что я реализовал с помощью )
var = ["a", "b", "c", "d"]
problem.addConstraint(AllDifferentConstraint(), var)
- Все переменные должны находиться в диапазоне [1,4] (который я реализовал с помощью AllDifferentConstraintInSetConstraint )
problem.addConstraint(InSetConstraint([1,2,3,4]))
Это набор решений, который я получил с двумя указанными выше ограничениями.
problem.getSolutions()
[{'b': 4, 'c': 2, 'a': 3, 'd': 1},
{'b': 4, 'c': 2, 'a': 1, 'd': 3},
{'b': 4, 'c': 1, 'd': 3, 'a': 2},
{'b': 1, 'c': 2, 'd': 3, 'a': 4}]
- В наборе решений должно быть ровно 2 переменные из a, b и d (здесь я застрял)
Вопрос
Есть ли способ реализовать третье ограничение с использованием ограничения Python ?
Примечание : я знаю, что после получения решения я могу случайным образом выбрать 2 ключа из a, b и d, но это не то, что я хочу, потому что в будущем могут быть и другие ограничения, которые могут быть добавлены к проблеме. Итак, это может повлиять на решение.
Любая помощь приветствуется. Спасибо!