従業員の需要をカバーするために、指定されたシフト テンプレートからシフトを生成することで、指定された 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[] |
ソルバーによって生成された一連のシフトと、各スケジュールに割り当てられた従業員数。 |
SolverConfig
シフト生成問題を解くための追加のパラメータを指定します。
JSON 表現 |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
フィールド | |
---|---|
timeLimit |
解法が問題に費やすべき最長時間。設定しない場合、デフォルトは 1 分です。制限時間の選択は、問題の規模によって異なります。たとえば、2 つの この値はハードリミットではなく、通信のオーバーヘッドを考慮していません。問題を解決するために予想されるレイテンシは、この値をわずかに超える場合があります。 「 |
multiDaySchedule |
true の場合、解法は複数のシフトを含む |
shiftEventsCanChange |
true の場合、複数日の |
ShiftTemplate
シフトを生成するルールを指定するテンプレート。シフトとは、開始時間と終了時間を指定する作業単位です。イベント(昼食、休憩など)が含まれる場合もあります。シフトは回答の特定の日付に割り当てられます。
JSON 表現 |
---|
{ "id": string, "earliestStartTime": { object ( |
フィールド | |
---|---|
id |
このテンプレートの一意の ID。 |
earliestStartTime |
シフトを開始できる最も早い時間。この値は、時間と分で指定します。秒とナノは無視されます。 |
latestStartTime |
シフトを開始する最も遅い時刻。この値は、時間と分で指定します。秒とナノは無視されます。この値が |
durationMinutes |
このテンプレートによって生成されたシフトの固定期間。 |
startTimeIncrementMinutes |
|
daysOffCountPerWeek |
週ごとの固定日数。その日に始まるシフトが割り当てられていない場合、その従業員には特定の休日が与えられます。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 を指定します。
JSON 表現 |
---|
{ "eventTemplateId": string, "startDateTime": { object ( |
フィールド | |
---|---|
eventTemplateId |
このイベントの生成に使用されたテンプレートの ID。 |
startDateTime |
イベントの開始日時。この値は分単位で指定されます。秒以下の単位は指定されません。 |
endDateTime |
イベントの終了日時。この値は分単位で指定されます。秒以下の単位は指定されません。 |