2011-07-19 4 views
1

私は、特定の条件を満たす2つのオブジェクト(Personなど)の中から、1セットのオブジェクト(Foodオブジェクトと呼ぶ)を配布するというユースケースを持っています。エネルギー要件が最小であり、各食品オブジェクトが一定のエネルギー量を与えると言う)。私はPerson AとPerson Bのルールを書いています。これがdroolsを使って達成できるかどうか、誰かが私を導くことができますか?もしそうなら、いかに。 この状況でのdroolsの使い方

Person : 
    requirement 
    List<Food> 

Food : 
    energy 

は、私が個人Aと個人Bおよびナレッジベースへの10個の食品オブジェクトのリストを追加したと言う私は、ドメインオブジェクト以下ましたと仮定します。

答えて

3

まず、次の質問に答える: あなたは独立して、すでに割り当てられているか、他の者どのように他の多くの食品の、割り当てられていない食品のリストから食べ物を取り、常にそれがに行くべき人を決めることはできますか?

答えは答えはされていない場合

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

ようなルールではDroolsエキスパートを使用し、はいある場合は、NPである問題を梱包ビンを得ました-コンプリート。その場合は、Drools Plannerを使用してください。this video of a bin packing problemを参照してください。だから、コンピュータをあなたの人とし、そのプロセスがあなたの食物の対象になるという例をコピー貼り付けてください(cloudbalance)。

+0

どのように考えてみてください。そして、私たちは時間制限と最大回数を制御できます。私たちの最後には、落ち着きのあるプランナーのような組み合わせもあります。 –

+1

すべての可能な組み合わせをルールに1つずつ送信することは無条件です。 10個の食べ物と2人の人がいれば、それは「2^10 = 1024」の組み合わせです。あなたは100の食べ物と10人がいるとします。それは '10^100 = 10000000000000 ... 0000000000000000000'の組み合わせです。 –

+0

私は同意します。しかし、可能な組み合わせは1つしかないと言います。すみません、私は落ちるプランナーには新しいです。私はそれがどのように機能するのか分かりません。 –

関連する問題