Как распространить фильтрацию доменов по переменным с помощью Google Or-tools? - PullRequest
1 голос
/ 21 января 2020

Я хочу использовать Google Or-tools для применения интерактивной конфигурации. Поэтому мне нужно знать, как применять пропагатор ограничений для фильтрации переменных доменов.

Например, предположим, что следующая программа:

CpModel model = new CpModel();

// Create variables x and y
IntVar x = model.newIntVarFromDomain(Domain.fromValues(new long[]{1, 2, 3, 4}), "x");
IntVar y = model.newIntVarFromDomain(Domain.fromValues(new long[]{1, 2, 3, 4}), "y");

// Tuple constraint 
model.addAllowedAssignments(new IntVar[]{x, y}, new int[][]{{2, 1}, {2, 4}});

// Equality constraint
model.addEquality(x, 2);

CpSolver solver = new CpSolver();

Хорошо, я знаю, что выполнение алгоритмов решения над этим наименьшим проблема быстро Однако, когда эта проблема будет становиться все больше и больше, решение окажется очень дорогим. В данный конкретный момент c мне нужно применить алгоритмы фильтрации для ужесточения переменных доменов на основе ограничений.

В частности, я хотел бы продолжить выполнение программы, выполнив следующие операции:

  1. Как распространить алгоритмы фильтрации на переменные области? Что-то вроде: solver.propagate()?

  2. Как перечислить переменные домены? Я ожидал бы некоторый результат как:

System.out.println(x.getBuilder().getDomainList()); // Should print x = [2]
System.out.println(y.getBuilder().getDomainList()); // Should print y = [1, 4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...