我有一个用例,其中我要在满足某些条件的两个对象(比如Person)中分配一组对象(让我们称之为Food对象)(比如说每个人有最低能量需求并且说每个食物)对象给出一定量的能量)。我会为人A和人B编写规则。如果可以使用drools实现这一点,有人可以指导我。如果是这样,怎么做。
假设我有以下域对象
Person :
requirement
List<Food>
Food :
energy
假设我已经将人员A和人员B以及10个食物对象列表添加到知识库中。
答案 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
),其中计算机将成为您的人员,并且流程将成为您的食物对象。