従業員の需要を満たすために、特定のシフト テンプレートからシフトを生成することで、指定された SolveShiftGenerationRequest
からのシフト生成問題を解きます。
HTTP リクエスト
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
この URL は gRPC Transcoding 構文を使用します。
リクエストの本文
リクエストの本文には、次の構造のデータが含まれます。
JSON 表現 |
---|
{ "solverConfig": { object ( |
フィールド | |
---|---|
solverConfig |
省略可。ソルバーのパラメータ。 |
shiftTemplates[] |
必須。シフトを生成するためのルールを指定するシフト テンプレートのセット。 |
employeeDemands[] |
必須。 |
レスポンスの本文
シフト生成の問題に対するレスポンス。返された solutionStatus
が SOLVED
の場合、ソルバーによって生成された有効なシフトのセットが employeeSchedules
に返されます。有効なシフト スケジュールの場合、次のプロパティが保持されます。
employeeSchedules
で生成された各シフトは、対応するShiftTemplate
で指定されたルールに従います。- 各シフトで選択された各イベントは、対応する
ShiftTemplate.Event
で指定されたルールに従います。 - 同じ ShiftTemplate から生成された一連のシフトに割り当てられた従業員の合計数が、そのテンプレートの
maximumEmployeeCount
を超えない。 - 各社員が一定の間隔で需要に対応します。
成功した場合、レスポンスの本文には次の構造のデータが含まれます。
JSON 表現 |
---|
{ "solutionStatus": enum ( |
フィールド | |
---|---|
solutionStatus |
返されたソリューションのステータス。 |
employeeSchedules[] |
ソルバーによって生成された一連のシフトと、各スケジュールに割り当てられた従業員数。 |
demandCoverageViolations[] |
指定された |
SolverConfig
シフト生成の問題を解決するための追加のパラメータを指定します。
JSON 表現 |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
フィールド | |
---|---|
timeLimit |
解法が問題に費やす最大時間。設定しない場合、デフォルトは 1 分です。制限時間は、問題の規模に応じて選択する必要があります。たとえば、2 つの この値はハードリミットではなく、通信のオーバーヘッドを考慮していません。問題を解決するために予想されるレイテンシは、この値をわずかに超えることがあります。
|
multiDaySchedule |
true の場合、ソルバーは複数のシフトを含む |
shiftEventsCanChange |
true の場合、複数日にわたる |
ShiftTemplate
シフトを生成するためのルールを指定するテンプレート。シフトとは、開始時間と終了時間を指定する作業単位であり、イベント(昼食、休憩など)が含まれる場合があります。シフトは回答の特定の日付に割り当てられます。
JSON 表現 |
---|
{ "id": string, "earliestStartTime": { object ( |
フィールド | |
---|---|
id |
このテンプレートの一意の ID。 |
earliestStartTime |
シフトを開始する最も早い時刻。この値は時間と分で指定します。秒と nano は無視されます。 |
latestStartTime |
シフトを開始する最後の時刻。この値は時間と分で指定します。秒と nano は無視されます。この値が |
durationMinutes |
このテンプレートによって生成されたシフトの固定期間。 |
startTimeIncrementMinutes |
|
daysOffCountPerWeek |
1 週間の休日日数は固定されています。従業員がその日に始まるシフトに割り当てられていない場合、その日は休みになります。1 週間は 7 日間で、日曜日から始まります。 |
eventTemplates[] |
シフトごとにイベントを生成するためのルール。指定した各イベントのシフトごとに、1 つのイベントのみが含まれます。 |
minimumIntereventGapMinutes |
イベントの終了から次のイベントの開始までの時間の最小値(分)。 |
maximumEmployeeCount |
このテンプレートで生成されたすべてのシフトに割り当てることができる従業員の最大数。 |
TimeOfDay
1 日のうちの時刻を表します。日付とタイムゾーンは重要ではないか、他の場所で指定されています。API は、うるう秒を許可するようにできます。関連する型は、google.type.Date
と google.protobuf.Timestamp
です。
JSON 表現 |
---|
{ "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer } |
フィールド | |
---|---|
hours |
時間(24 時間形式)。0~23 である必要があります。API ではビジネスの終了時間などのシナリオにおいて、値 "24:00:00" を許可することもできます。 |
minutes |
分。0~59 である必要があります。 |
seconds |
秒。通常、0~59 である必要があります。API がうるう秒を許可する場合、値 60 が許可されます。 |
nanos |
秒の小数部分(ナノ秒単位)。0~999,999,999 である必要があります。 |
EventTemplate
シフト中に発生する単一のイベントを生成するためのルールを指定するテンプレート。イベントは、会議、休憩、昼食などを表します。
JSON 表現 |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
フィールド | |
---|---|
id |
このテンプレートの一意の ID。 |
minimumMinutesAfterShiftStart |
シフトを開始してからこのイベントを開始できる最短時間(分)。 |
maximumMinutesAfterShiftStart |
シフトを開始してからこのイベントを開始できる最大時間(分)。 |
durationMinutes |
このイベントの固定期間(分単位)。 |
startTimeIncrementMinutes |
一連のイベント開始時間( |
EmployeeDemand
指定した DateTime 間隔の需要に対応するために必要な従業員数を指定します。
JSON 表現 |
---|
{ "startDateTime": { object ( |
フィールド | |
---|---|
startDateTime |
指定されたデマンド期間の開始時点(この値を含む)。これらの値は分単位で読み上げられます。それより小さい単位は無視されます。 |
endDateTime |
特定のデマンド期間の終了時間(この値を含まない)。これらの値は分単位で読み上げられます。それより小さい単位は無視されます。 |
employeeCount |
この間隔の需要をカバーするために必要な従業員数。 |
ShiftGenerationSolutionStatus
解法のレスポンスで提供されるソリューション ステータス。
列挙型 | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
レスポンスの未指定のステータス。 |
SHIFT_GENERATION_SOLVED |
ソルバーが、指定された制限時間内に解を見つけた。 |
SHIFT_GENERATION_NOT_SOLVED |
ある問題により、ソルバーがシフトを生成できませんでした。 |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
指定された制限時間内に需要に対応できる調整を行うことができませんでした。 |
EmployeeSchedule
複数の従業員に割り当てる 1 つの ShiftTemplate
に対応するシフトの順序付きリスト。
JSON 表現 |
---|
{
"shiftTemplateId": string,
"shifts": [
{
object ( |
フィールド | |
---|---|
shiftTemplateId |
この一連のシフトを生成するために使用されたテンプレートの ID。 |
shifts[] |
|
employeeCount |
需要に対応するために、この一連のシフトに割り当てる必要がある従業員数。 |
ShiftWithEvents
開始日と終了日、およびソルバーによって生成されたシフトの固定イベントのリストを指定します。
JSON 表現 |
---|
{ "startDateTime": { object ( |
フィールド | |
---|---|
startDateTime |
シフトの開始日時。この値は分単位で指定されます。秒とそれより小さい単位は指定されていません。 |
endDateTime |
シフトの終了日時。この値は分単位で指定されます。秒とそれより小さい単位は指定されていません。 |
events[] |
このシフトに含まれるイベントのリスト。 |
イベント
ソルバーによって生成されたシフト内の特定のイベントの開始 DateTime と終了 DateTime を指定します。
JSON 表現 |
---|
{ "eventTemplateId": string, "startDateTime": { object ( |
フィールド | |
---|---|
eventTemplateId |
このイベントの生成に使用されたテンプレートの ID。 |
startDateTime |
イベントの開始日時。この値は分単位で指定されます。秒とそれより小さい単位は指定されていません。 |
endDateTime |
予定の終了日時。この値は分単位で指定されます。秒とそれより小さい単位は指定されていません。 |
DemandCoverageViolation
指定した間隔のデマンド カバレッジ違反を指定します。従業員の需要は、指定された期間全体を通じて同じです。
JSON 表現 |
---|
{ "startDateTime": { object ( |
フィールド | |
---|---|
startDateTime |
デマンド期間の開始日時(両端を含む)。この値は分単位で指定されます。 |
endDateTime |
デマンド期間の終了日時(この日時は含まない)。この値は分単位で指定されます。 |
coverageViolation |
指定した間隔でのカバレッジ違反。正の値は需要が過大であることを示し、負の値は需要が過小に含まれていることを示します。 |