Giải quyết vấn đề tạo ca làm việc từ SolveShiftGenerationRequest
đã cho bằng cách tạo các ca làm việc từ các mẫu ca làm việc nhất định để đáp ứng nhu cầu của nhân viên.
Yêu cầu HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
URL sử dụng cú pháp Chuyển mã gRPC.
Nội dung yêu cầu
Nội dung yêu cầu chứa dữ liệu có cấu trúc sau:
Biểu diễn dưới dạng JSON |
---|
{ "solverConfig": { object ( |
Trường | |
---|---|
solverConfig |
Không bắt buộc. Các tham số cho trình giải toán. |
shiftTemplates[] |
Bắt buộc. Tập hợp các mẫu ca làm việc chỉ định quy tắc tạo ca làm việc. |
employeeDemands[] |
Bắt buộc. Tổng nhu cầu của nhân viên mà |
Nội dung phản hồi
Phản hồi cho sự cố Tạo ca làm việc. Nếu solutionStatus
được trả về là SOLVED
, thì một tập hợp các ca chuyển hợp lệ do trình giải quyết tạo sẽ được trả về trong employeeSchedules
. Để có lịch ca làm việc hợp lệ, những tài sản sau đây có trạng thái là:
- Mỗi ca làm việc được tạo trong
employeeSchedules
đều tuân thủ các quy tắc được chỉ định trongShiftTemplate
tương ứng. - Mỗi sự kiện được chọn trong mỗi lượt chuyển đều tuân thủ các quy tắc được chỉ định trong
ShiftTemplate.Event
tương ứng. - Tổng số nhân viên được chỉ định cho nhóm ca làm việc được tạo từ cùng một ShiftTemplate không vượt quá
maximumEmployeeCount
mẫu đó. - Nhóm nhân viên được chỉ định sẽ đáp ứng nhu cầu tại mỗi khoảng thời gian nhất định.
Nếu thành công, phần nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:
Biểu diễn dưới dạng JSON |
---|
{ "solutionStatus": enum ( |
Trường | |
---|---|
solutionStatus |
Trạng thái của giải pháp được trả về. Nếu |
employeeSchedules[] |
Tập hợp các ca làm việc do trình giải quyết tạo ra cùng với số lượng nhân viên được chỉ định cho mỗi lịch biểu. |
SolverConfig
Chỉ định các tham số bổ sung để giải bài tập Tạo ca.
Biểu diễn dưới dạng JSON |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
Trường | |
---|---|
timeLimit |
Thời gian tối đa mà trình giải toán cần dành cho bài toán. Nếu bạn không đặt chính sách này, chế độ cài đặt mặc định sẽ là 1 phút. Lựa chọn giới hạn thời gian sẽ phụ thuộc vào quy mô của sự cố. Để đưa ra ví dụ, khi giải quyết một thực thể 7 ngày với 2 Giá trị này không phải là giới hạn cố định và không tính đến chi phí truyền thông. Độ trễ dự kiến để giải quyết vấn đề có thể vượt quá giá trị này một chút. Thời lượng tính bằng giây với tối đa 9 chữ số thập phân, kết thúc bằng " |
multiDaySchedule |
Nếu đúng, trình giải quyết sẽ tạo các |
shiftEventsCanChange |
Nếu đúng, các |
ShiftTemplate
Mẫu chỉ định quy tắc tạo ca làm việc. Ca làm việc là một đơn vị công việc cho biết thời gian bắt đầu, thời gian kết thúc và có thể chứa các sự kiện (ví dụ: bữa trưa, nghỉ giải lao, v.v.). Một lượt chuyển đổi sẽ được chỉ định cho một ngày cụ thể trong câu trả lời.
Biểu diễn dưới dạng JSON |
---|
{ "id": string, "earliestStartTime": { object ( |
Trường | |
---|---|
id |
Mã nhận dạng duy nhất của mẫu này. |
earliestStartTime |
Thời gian sớm nhất trong ngày mà một ca làm việc có thể bắt đầu. Giá trị này được chỉ định bằng giờ và phút; giây và nano sẽ bị bỏ qua. |
latestStartTime |
Thời điểm gần nhất trong ngày mà một ca làm việc có thể bắt đầu. Giá trị này được chỉ định bằng giờ và phút; giây và nano sẽ bị bỏ qua. Nếu giá trị này nhỏ hơn |
durationMinutes |
Cố định khoảng thời gian của một lượt chuyển do mẫu này tạo. |
startTimeIncrementMinutes |
Mức tăng thời gian (tính bằng phút) dùng để tạo tập hợp thời gian bắt đầu có thể từ |
daysOffCountPerWeek |
Số ngày nghỉ cố định mỗi tuần. Một nhân viên sẽ được nghỉ một ngày nhất định nếu họ không được chỉ định ca làm việc bắt đầu vào ngày đó. Một tuần gồm 7 ngày và bắt đầu vào Chủ Nhật. |
eventTemplates[] |
Quy tắc tạo sự kiện cho mỗi ca làm việc. Sẽ có đúng một sự kiện được đưa vào mỗi ca làm việc cho từng Sự kiện được chỉ định. |
minimumIntereventGapMinutes |
Số phút tối thiểu giữa thời điểm kết thúc một sự kiện đến thời điểm bắt đầu sự kiện tiếp theo. |
maximumEmployeeCount |
Số lượng nhân viên tối đa có thể được chỉ định cho tất cả các ca làm việc do mẫu này tạo. |
TimeOfDay
Đại diện cho thời gian trong ngày. Ngày và múi giờ không quan trọng hoặc được chỉ định ở nơi khác. API có thể chọn cho phép giây nhuận. Các loại liên quan là google.type.Date
và google.protobuf.Timestamp
.
Biểu diễn dưới dạng JSON |
---|
{ "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer } |
Trường | |
---|---|
hours |
Giờ trong ngày ở định dạng 24 giờ. Nên nằm trong khoảng từ 0 đến 23. API có thể chọn cho phép giá trị "24:00:00" cho các tình huống như thời gian đóng cửa doanh nghiệp. |
minutes |
Phút trong giờ trong ngày. Giá trị phải nằm trong khoảng từ 0 đến 59. |
seconds |
Số giây trong phút của thời gian. Thông thường phải từ 0 đến 59. API có thể cho phép giá trị 60 nếu cho phép giây nhuận. |
nanos |
Phân số giây tính bằng nano giây. Giá trị phải nằm trong khoảng từ 0 đến 999.999.999. |
EventTemplate
Mẫu chỉ định các quy tắc tạo một sự kiện đơn lẻ xảy ra trong một lượt chuyển. Một sự kiện có thể là một cuộc họp, giờ nghỉ, ăn trưa, v.v.
Biểu diễn dưới dạng JSON |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
Trường | |
---|---|
id |
Mã nhận dạng duy nhất của mẫu này. |
minimumMinutesAfterShiftStart |
Số phút tối thiểu sau khi bắt đầu ca làm việc mà sự kiện này có thể bắt đầu. |
maximumMinutesAfterShiftStart |
Số phút tối đa sau khi bắt đầu ca làm việc mà sự kiện này có thể bắt đầu. |
durationMinutes |
Đã cố định thời lượng tính bằng phút của sự kiện này. |
startTimeIncrementMinutes |
Mức tăng thời gian (tính bằng phút) dùng để tạo tập hợp thời gian bắt đầu sự kiện có thể từ |
EmployeeDemand
Xác định số lượng nhân viên cần thiết để đáp ứng nhu cầu trong khoảng thời gian DateTime nhất định.
Biểu diễn dưới dạng JSON |
---|
{ "startDateTime": { object ( |
Trường | |
---|---|
startDateTime |
Bắt đầu khoảng thời gian của nhu cầu cụ thể (bao gồm). Các giá trị này được đọc xuống từng phút; giây và tất cả các đơn vị nhỏ hơn sẽ bị bỏ qua. |
endDateTime |
Kết thúc khoảng thời gian của một nhu cầu cụ thể (không bao gồm). Các giá trị này được đọc xuống từng phút; giây và tất cả các đơn vị nhỏ hơn sẽ bị bỏ qua. |
employeeCount |
Số lượng nhân viên cần thiết để đáp ứng nhu cầu cho khoảng thời gian này. |
ShiftGenerationSolutionStatus
Trạng thái giải pháp được cung cấp trong phản hồi của một trình giải toán.
Enum | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
Trạng thái phản hồi chưa xác định. |
SHIFT_GENERATION_SOLVED |
Trình giải toán đã tìm thấy lời giải trong khoảng thời gian có hạn. |
SHIFT_GENERATION_NOT_SOLVED |
Một vấn đề đã ngăn trình giải toán tạo ra các lượt thay đổi. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
Không thể tạo ca làm việc để đáp ứng nhu cầu trong giới hạn thời gian đã cho. |
EmployeeSchedule
Danh sách ca làm việc được sắp xếp theo thứ tự tương ứng với một ShiftTemplate
được chỉ định cho một số nhân viên.
Biểu diễn dưới dạng JSON |
---|
{
"shiftTemplateId": string,
"shifts": [
{
object ( |
Trường | |
---|---|
shiftTemplateId |
Mã của mẫu được dùng để tạo tập hợp các thay đổi này. |
shifts[] |
Danh sách ca làm việc mà |
employeeCount |
Số lượng nhân viên cần được phân công vào nhóm ca làm việc này để đáp ứng nhu cầu. |
ShiftWithEvents
Nêu rõ ngày bắt đầu và ngày kết thúc cùng với danh sách các sự kiện cố định của một ca làm việc do trình giải toán tạo ra.
Biểu diễn dưới dạng JSON |
---|
{ "startDateTime": { object ( |
Trường | |
---|---|
startDateTime |
Ngày và giờ bắt đầu ca chuyển. Giá trị này được chỉ định xuống đến phút; không cho đơn vị giây và nhỏ hơn. |
endDateTime |
Ngày và giờ kết thúc ca làm việc. Giá trị này được chỉ định xuống đến phút; không cho đơn vị giây và nhỏ hơn. |
events[] |
Danh sách các sự kiện có trong lần thay đổi này, được ánh xạ chính xác đến và theo cùng thứ tự với |
Sự kiện
Chỉ định ngày bắt đầu và kết thúc DateTime của một sự kiện cụ thể trong một ca làm việc do trình giải quyết tạo ra.
Biểu diễn dưới dạng JSON |
---|
{ "eventTemplateId": string, "startDateTime": { object ( |
Trường | |
---|---|
eventTemplateId |
Mã của mẫu được dùng để tạo sự kiện này. |
startDateTime |
Ngày và giờ bắt đầu của sự kiện. Giá trị này được chỉ định xuống đến phút; không cho đơn vị giây và nhỏ hơn. |
endDateTime |
Ngày và giờ kết thúc của sự kiện. Giá trị này được chỉ định xuống đến phút; không cho đơn vị giây và nhỏ hơn. |