Giải quyết vấn đề tạo ca làm việc từ SolveShiftGenerationRequest
cho trước bằng cách tạo 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. |
shiftTemplates[] |
Bắt buộc. Bộ mẫu ca làm việc chỉ định các 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à những ca làm việc do |
Nội dung phản hồi
Câu trả lời cho vấn đề Tạo ca làm việc. Nếu solutionStatus
trả về là SOLVED
, thì một tập hợp các ca hợp lệ do trình giải quyết tạo ra sẽ được trả về trong employeeSchedules
. Để có lịch chuyển đổi hợp lệ, các thuộc tính sau sẽ được giữ lại:
- Mỗi lượt chuyển đượ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 ca đề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
trong 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[] |
Nhóm 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 làm việc. |
demandCoverageViolations[] |
Các lỗi vi phạm về mức độ phù hợp của nhu cầu dựa trên |
SolverConfig
Chỉ định các tham số bổ sung để giải bài tập Tạo ca làm việc.
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à người giải toán nên dành cho bài toán đó. Nếu bạn không đặt chính sách này, thì thời gian mặc định sẽ là 1 phút. Việc lựa chọn giới hạn thời gian phải phụ thuộc vào quy mô của vấn đề. Ví dụ: khi giải quyế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í liên lạc. Độ trễ dự kiến để giải quyết vấn đề có thể hơi vượt quá giá trị này. Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng " |
multiDaySchedule |
Nếu đúng, trình giải 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 chỉ định thời gian bắt đầu, thời gian kết thúc và có thể chứa các sự kiện (chẳng hạn như bữa trưa, giờ nghỉ giải lao, v.v.). Một ca làm việc sẽ được gán 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 điểm sớm nhất trong ngày mà quá trình chuyển có thể bắt đầu. Giá trị này được chỉ định bằng giờ và phút; giây và nano bị bỏ qua. |
latestStartTime |
Thời điểm muộn nhất trong ngày mà quá trình 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 bị bỏ qua. Nếu giá trị này nhỏ hơn |
durationMinutes |
Đã sửa thời lượng thay đổi do mẫu này tạo. |
startTimeIncrementMinutes |
Độ 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ể có từ |
daysOffCountPerWeek |
Số ngày nghỉ mỗi tuần cố định. Nhân viên được nghỉ một ngày nếu không được phân vào ca làm việc bắt đầu vào ngày hôm đó. Một tuần có 7 ngày và bắt đầu vào Chủ Nhật. |
eventTemplates[] |
Quy tắc tạo sự kiện cho mỗi lượt chuyển. Chỉ một sự kiện sẽ được đưa vào mỗi ca thực hiện đối với mỗi 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 và 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 có 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 ở từ 0 đến 23. Một 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 |
Số phút trong ngày. Phải từ 0 đến 59. |
seconds |
Số giây của thời gian. Giá trị thường phải từ 0 đến 59. Một API có thể cho phép giá trị 60 nếu cho phép bật-giây. |
nanos |
Các phân số của 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 ca làm việc. Sự kiện có thể đại diện cho một cuộc họp, giờ nghỉ giải lao, bữa 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 |
Thời lượng cố định tính bằng phút của sự kiện này. |
startTimeIncrementMinutes |
Độ 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ể xảy ra từ |
EmployeeDemand
Chỉ định số lượng nhân viên cần thiết để đáp ứng nhu cầu trong khoảng thời gian DateTime đã cho.
Biểu diễn dưới dạng JSON |
---|
{ "startDateTime": { object ( |
Trường | |
---|---|
startDateTime |
Bắt đầu khoảng thời gian cho nhu cầu đã cho (bao gồm cả hai giá trị này). 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 cho nhu cầu đã cho (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 đưa ra trong câu trả lời của trình giải quyết.
Enum | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
Trạng thái chưa xác định của phản hồi. |
SHIFT_GENERATION_SOLVED |
Trình giải toán đã tìm ra lời giải trong giới hạn thời gian đưa ra. |
SHIFT_GENERATION_NOT_SOLVED |
Một vấn đề đã khiến trình giải quyết không tạo được ca làm việc. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
Không thể tạo ca làm việc để đáp ứng nhu cầu này trong khoảng thời gian đã cho. |
EmployeeSchedule
Danh sách các ca làm việc 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 nhóm ca làm việc này. |
shifts[] |
Danh sách ca làm việc mà |
employeeCount |
Số lượng nhân viên cần được chỉ định cho nhóm ca làm việc này để đáp ứng nhu cầu. |
ShiftWithEvents
Cho biết 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 ca làm việc do người giải quyết 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 làm việc. Giá trị này được chỉ định theo phút; giây và đơn vị nhỏ hơn không được cung cấp. |
endDateTime |
Ngày và giờ kết thúc ca làm việc. Giá trị này được chỉ định theo phút; giây và đơn vị nhỏ hơn không được cung cấp. |
events[] |
Danh sách các sự kiện có trong lượt chuyển này, được ánh xạ chính xác đến và theo cùng thứ tự với |
Sự kiện
Chỉ định thời gian bắt đầu và kết thúc của một sự kiện cụ thể trong 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 sự kiện. Giá trị này được chỉ định theo phút; giây và đơn vị nhỏ hơn không được cung cấp. |
endDateTime |
Ngày và giờ kết thúc sự kiện. Giá trị này được chỉ định theo phút; giây và đơn vị nhỏ hơn không được cung cấp. |
DemandCoverageViolation
Chỉ định lỗi vi phạm về mức độ phù hợp của nhu cầu trong khoảng thời gian nhất định. Nhu cầu của nhân viên là như nhau trong toàn bộ khoảng thời gian được chỉ định.
Biểu diễn dưới dạng JSON |
---|
{ "startDateTime": { object ( |
Trường | |
---|---|
startDateTime |
Ngày và giờ bắt đầu của khoảng thời gian theo nhu cầu (bao gồm cả ngày này). Giá trị này được chỉ định theo phút. |
endDateTime |
Ngày và giờ kết thúc của khoảng thời gian theo nhu cầu (không bao gồm). Giá trị này được chỉ định theo phút. |
coverageViolation |
Vi phạm mức độ phù hợp trong khoảng thời gian chỉ định. Giá trị dương cho biết nhu cầu bị vượt quá và giá trị âm cho biết nhu cầu không được khai thác. |