Как определить и распечатать, какие ограничения нарушены в OptaPy?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как определить и распечатать, какие ограничения нарушены в OptaPy?

Сообщение Anonymous »

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

Код: Выделить всё

from optapy import constraint_provider
from optapy.constraint import Joiners, ConstraintFactory
from optapy.score import HardSoftScore

@constraint_provider
def define_constraints(constraint_factory: ConstraintFactory):
return [
room_conflict(constraint_factory),
teacher_conflict(constraint_factory),
student_group_conflict(constraint_factory),
# other constraints...
]

def room_conflict(constraint_factory: ConstraintFactory):
return constraint_factory.for_each(Lesson) \
.join(Lesson,
Joiners.equal(lambda lesson: lesson.timeslot),
Joiners.equal(lambda lesson: lesson.allotted_room),
Joiners.less_than(lambda lesson: lesson.id)) \
.penalize("Room conflict", HardSoftScore.ONE_HARD)
Я хочу распечатать, какие ограничения были нарушены после того, как решение было найдено. Я пробовал использовать Solution.getScore().explain(), но столкнулся с такой ошибкой:

Код: Выделить всё

AttributeError: 'proxy.TimeTable' object has no attribute 'getScore'
Я не знаю, как определить, какие ограничения нарушаются, или как их распечатать.
Что лучше? способ получить информацию о нарушениях ограничений в OptaPy? Как я могу распечатать, какие ограничения были нарушены, и их подробности?
Буду признателен за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-optapy
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»