как динамически добавлять / удалять ограничения в optaplanner

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

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

Кто-нибудь разработал такое решение?

Спасибо


person ajd    schedule 06.09.2017    source источник


Ответы (1)


Либо используйте разные <scoreDrl> элементы:

  • general.drl
  • ny-specific.drl
  • ca-specific.drl
  • tx-specific.drl
  • ...

Или, если вам нужно решить один набор данных, содержащий сотрудников как tx, так и ny, тогда выполните что-то вроде

class Employee {
    State state;
}

rule noCross
when
    Employee(state = "Texas") // doesn't apply to California
    // ... crosses lines
then
    ...
end
person Geoffrey De Smet    schedule 10.09.2017