問題タブ [cp-sat-solver]

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.

0 投票する
1 に答える
79 参照

optimization - Google OR-Tools での NewBool​​Var の使用

Google OR-Tools の論理制約の構文が気になります。CPLEX で行った看護師のスケジューリング プロジェクトがあり、それを Google OR-Tools に変換しています。Google OR-Tools のチャネリング制約に関するドキュメントを見つけましたが、混乱しています。Google OR-Tools でこの CPLEX 論理制約を実装する方法を理解していただけますか? 試してみましたが、意図したとおりに機能していません:(

環境:

working_assignment_vars_long[r,h,i] は、役割 r の看護師 i が 15 分間隔 h (つまり 1:15PM) で勤務しているかどうかを示すバイナリ決定変数です。

lunch_break_assignment_vars_long[r,h,i] は、役割 r の看護師 i が 15 分間隔 h (つまり 1:15PM) で休憩中であるかどうかを示すバイナリ決定変数です。

simple_break_assignment_vars_long[r,h,i] は、役割 r の看護師 i が 15 分間隔 h で休憩中であるかどうかを示すバイナリ決定変数です。

したがって、CPLEX のこの制約は、特定の看護師が 15 分間隔で 31 回以下で勤務している場合、昼休みは 0 回、簡単な休憩は 1 回にする必要があることを示しています。

CPLEX 論理制約:

OR-Tools で次のコードを使用してこれを試みました。

ただし、これは意図したとおりには機能していません :( 看護師が 15 分間隔で 32 時間未満の勤務で、昼休みも簡単な休憩もありません。洞察や助けをいただければ幸いです。私はこの問題に長い間悩まされています。 :(