Mô hình hóa một lịch trình làm việc phức tạp


9

Tôi đã có một vấn đề trong thế giới thực mà tôi đang cố gắng đại diện và tự động hóa. Tôi đã đơn giản hóa và trừu tượng hóa nó xuống như sau:

  • Có n nơi làm việc (P1, P2, ..., Pn).
  • Mỗi nơi, Pn có một chìa khóa, Kn.
  • Có m Công nhân, (W1, W2, ..., Wm).
  • Để làm việc tại Pn, một công nhân phải giữ Kn.
  • Mỗi khóa có thể được giữ bởi một công nhân hoặc để lại tại Sàn giao dịch, E.
  • Một công nhân có thể thực hiện một chuyến đi đến Sàn giao dịch bất cứ lúc nào để lấy một số khóa không có yêu cầu hoặc bỏ một số khóa để người khác sử dụng.

  • Bây giờ, có một lịch trình làm việc ngoại sinh phải được hoàn thành theo một trật tự nghiêm ngặt. Ví dụ:

    • 2016-04-21 W1 phải hoạt động tại P6
    • 2016-04-21 W2 phải hoạt động tại P3
    • ** trao đổi khóa cần thiết **
    • 2016-04-22 W3 phải hoạt động tại P3
    • 2016-04-22 W2 phải hoạt động tại P6
  • Bất kỳ số lượng công nhân nào cũng có thể phải làm việc tại Pn tại một số thời điểm trong lịch trình của họ, mặc dù không bao giờ trong cùng một ngày

Chúng tôi biết:

  • Vị trí bắt đầu của tất cả các phím, với công nhân hoặc tại E
  • Các đơn đặt hàng công việc trong tương lai mà mỗi công nhân sẽ phải thực hiện

Vì vậy, tôi đang vật lộn để mô hình hóa toàn bộ tình huống này. Bạn có thể đề xuất các cấu trúc dữ liệu và thuật toán mà tôi nên xem xét để nắm bắt nó và bắt đầu tối ưu hóa các chuyến đi để trao đổi cho mỗi công nhân không?

Điều tôi muốn giảm thiểu là tổng số chuyến đi đến E. Mục tiêu thứ yếu là đảm bảo rằng không có nhân viên nào thực hiện số chuyến đi không cân xứng.

Cảm ơn trước!!


2
Số chuyến đi trung bình đến E trên mỗi công nhân = "tổng số chuyến đi" / m. Vì vậy, nếu m là hằng số, hai mục tiêu của bạn là cùng một mục tiêu. Thú vị hơn: Tôi đoán mỗi công nhân có thể mang nhiều hơn một chìa khóa cùng một lúc?
Doc Brown

Có, công nhân có thể mang theo bất kỳ số lượng chìa khóa. Về "trung bình" tôi nghĩ rằng tôi thể hiện bản thân kém. Tôi đã suy nghĩ nhiều hơn về sự công bằng, rằng không có công nhân nào phải hoàn thành một số lượng chuyến đi không cân xứng, do đó, phương sai thấp. (câu hỏi được chỉnh sửa cho phù hợp)
Gareth Lloyd

Vì công nhân rõ ràng là đáng tin cậy với chìa khóa và có thể giữ chìa khóa suốt đêm và miễn là cần thiết - miễn là không cần trao đổi - tại sao không tạo một bộ chìa khóa cho mỗi công nhân mà họ giữ vĩnh viễn? Hoặc, tạo một bộ chìa khóa cho mỗi công nhân cho tất cả những nơi họ đến trong một khoảng thời gian nhất định, giả sử, một tuần. Các khóa được nhân đôi khi cần thiết để tạo một tuần cho mỗi công nhân. Tất cả công nhân trao đổi chìa khóa mỗi tuần một lần.
radarbob

Có một chi phí (tiền hoặc thời gian) để đi đến trao đổi?
Dan Pichelman

Vâng, nhiều chuyến đi để trao đổi là một kết quả tồi tệ hơn.
Gareth Lloyd

Câu trả lời:


1

Câu hỏi hơi mơ hồ về một điểm chính: chúng ta đang cố gắng giải quyết những yếu tố nào. Có phải chúng ta đang xem xét tối ưu hóa thứ tự các tài nguyên được ủy quyền? Giảm thiểu các chuyến đi để trao đổi? Tối đa hóa thông lượng trật tự công việc?

Với ý nghĩ đó, tôi sẽ giả định rằng chúng ta có thể thực hiện bất kỳ hỗn hợp nào của những điều này và giữ câu trả lời ở mức khá cao.

Điều đầu tiên tôi nghĩ đến là các vấn đề liên quan đến nhau mà nỗ lực giải quyết này chủ yếu tập trung vào quản lý phụ thuộc. Công nhân, chìa khóa và địa điểm có thể được coi là phụ thuộc phải được giải quyết để hoàn thành công việc.

Đưa điều này lên một tầm cao mới, tôi sẽ xem xét sự thích nghi của việc sắp xếp cấu trúc liên kết ( https://en.wikipedia.org/wiki/Topological_sorting ). Mô hình không gian vấn đề dưới dạng biểu đồ lớn (cơ sở dữ liệu đồ thị hiện đại cũng có thể là phương tiện tốt cho một số phân tích này) và sau đó sử dụng các loại cấu trúc liên kết khác nhau để giải quyết cho các khía cạnh khác nhau của không gian vấn đề.

Trên một tiếp tuyến nhẹ, điều này nghe có vẻ như một dự án thực sự thú vị. Hôm nay, tôi ghen tị với ngài.


Hãy xem biểu đồ trong github của tôi github.com/MeditusArleson/Graphs
linuxunil

Liệu thuật toán tô màu có giúp ích trong tình huống này không? en.m.wikipedia.org/wiki/Graph_coloring
linuxunil
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.