Я работаю над тем, чтобы научиться использовать CP Solver в Ortools. Я создал тестовую проблему, которая пытается найти возможные варианты размещения собак, которые не ладят в клетках, поэтому несовместимые пары не рядом друг с другом. Проблема, которую я собрал, имеет только два возможных решения, но решатель не выбирает ни одного из них. Неверно ли я использую add_implication, так как это часть кода, где я тестирую плохие комбинации? В настоящее время я не использую какие -либо другие ограничения, кроме того, что все собаки должны быть в клетке и только одну собаку на клетку. < /P>
Вот мой простой тестовый код. Он должен создавать одно из возможных возможных решений (бун в A или D, с Кенси рядом с ним), но обычно нет. Я пробовал другие операции, кроме Add_implication, но ни один из них, кажется, не показывает возможных значений. < /P>
from ortools.sat.python import cp_model
# Data
animals = ["Lulu", "Abby", "Boone", "Kensey"]
cages = ["cage_A", "cage_B", "cage_C", "cage_D"]
# Incompatible pairs (cannot be next to each other)
incompatible_pairs = [("Boone", "Lulu"), ("Boone", "Abby")]
# Cage adjacencies (represented as pairs)
adjacent_cages = [("cage_A", "cage_B"), ("cage_B", "cage_C"), ("cage_C", "cage_D")]
# Model
model = cp_model.CpModel()
# Variables
x = {}
for animal in animals:
for cage in cages:
x[(animal, cage)] = model.new_bool_var(f"x_{animal}_{cage}")
# Constraints
# Each animal goes into exactly one cage
for animal in animals:
model.add(sum(x[(animal, cage)] for cage in cages) == 1)
# Each cage holds at most one animal
for cage in cages:
model.add(sum(x[(animal, cage)] for animal in animals)
Подробнее здесь: https://stackoverflow.com/questions/797 ... e-or-tools
Использование ADD_IMPLICATIONS в CP Solver (Google или Tools) ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Является ли установлен `routeId` `yader add add set-cookie`a локально хранящий печенье?
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-