Проблема удовлетворения ограничений с использованием ограничения 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])

Задача должна удовлетворять следующим ограничениям :

  1. Все переменные должны иметь разные значения (что я реализовал с помощью )
      var = ["a", "b", "c", "d"]
problem.addConstraint(AllDifferentConstraint(), var)
  1. Все переменные должны находиться в диапазоне [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}]
  1. В наборе решений должно быть ровно 2 переменные из a, b и d (здесь я застрял)

Вопрос

Есть ли способ реализовать третье ограничение с использованием ограничения Python ?

Примечание : я знаю, что после получения решения я могу случайным образом выбрать 2 ключа из a, b и d, но это не то, что я хочу, потому что в будущем могут быть и другие ограничения, которые могут быть добавлены к проблеме. Итак, это может повлиять на решение.

Любая помощь приветствуется. Спасибо!

0 ответов

Другие вопросы по тегам