Программирование ограничений на целочисленные переменные

Я использую GeCode для создания программного обеспечения для решения конкретной задачи. Я смоделировал свою проблему, используя переменные целочисленного набора и некоторые ограничения для этих переменных. Но что касается этого вопроса, давайте рассмотрим более простой случай.

Скажем, у меня есть три заданные переменные, чьи домены [{},..., {1,2,3}], то есть {}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} и то, что мои единственные ограничения - пересечение (var_i, var_j), пусто для всех i и j, и i отличается от j.

Очевидно, что если я хорошо понимаю свою собственную логику, она должна дать как минимум var_1 = {1}, var_2 = {2} и var_3 = {3}. Но это также может дать var_1 = {1,2,3} и var_2 = var_3 = {}. Действительно, запуск GeCode с этими переменными и ограничениями дает только один результат: var_1 = var_2 = var_3 = все возможные подмножества {1,2,3}, предлагая, что существуют разные решения (предлагая, чтобы я мог выбрать одно подмножество в var_1 и мог найти подмножества в двух других переменных, которые удовлетворяют ограничениям.

Мой вопрос в том, как заставить GeCode перечислять различные комбинации. Потому что, очевидно, моя окончательная модель будет состоять из большего числа целых чисел и, следовательно, большего количества подмножеств. Таким образом, я не могу позволить себе затраты на выполнение выбора вручную, устанавливая переменные самостоятельно, так как я теряю все преимущества, которые может предложить решатель ограничений.

Есть ли возможность, которая может помочь мне решить эту проблему?

1 ответ

Немного смущает вопрос, но похоже, что вы пытаетесь понять, как работает общая согласованность дуг. Вы хотите уточнить, почему Gecode предоставляет вам все возможные подмножества, или вы ищете сам Gecode для вывода этих подмножеств для анализа?

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