Выражение многопеременных ограничений с помощью OR-Tools - PullRequest
0 голосов
/ 14 марта 2020

Я изучаю Cp-SAT от Google для моделирования определенного типа c, который выглядит следующим образом:

Ограничения:

Переменная X может принимать значения 1, 2 и 3
Переменная Y может принимать значения 2, 3 и 4
Переменная Z может принимать значения 5, 6 и 7
Когда значение переменной X равно 1, тогда Y может принимать только 3 или 4
Когда значение переменной Y равен 3, то Z может принимать только 7

Если задано значение переменной Y, равное 3, а значение Z не равно 7, найти возможные значения для X и Z.

Я не смог смоделируйте это, используя интерфейс CP-SAT java от Google. Кто-нибудь может помочь?

Я изучил следующие примеры, но все еще не смог выяснить: https://github.com/google/or-tools/blob/stable/ortools/linear_solver/samples/LinearProgrammingExample.java

https://github.com/google/or-tools/blob/stable/ortools/linear_solver/samples/SimpleMipProgram.java

1 Ответ

4 голосов
/ 14 марта 2020

Вы смешиваете решатели (интерфейс CP-SAT и интерфейс линейного решателя).

Вам следует взглянуть на решатель CP-SAT, в частности на это ограничение:

http://google.github.io/or-tools/java/classcom_1_1google_1_1ortools_1_1sat_1_1CpModel.html#a07c24a31bdfe0db93e53fbf38655f200

Пожалуйста, начните с прочтения вводной документации:

https://developers.google.com/optimization/cp

и списка простых рецептов

https://github.com/google/or-tools/blob/stable/ortools/sat/doc/README.md

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...