การสร้างแบบจำลองตารางการทำงานที่ซับซ้อน


9

ฉันมีปัญหาในโลกแห่งความจริงที่ฉันพยายามเป็นตัวแทนและเป็นอัตโนมัติ ฉันทำให้มันง่ายขึ้นและเป็นนามธรรมลงไปต่อไปนี้:

  • มีที่ทำงาน n แห่ง (P1, P2, ... , Pn)
  • แต่ละแห่ง Pn มีรหัส Kn
  • มีคนงาน m, (W1, W2, ... , Wm)
  • ในการทำงานที่ Pn คนงานจะต้องถือ Kn
  • แต่ละคีย์สามารถเก็บไว้โดยคนงานหรือปล่อยไว้ที่ Exchange, E
  • ผู้ปฏิบัติงานสามารถเดินทางไปที่ Exchange ได้ตลอดเวลาเพื่อรับกุญแจที่ไม่มีการอ้างสิทธิ์หรือส่งกุญแจเพื่อให้ผู้อื่นใช้

  • ขณะนี้มีตารางงานภายนอกที่ต้องทำให้เสร็จในลำดับที่เข้มงวด ตัวอย่างเช่น:

    • 2016-04-21 W1 ต้องทำงานที่ P6
    • 2016-04-21 W2 ต้องทำงานที่ P3
    • ต้องแลกเปลี่ยนกุญแจ **
    • 2016-04-22 W3 ต้องทำงานที่ P3
    • 2016-04-22 W2 ต้องทำงานที่ P6
  • จำนวนคนงานใด ๆ อาจต้องทำงานที่ Pn ในบางช่วงเวลาของพวกเขาแม้ว่าจะไม่เคยในวันเดียวกัน

พวกเรารู้:

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

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

สิ่งที่ฉันต้องการลดให้น้อยที่สุดคือจำนวนการเดินทางทั้งหมดไปยังอีเป้าหมายที่สองคือเพื่อให้แน่ใจว่าไม่มีคนงานทำจำนวนการเดินทางที่ไม่สมส่วน

ขอบคุณล่วงหน้า!!


2
จำนวนการเดินทางโดยเฉลี่ยต่อ E ต่อคนงาน = "จำนวนการเดินทางทั้งหมด" / m ดังนั้นหาก m คงที่เป้าหมายทั้งสองของคุณคือเป้าหมายเดียวกัน น่าสนใจยิ่งขึ้น: ฉันเดาว่าคนงานแต่ละคนสามารถพกมากกว่าหนึ่งคีย์ในเวลาเดียวกันได้หรือไม่
Doc Brown

ใช่คนงานสามารถบรรทุกกุญแจได้จำนวนเท่าใดก็ได้ เกี่ยวกับ "ปานกลาง" ฉันคิดว่าตัวเองแสดงออกไม่ดี ฉันคิดเกี่ยวกับความเป็นธรรมมากขึ้นว่าคนงานไม่ควรจะต้องเดินทางให้ครบสัดส่วนดังนั้นจึงมีความแปรปรวนต่ำ (คำถามที่แก้ไขเพื่อให้ตรงกับ)
Gareth Lloyd

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

มีค่าใช้จ่าย (เงินหรือเวลา) ในการแลกเปลี่ยน?
Dan Pichelman

ใช่การเดินทางไปที่การแลกเปลี่ยนมากขึ้นเป็นผลที่เลวร้ายกว่า
Gareth Lloyd

คำตอบ:


1

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

โดยที่ในใจฉันจะสมมติว่าเราสามารถทำสิ่งต่าง ๆ ของสิ่งเหล่านี้และรักษาคำตอบที่ค่อนข้างสูง

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

จากระดับนี้ไปอีกระดับฉันจะดูการปรับตัวของการเรียงโทโพโลยี ( https://en.wikipedia.org/wiki/Topological_sorting ) ทำโมเดลพื้นที่ปัญหาเป็นกราฟขนาดใหญ่ (ฐานข้อมูลกราฟที่ทันสมัยอาจเป็นสื่อที่ดีสำหรับการวิเคราะห์บางส่วนเช่นนี้) จากนั้นใช้ทอพอโลยีประเภทต่าง ๆ เพื่อแก้ปัญหาด้านต่าง ๆ ของพื้นที่ปัญหา

ในการสัมผัสกันเล็กน้อยนี้ดูเหมือนเป็นโครงการที่สนุกจริงๆ วันนี้ฉันอิจฉาคุณครับ


ลองดูกราฟใน github ของฉันgithub.com/MatheusArleson/Graphs
linuxunil

อัลกอริทึมการระบายสีช่วยในสถานการณ์นี้หรือไม่? en.m.wikipedia.org/wiki/Graph_coloring
linuxunil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.