Package google.research.optimization.v1

ดัชนี

การเพิ่มประสิทธิภาพ

One Platform API นำเสนอชุดเครื่องมือแก้ปัญหาการเพิ่มประสิทธิภาพสำหรับปัญหาการวิจัยการดำเนินงานระดับสูง แถบสีเริ่มต้น MOE

DesignShippingNetwork

rpc DesignShippingNetwork(DesignShippingNetworkRequest) returns (DesignShippingNetworkResponse)

แก้ปัญหาการออกแบบเครือข่ายการจัดส่งและกำหนดเวลา (LSNDSP) จาก DesignShippingNetworkRequest ที่ระบุ

LSNDSP คือปัญหาการเพิ่มประสิทธิภาพที่ซับซ้อนที่ต้องการค้นหาการออกแบบและการวางกำหนดเวลาที่เหมาะสมของเครือข่ายการจัดส่งเรือเดินสมุทร เป้าหมายคือการลดค่าใช้จ่ายรวมในการดำเนินงานเครือข่าย พร้อมกับตอบสนองความต้องการสินค้าระหว่างพอร์ตให้ได้มากที่สุด

LSNDSP สามารถแบ่งออกเป็น 2 ปัญหาหลัก ได้แก่ การออกแบบเครือข่ายและการตั้งเวลา ปัญหาย่อยของการออกแบบเครือข่ายจะกำหนดชุดพอร์ตที่เครือข่ายจะให้บริการ จำนวนเรือที่จะติดตั้งใช้งานในแต่ละเส้นทาง และเส้นทางที่เรือจะใช้งาน ปัญหาย่อยด้านการตั้งเวลาจะกำหนดตารางเวลาเดินเรือ โดยพิจารณาจากเวลาที่ใช้ในการเดินเรือระหว่างท่าเรือ เวลาที่ใช้ในการโหลดและนำสินค้าขึ้นบรรทุกสินค้า และความต้องการในการขนส่งสินค้าระหว่างท่าเรือ

กล่าวง่ายๆ ก็คือ LSNDSP คือปัญหาเรื่องการตัดสินใจว่าจะให้บริการท่าเรือใด จำนวนเรือที่จะใช้ และวิธีกำหนดเวลาจัดส่ง เพื่อให้สามารถลดค่าใช้จ่ายในการดำเนินงานเครือข่ายลงไปพร้อมกับเพิ่มรายได้สูงสุดสำหรับการตอบสนองความต้องการสินค้า องค์ประกอบย่อยที่ท้าทายของ LSNDSP คือเส้นทางการส่งสินค้า ซึ่งกำหนดความต้องการที่จะตอบสนอง และเส้นทางที่จะมอบหมายให้กับการขนส่งสินค้าเพื่อเพิ่มรายได้สูงสุด

SolveMathOptModel

rpc SolveMathOptModel(SolveMathOptModelRequest) returns (SolveMathOptModelResponse)

แก้โมเดลอินพุตและแสดงผลลัพธ์พร้อมกัน ใช้ตัวเลือกนี้เมื่อคุณไม่ต้องการการเรียกกลับ ส่วนเพิ่ม และไม่จำเป็นต้องติดตามความคืบหน้าของการแก้ปัญหา

SolveShiftGeneration

rpc SolveShiftGeneration(SolveShiftGenerationRequest) returns (SolveShiftGenerationResponse)

แก้ปัญหาการสร้างกะการทำงานจาก SolveShiftGenerationRequest ที่ระบุด้วยการสร้างกะการทำงานจากเทมเพลตกะการทำงานที่กำหนดเพื่อให้ครอบคลุมความต้องการของพนักงาน

SolveShiftScheduling

rpc SolveShiftScheduling(SolveShiftSchedulingRequest) returns (SolveShiftSchedulingResponse)

แก้ไขปัญหาการจัดตารางเวลาแบบกะทันหันจาก SolveShiftSchedulingRequest ที่ระบุด้วยการกำหนดพนักงานเป็นกะเพื่อให้พนักงานกำหนดเวลาที่ต้องการทำงานได้มากที่สุดและลดการละเมิดข้อจำกัดในการจัดตารางเวลาให้เหลือน้อยที่สุด

DesignShippingNetworkRequest

คำขอนี้มีอินสแตนซ์ของ LSNDSP และต้องมีชุดพอร์ต ชุดผู้สมัครขา ชุดประเภทเรือ และชุดสินค้าโภคภัณฑ์ที่จะบรรลุผล

ช่อง
request_id

string

ปัญหาหรือ ID คำขอ

solver_parameters

SolverParameters

พารามิเตอร์สําหรับเครื่องมือแก้โจทย์

ports[]

Port

รายการพอร์ตที่เป็นไปได้ที่จะเรียกใช้ในบริการเรือ คำขอต้องมีรหัสพอร์ตที่อยู่ในรายการนี้เท่านั้น

leg_candidates[]

LegCandidate

รายชื่อผู้สมัครรับเลือกตั้งที่อาจได้เพิ่มลงในบริการเรือ คำขอต้องมีเฉพาะรหัสผู้สมัครขาที่อยู่ในรายการนี้

vessel_classes[]

VesselClass

รายชื่อประเภทเรือที่ให้บริการเดินเรือ โปรดทราบว่าเรือทั้งหมดจากประเภทเดียวกันนั้นใช้สลับสับเปลี่ยนกันได้โดยสิ้นเชิง คำขอต้องมีเฉพาะรหัสคลาสเรือที่อยู่ในรายการนี้

commodity_demands[]

CommodityDemand

รายการความต้องการสินค้าโภคภัณฑ์ (เช่น ตู้คอนเทนเนอร์) ที่บริการเรือจะดำเนินการให้สำเร็จ

vessel_services[]

VesselService

คุณระบุเครือข่ายบริการเรือที่ใช้ได้ (โดยทั่วไปจะเป็นสถานะปัจจุบันของเครือข่าย) เพื่อใช้เป็นจุดเริ่มต้นในการเพิ่มประสิทธิภาพได้

DesignShippingNetworkResponse

การตอบกลับจะเก็บโซลูชันของอินสแตนซ์ LSNDSP ที่ส่งในคำขอ เครือข่ายนี้ประกอบด้วยเครือข่ายบริการเรือและบริการเส้นทางความต้องการสินค้าโภคภัณฑ์ที่ถูกต้อง ความต้องการสินค้าโภคภัณฑ์ทั้งหมดที่เดินทางผ่านแต่ละขาจะต้องไม่เกินความจุของชั้นของเรือที่ให้บริการขนส่งลำนี้ โปรดทราบว่าการไม่มีบริการเรือที่ไม่มีความต้องการทางเรือเป็นวิธีแก้ปัญหาด้านการออกแบบเครือข่ายการจัดส่งและการจัดตารางเวลาที่เป็นไปได้เสมอ

ช่อง
request_id

string

รหัสของคำขอที่เชื่อมโยงกับคำตอบนี้

vessel_services[]

VesselService

เครือข่ายการให้บริการเรือ สำหรับประเภทเรือแต่ละชั้น จำนวนเรือทั้งหมดที่ใช้ต้องไม่เกินจำนวนเรือที่พร้อมให้บริการสำหรับชั้นนั้นๆ

commodity_demand_paths[]

CommodityDemandPath

รายการเส้นทางของความต้องการสินค้าโภคภัณฑ์ทั้งหมดที่จัดส่งอุปสงค์โภคภัณฑ์เชิงบวก โปรดทราบว่าอาจไม่มีรหัสดีมานด์สินค้าโภคภัณฑ์บางรหัสหากไม่มีการจัดส่งดีมานด์ หรือจะตอบสนองความต้องการสินค้าโภคภัณฑ์เพียงบางส่วนก็ได้ สำหรับความต้องการสินค้าโภคภัณฑ์แต่ละรายการ จำนวนที่ดำเนินการทั้งหมดต้องไม่เกินความต้องการทั้งหมด สุดท้าย commodity_demand_paths จะขึ้นอยู่ vessel_services (ดูคำจำกัดความของ CommodityDemandPath)

SolveMathOptModelRequest

ขอการแก้โจทย์จากทางไกลแบบเอกภาคใน MathOpt

ช่อง
solver_type

SolverTypeProto

ไม่บังคับ ประเภทเครื่องมือแก้โจทย์เพื่อแก้โจทย์เชิงตัวเลข โปรดทราบว่าหากเครื่องมือแก้ไขไม่รองรับฟีเจอร์หนึ่งๆ ในโมเดล ขั้นตอนการเพิ่มประสิทธิภาพจะไม่สำเร็จ

model

ModelProto

ต้องระบุ การนำเสนอทางคณิตศาสตร์ของโจทย์การเพิ่มประสิทธิภาพที่จะแก้

parameters

SolveParametersProto

ไม่บังคับ พารามิเตอร์สำหรับควบคุมการแก้โจทย์เพียงครั้งเดียว มีการจัดการพารามิเตอร์enable_output มาโดยเฉพาะ สําหรับเครื่องมือแก้โจทย์ที่รองรับ Callback ของข้อความ การตั้งค่าเป็นจริงจะทำให้เซิร์ฟเวอร์ลงทะเบียน Callback ของข้อความ ข้อความที่ได้จะถูกส่งคืนใน SolveMathOptModelResponse.messages สำหรับเครื่องมือแก้โจทย์อื่นๆ การตั้งค่า enabled_output เป็น true จะทำให้เกิดข้อผิดพลาด

model_parameters

ModelSolveParametersProto

ไม่บังคับ พารามิเตอร์ที่จะควบคุมการแก้โจทย์เดี่ยวๆ ที่มีเฉพาะในโมเดลอินพุต (ดู SolveParametersProto สำหรับพารามิเตอร์อิสระของโมเดล)

SolveMathOptModelResponse

การตอบสนองสําหรับการแก้ปัญหาจากระยะไกลแบบเอกภาคใน MathOpt

ช่อง
result

SolveResultProto

คำอธิบายเอาต์พุตของการแก้โจทย์โมเดลในคำขอ

messages[]

string

ถ้าใช้ SolveParametersProto.enable_output พารามิเตอร์นี้จะมีข้อความบันทึกสำหรับโปรแกรมแก้โจทย์ที่รองรับ Callback ของข้อความ

SolveShiftGenerationRequest

คำขอสำหรับการแก้ปัญหาการสร้างกะ กฎสำหรับการสร้างการเปลี่ยนแปลงจะมีระบุไว้ใน ShiftTemplate แต่ละรายการ การเปลี่ยนแปลงหลายรายการในคำตอบสามารถสร้างจาก ShiftTemplate เดียวได้ กะงานที่สร้างและเลือกโดยเครื่องมือแก้โจทย์ต้องเป็นไปตามกฎที่ระบุไว้ใน ShiftTemplate และครอบคลุมความต้องการของพนักงานที่ระบุ

ช่อง
solver_config

SolverConfig

ไม่บังคับ พารามิเตอร์สําหรับเครื่องมือแก้โจทย์

shift_templates[]

ShiftTemplate

ต้องระบุ ชุดของเทมเพลตกะที่ระบุกฎสำหรับการสร้างกะ

employee_demands[]

EmployeeDemand

ต้องระบุ ความต้องการของพนักงานทั้งหมดสำหรับการเปลี่ยนแปลงที่ shift_templates ต้องครอบคลุม

SolveShiftGenerationResponse

การตอบสนองสำหรับปัญหาการสร้างกะ หาก solution_status แสดงผลเป็น SOLVED ชุดของการเปลี่ยนแปลงที่ถูกต้องซึ่งเครื่องมือแก้โจทย์จะถูกแสดงผลใน employee_schedules พร็อพเพอร์ตี้ต่อไปนี้จะมีการคงไว้ชั่วคราวเพื่อให้กำหนดเวลากะที่ถูกต้อง

  1. การปรับแต่ละครั้งที่สร้างใน employee_schedules จะเป็นไปตามกฎที่ระบุไว้ใน ShiftTemplate ที่เกี่ยวข้อง
  2. แต่ละเหตุการณ์ที่เลือกไว้ในแต่ละกะจะเป็นไปตามกฎที่ระบุไว้ในShiftTemplate.Event ที่เกี่ยวข้อง
  3. จำนวนพนักงานทั้งหมดที่มอบหมายให้กับชุดกะที่สร้างจาก ShiftTemplate เดียวกันไม่เกิน maximum_employee_count ของเทมเพลตนั้น
  4. กลุ่มพนักงานที่ได้รับมอบหมายจะครอบคลุมความต้องการในทุกช่วงเวลา

ช่อง
solution_status

ShiftGenerationSolutionStatus

สถานะของโซลูชันที่ส่งคืน หาก solution_status ไม่ใช่ SOLVED ค่า employee_schedules จะว่างเปล่า

employee_schedules[]

EmployeeSchedule

ชุดกะการทำงานที่เกิดขึ้นจากเครื่องมือแก้โจทย์ควบคู่กับจำนวนพนักงานที่มอบหมายให้กับแต่ละกำหนดการ

demand_coverage_violations[]

DemandCoverageViolation

การละเมิดความครอบคลุมของดีมานด์ซึ่งอิงตามemployee_countsที่กำหนดในemployee_schedulesที่ระบุ employee_demands ที่ระบุไว้ในคำขอจะเป็นผลรวม หากช่วงเวลา employee_demand 2 ช่วงทับซ้อนกัน ระบบจะรวมความต้องการในส่วนที่ทับซ้อนกันของช่วงเวลา

SolveShiftSchedulingRequest

คำขอ API การกำหนดเวลาทำงาน อย่างน้อยที่สุด คำขอจะระบุชุดพนักงาน ชุดกะ ชุดบทบาทที่เป็นไปได้ที่พนักงานสามารถทำได้ และชุดข้อกำหนดความคุ้มครอง ข้อกำหนดความครอบคลุมจะระบุจำนวนพนักงานที่จำเป็นต้องปฏิบัติในแต่ละบทบาทในช่วงระยะเวลาหนึ่ง พนักงานที่ได้รับเลือกในกะเดียวกันจะได้รับมอบหมายเพียง 1 บทบาท (เพียงบทบาทเดียว) สำหรับกะนั้น และพนักงานไม่สามารถมอบหมายให้มี 2 กะที่ทับซ้อนกันได้ โปรดดูSolveShiftSchedulingResponseด้านล่างเพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับสิทธิ์ที่ได้รับมอบหมายเป็นกะ

รวมทั้งยังระบุข้อจำกัดอื่นๆ ด้านเวลาสำหรับพนักงานแต่ละคนเพื่อจำกัดปัญหาเพิ่มเติมได้ ข้อจำกัดทางกำหนดเวลาทั้งหมดและข้อกำหนดการครอบคลุมจะได้รับการจัดระดับความสำคัญ (ต้องจัด สูง ปานกลาง ต่ำ) เครื่องมือแก้โจทย์ต้องเป็นไปตามข้อจำกัดทั้งหมดที่มีระดับความสำคัญเป็น PRIORITY_MANDATORY เครื่องมือแก้โจทย์อาจละเมิดข้อจำกัดที่มีลำดับความสำคัญอื่นๆ ได้ แต่การละเมิดเหล่านี้จะลดลงตามลำดับความสำคัญ ดูค่าแจกแจง Priority สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีจัดการระดับความสำคัญสำหรับแต่ละข้อจำกัด

เครื่องมือแก้โจทย์จะพยายามเพิ่มค่า ShiftPreference.preference ให้ได้สูงสุดสำหรับพนักงานแต่ละคนตามข้อจำกัดที่ระบุ เครื่องมือแก้โจทย์จะไม่ละเมิดข้อจำกัดเพื่อให้ได้ผลลัพธ์ที่ต้องการมากขึ้น แต่จะละเมิดข้อจำกัดเฉพาะเมื่อการกำหนดการจัดตารางเวลาทำไม่ได้ภายใต้ข้อจำกัดที่ระบุ

หมายเหตุเกี่ยวกับเวลา: เวลาทั้งหมดที่มีปัญหาจะระบุโดยใช้ข้อความ DateTime ข้อความนี้มีช่องเขตเวลา ระบบจะถือว่าเขตเวลาเป็น UTC เว้นแต่ผู้ใช้จะระบุไว้เป็นอย่างอื่น ควรระบุข้อความ DateTime เป็นนาทีเท่านั้น และจะไม่สนใจวินาทีและนาโนทั้งหมด

ช่อง
request_id

string

ปัญหาหรือ ID คำขอ

solve_parameters

SolveParameters

พารามิเตอร์สำหรับควบคุมการแก้โจทย์ปัญหาเดียว

employees[]

Employee

พนักงานทุกคนว่างจะต้องกำหนดเวลา

shifts[]

Shift

กะทั้งหมดเพื่อสร้างกำหนดเวลา

coverage_requirements[]

CoverageRequirement

ข้อกําหนดด้านความครอบคลุมสําหรับขอบเขตการวางแผนทั้งหมด ซึ่งระบุจำนวนพนักงานที่ต้องดำเนินการแต่ละบทบาทหรือมีทักษะในระหว่างกรอบเวลาหรือรายการรหัสกะ ต้องระบุข้อกำหนดการครอบคลุมทั้งหมดด้วยกรอบเวลาหรือรายการรหัสกะ (ไม่ใช่ทั้ง 2 รหัส) กรอบเวลา (หากให้ไว้) สำหรับข้อกำหนดความครอบคลุมต้องไม่ทับซ้อนกันสำหรับแต่ละสถานที่ตั้งที่ระบุ ระดับความสำคัญเริ่มต้นสำหรับแต่ละข้อจำกัดเหล่านี้คือ PRIORITY_MANDATORY สำหรับข้อกำหนดด้านบทบาท และ PRIORITY_LOW สำหรับข้อกำหนดด้านทักษะ ดูรายละเอียดเพิ่มเติมได้ใน Priority enum

role_ids[]

string

รายการบทบาทที่เป็นไปได้ทั้งหมดของพนักงาน พนักงานแต่ละคนต้องมีอย่างน้อย 1 บทบาทที่สามารถมอบหมายให้กะได้ บทบาทหมายถึงงานที่มอบหมายระหว่างกะ (เช่น พยาบาลวิชาชีพ เชฟ บริกร ฯลฯ) เมื่อพนักงานได้รับมอบหมายเป็นกะ พนักงานเหล่านั้นจะได้รับมอบหมายให้มีบทบาทใดบทบาทหนึ่งโดยเฉพาะ

skill_ids[]

string

รายการทักษะที่เป็นไปได้ทั้งหมดของพนักงาน ทักษะหมายถึงคุณสมบัติเพิ่มเติมที่พนักงานอาจมีซึ่งไม่เกี่ยวข้องกับงานที่ได้รับมอบหมายที่เฉพาะเจาะจง (เช่น การรับรอง ภาษาที่พูด ฯลฯ) รายการนี้อาจว่างเปล่า เมื่อพนักงานได้รับมอบหมายให้ทำงาน พนักงานจะต้องปฏิบัติตามทักษะทั้งหมดที่จำเป็นสำหรับกะงานนั้น

location_ids[]

string

รายการสถานที่ที่เป็นไปได้ทั้งหมดสำหรับชุดกะงานในกำหนดการ รายการนี้อาจว่างเปล่า การระบุสถานที่ที่ต่างกันอาจมีประโยชน์ในกรณีอย่างเช่น ผู้จัดการพยาบาลต้องการกำหนดเวลานัดหมายพยาบาลหลายคนในแผนกต่างๆ ของโรงพยาบาล หรืออีกตัวอย่างหนึ่งคือผู้จัดการโรงแรมต้องการกำหนดเวลาสำหรับพนักงานของโรงแรมหลายแห่ง

budget_requirements[]

BudgetRequirement

ข้อกำหนดเกี่ยวกับงบประมาณสำหรับปัญหาการกำหนดเวลา ระดับความสำคัญเริ่มต้นสำหรับแต่ละข้อกำหนดเหล่านี้คือ PRIORITY_LOW ดูรายละเอียดเพิ่มเติมได้ใน Priority enum

assignments_hint[]

ShiftAssignment

เปลี่ยนงานที่จะใช้เป็นวิธีแก้ปัญหาชั่วคราว (หรือที่เรียกอีกอย่างว่า "คำแนะนำโซลูชัน") ให้กับโจทย์กำหนดเวลา ระบบจะไม่สนใจคําแนะนําเกี่ยวกับงาน หากงานขัดแย้งกับกะงานที่มอบหมายไม่ได้หรือคําขอการกำหนดเวลา

SolveShiftSchedulingResponse

การตอบกลับสำหรับ API การกำหนดเวลาทำงาน สำหรับคำตอบแต่ละรายการ shift_assignments จะว่างเปล่าหาก solution_status ที่แสดงผลเป็น NOT_SOLVED_DEADLINE_EXCEEDED หรือ INFEASIBLE หาก solution_status แสดงผลเป็น OPTIMAL หรือ FEASIBLE งาน shift ที่ถูกต้องจะส่งกลับมาใน shift_assignments สำหรับการกำหนดกะที่ถูกต้อง พร็อพเพอร์ตี้ต่อไปนี้จะมีการเก็บรักษา

  1. รหัสพนักงานแต่ละรหัสจะอยู่ในกลุ่มพนักงานที่ระบุไว้ในคำขอ
  2. รหัสบทบาทแต่ละรายการที่มอบหมายให้กับพนักงานจะอยู่ในชุดรหัสบทบาทของพนักงานนั้นๆ
  3. รหัส Shift แต่ละรายการจะอยู่ในชุดกะที่ระบุไว้ในคําขอ
  4. รหัสกะการทำงานแต่ละรายการไม่ใช่รหัสกะการทำงานที่พนักงานแต่ละคนมอบหมายไม่ได้
  5. พนักงานจะไม่ถูกกำหนดให้ทำงาน 2 กะที่ทับซ้อนกัน
  6. สำหรับกำหนดการที่ระบุ ไม่ละเมิดข้อจำกัดหรือคำขอที่มีลำดับความสำคัญ PRIORITY_MANDATORY

ช่อง
request_id

string

รหัสของคำขอที่เชื่อมโยงกับคำตอบนี้

solution_status

SolutionStatus

สถานะของโซลูชันที่ส่งคืน หากโซลูชันนั้น "เป็นไปได้ยาก" หรือ "เหมาะสมที่สุด" ฟิลด์อื่นๆ ในโปรโตนี้อาจว่างเปล่า หากสถานะเป็น NOT_SOLVED_DEADLINE_EXCEEDED แสดงว่าหมดเวลาแล้วโดยที่ไม่พบวิธีแก้ปัญหาที่เป็นไปได้หรือพิจารณาว่ามีโซลูชันที่เป็นไปได้หรือไม่ คำขออาจไม่สามารถทำได้หากไม่สามารถทำตามข้อจำกัดของระดับความสำคัญ "MANDATORY" ได้ทั้งหมด

shift_assignments[]

ShiftAssignment

รายการงานทั้งหมด ShiftAssignment แต่ละรายการจะระบุพนักงาน กะงาน และบทบาทที่ได้รับมอบหมายให้ปฏิบัติสำหรับกะนั้น

status_message

string

หาก solution_status ยังไม่เหมาะสม ช่องนี้อาจมีข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมแก้โจทย์