問題タブ [drools-planner]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
drools - Are "swap move factories" worth the effort?
I noticed that for problems such as Cloudbalancing, move factories exist to generate moves and swaps. A "move move" transfers a cloud process from one computer to another. A "swap move" swaps any two processes from their respective computers.
I am developing a timetabling application.
- A
subjectTeacherHour
(a combination of subject and teacher) have only a subset ofPeriod
s to which they may be assigned. If Jane teaches 6 hours at a class, there are 6subjectTeacherHour
s each which have to be allocated aPeriod
, from a possible 30Period
s of that class ;unlike the cloudbalance example, where a process can move to any computer. - Only one
subjectTeacherHour
may be allocated aPeriod
(naturally).
It tries to place subjectTeacherHour
to eligible Periods
, till an optimal combination is found.
Pros
The manual seems to recommend it.
...However, as the traveling tournament example proves, if you can remove a hard constraint by using a certain set of big moves, you can win performance and scalability...
...The `[version with big moves] evaluates a lot less unfeasible solutions, which enables it to outperform and outscale the simple version....
...It's generally a good idea to use several selectors, mixing fine grained moves and course grained moves:...
While only one subjectTeacher
may be allocated to Period
, the solver must temporarily break such a constraint to discover that swapping two certain Period
allocations lead to a better solution. A swap move "removes this brick wall" between those two states.
So a swap move can help lead to better solutions much faster.
Cons
A subjectTeacher
have only a subset of Period
s to which they may be assigned. So finding intersecting (common) hours between any two subjectTeacher
s is a bit tough (but doable in an elegant way: Good algorithm/technique to find overlapping values from objects' properties? ) .
Will it only give me only small gains in time and optimality?
I am also worried about crazy interactions having two kinds of moves may cause, leading to getting stuck at a bad solution.
drools - 'not'キーワードの概念的な意味; オブジェクト間の評価
DroolsPlannerプロジェクトでBucketTotal
最小のオブジェクトを見つけようとしています。total
これをサンプルコードから採用しました。
私の推論では、「BucketTotal
オブジェクトを検索して、より大きいオブジェクトが存在$b
しないようにする」ことを意味していました。BucketTotal
total
total
$b
結局のところ、それは反対の意味でした(そして私はそれを修正しました)。
Droolsがそのステートメントを見つける理由を説明してください$b
。
drools - (タグの)リストを別のリストと照合し、一般的な要素の存在を検出する
私の要件はタグを一致させることです。この例では、この特定のはに割り当てられたをHourConstraint
チェックします。TeacherHour
Hour(23)
具体的にはTeacherHour.attributes["tags"]
、値をチェックし、["asst_ct","teacher_john_smith"]
少なくとも1つの一致、この場合は2つ("asst_ct"
との両方"teacher_john_smith"
)を検出します。
質問: 2つのリスト間の共通要素の存在(trueまたはfalse)を検出するにはどうすればよいですか?
Drools ExpertにはとがmemberOf
ありますcontains
が、スカラーとコレクションをチェックします。コレクションとコレクションをチェックすることはありません。
私は2つの潜在的な方法を見ています:
- 関数を導入し、
boolean isIntersecting(list,list)
それを真実のチェックに使用するようにDroolsに指示します TeacherHour.attributes[]
リストの代わりに文字列として、およびHourConstraint.valueslist
そのリストに一致する正規表現として実装します
drools-planner - 初期化されていない計画値 [エラー]
プランニング値が初期化されていないプランニング エンティティをソリューションに設定することはできますか?
可能であれば、どのように?:)
助けてください:)
Null 以外の計画変数を使用してコードを実行するとすべて正常に動作しますが、計画変数を設定せずに実行すると [ Exception in thread "main" java.lang.NullPointerException
]があります。
ここに私のコードがあります:
// manList.add(null); // womanList.add(null);
// m.setMan(null); // m.setWoman(null); //m.setMan(manList.get(i)); //m.setWoman(womanList.get((i+j) % 10));
`
sovlerConfig-xml
jboss - jboss で drools planner プロジェクトを実行するには?
Drools Planner を使用して教員のスケジュールを生成するデスクトップ アプリケーションがあります。今、私はそれをサーバーに置きたいと思っています。そのため、サーバー上でメソッドを呼び出してスケジュールを作成すると、ClassNotFound Exception が発生します。
Drools ライブラリを EAR に追加するにはどうすればよいですか? または、いくつかの瓶を含める必要がありますか?
前もって感謝します、
ダルコ
drools - 3つの異なるオブジェクトのセットを選択する
Drools Plannerはこれを使用して、2つの異なるオブジェクトを選択し、特定のオブジェクトのペアに対してルールが2回実行されないようにしました。o1
とが一致した場合、とo2
の2回ではなく、1回だけ発生(o1,o2)
し(o2,01)
ます。
3つの異なるオブジェクトのセットを選択するにはどうすればよいですか?そのための良い選択基準は何ですか?
drools - IntConstraintOccurrenceに負の値を指定できますか?
アプリケーションで正と負の両方のソフト制約を有効にしたい。+2は重み2の正の制約を意味し、-1は重み1の負の制約を意味します。負の値をaとして指定してNEGATIVE_SOFT
、それが正のソフト制約であることを意味しますか?
NEGATIVE_SOFT
それ以外の場合、値にPOSITIVE_SOFT
応じて挿入する個別のルールを使用せずに、正と負のソフト制約を有効に設定するにはどうすればよいですか?
drools - y個の制約のうちx個を満たすため
(計画エンティティ)からに1対1の一致を行うタイムテーブルプログラムを作成しています。私がする必要がある場合があります:「y期間の間、少なくともxは一致しなければなりません」SubjectTeacherPeriod
Period
SubjectTeacherPeriod
match_condition
たとえば、3つの特定の期間を制限したいのですが、そのうちの少なくとも2つは、に一致する教師によって教えられasst prof
ます。
このような制約を保持するデータ構造は次のとおりです。
SubjectTeacherPeriod
Period
もちろん、
リストPeriod
から個々のsを評価して、それらに割り当てられたx個のsが一致条件を満たしているかどうかを確認するルールを作成するにはどうすればよいですか?SubjectTeacherPeriod
Period
クラスを悪い形式で定義している場合は、修正してください。
例として、一致を判断するために評価されるステートメントを次に示します。eval(matches($stp_attrib,$match_condition))
明確にされている以上に混乱している場合は、擬似コードを使用して申し訳ありません。はSomeType
実際にはList<String>であるため、一致条件はCollections.disjoint
drools - 2 つの計画エンティティを値に同期する方法
2 つの計画エンティティ間で計画値を同期したいと考えています。SubjecTeacherPeriod
この場合、可能な値の範囲がばらばらであっても、互いに「一致」する 2 つの期間を選択したいと考えています。
たとえば、とはどちらも「月曜日の最初の時間」であるため互換性がありますPeriod
。と についても同様です。1
106
2
107
s2
直後に割り当てられるプランニングエンティティの難易度を設定しs1
ました(ログを見ました)。しかし、それらには互換性のない値が割り当てられています。また、システムはソルバー アクションの最後にこのようなエラーから回復することはありません。
それらを同期させるにはどうすればよいですか?
「互換性」と「一致」について言及した場合、Period
2 つのフィールド (曜日と曜日の順序) が等しい を意味します。各クラス (およびSubjectTeacherPeriod
そのクラスで可能な各ピリオド) には、個別Period
の があります。
drools - ハード (またはソフト) 制約を破る
質問が言うように。後
違反した特定のルール (値を含む) を確認したい。ソリューションからそれらを取得するにはどうすればよいですか?