Как использовать слюни для этой ситуации - PullRequest
1 голос
/ 19 июля 2011

У меня есть сценарий использования, в котором я должен распределить один набор объектов (назовем его объектами питания) между двумя объектами (скажем, человеком), удовлетворяющих определенным условиям (скажем, у каждого человека есть минимальное энергопотребление и, скажем, каждый продукт объект дает определенное определенное количество энергии). Я написал бы правила для Лица А и Лица Б. Может ли кто-нибудь направить меня, если это можно сделать с помощью слюней? Если да, то как.

Предположим, у меня есть следующие доменные объекты

Person :
  requirement
  List<Food>

Food :
  energy

Скажем, я добавил в базу знаний Персона А, Персона Б и Список из 10 объектов питания.

1 Ответ

3 голосов
/ 20 июля 2011

Сначала ответьте на следующий вопрос: Можете ли вы взять еду из списка неназначенных продуктов и всегда решать, к какому лицу она должна обратиться, независимо от того, сколько других продуктов уже назначено тем или иным лицам? Если ответ да , используйте Drools Expert с правилами вроде

when
  $f : Food(unassigned == true)
  FoodLike($p Person, foodLike == $f; $l : likeness)
  not FoodLike(foodLike == $f; likeness > $l)
then
  // assign $f

Если ответ нет , у вас возникла проблема упаковка бина , которая является NP-полной. В этом случае используйте Drools Planner , см. это видео о проблеме упаковки бункера . Просто скопируйте и вставьте этот пример (называемый cloudbalance), где компьютеры будут вашими личностями, а процессы - вашими объектами питания.

...