如何在这种情况下使用drools

时间:2011-07-19 08:00:24

标签: drools

我有一个用例,其中我要在满足某些条件的两个对象(比如Person)中分配一组对象(让我们称之为Food对象)(比如说每个人有最低能量需求并且说每个食物)对象给出一定量的能量)。我会为人A和人B编写规则。如果可以使用drools实现这一点,有人可以指导我。如果是这样,怎么做。

假设我有以下域对象

Person :
  requirement
  List<Food>

Food :
  energy

假设我已经将人员A和人员B以及10个食物对象列表添加到知识库中。

1 个答案:

答案 0 :(得分:3)

首先回答以下问题: 你可以从未分配的食物清单中取出食物,并且总是决定应该去哪个食物,而不管已经分配了多少其他食物?

如果答案是 ,请使用Drools Expert和

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

如果答案是 ,则会出现 bin packing 问题,这是NP-complete。在这种情况下,请使用Drools Planner,请参阅this video of a bin packing problem。因此,只需复制粘贴该示例(称为cloudbalance),其中计算机将成为您的人员,并且流程将成为您的食物对象。