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!!