Tôi đang làm việc trên một ứng dụng lập kế hoạch công việc tương tác. Đưa ra một tập hợp các tài nguyên với các hồ sơ khả năng/availabilty tương ứng, một tập hợp các công việc được thực thi trên các tài nguyên này và một tập hợp các ràng buộc xác định chuỗi công việc và thời gian bắt đầu/kết thúc sớm nhất/mới nhất cho công việc mà tôi muốn cho phép người dùng di chuyển thủ công công việc xung quanh. Về cơ bản tôi muốn người dùng có thể "lấy" một nút của mạng công việc và kéo về phía trước/ngược thời gian mà không vi phạm bất kỳ ràng buộc nào.Biến đổi đồ thị bị ràng buộc trong lập lịch trình các ứng dụng
Hình ảnh hiển thị một cấu hình ví dụ đơn giản. Công việc hình tam giác ở cuối biểu thị thời gian kết thúc mới nhất cho tất cả các công việc, các đường kết nối giữa các công việc áp đặt một lệnh trên các công việc và các thanh màu xám/xanh biểu thị tính sẵn sàng và tải tài nguyên.
Bạn có thể kéo bất kỳ công việc nào để nén lịch biểu. Lưu ý rằng công việc sẽ thay đổi về độ dài do các hồ sơ năng lực khác nhau.
Tôi đã triển khai thuật toán băm quảng cáo mà kinda hoạt động. Tuy nhiên vẫn còn những trường hợp nó sẽ thất bại và vi phạm một số ràng buộc. Tuy nhiên, kể từ khi job-shop-scheduling là một lĩnh vực được nghiên cứu tốt với rất nhiều thuật toán và chẩn đoán cho việc tìm kiếm một giải pháp tối ưu (hoặc khá tốt) cho vấn đề NP-hard chung - tôi nghĩ các giải pháp nên tồn tại cho tập hợp con dễ dàng hơn. Tôi đã xem xét các chủ đề lập trình hạn chế và thậm chí cả các giải pháp dựa trên vật lý (các cơ quan cứng nhắc được kết nối thông qua các khớp tĩnh) nhưng cho đến nay không thể tìm thấy bất cứ điều gì phù hợp. Bất kỳ gợi ý/gợi ý/mẹo/từ khóa tìm kiếm cho tôi?
Tôi không hiểu vấn đề đầy đủ, xin lỗi. Tại sao độ dài công việc thay đổi? Bạn có ý gì khi bạn nói lấy và di chuyển nút? Là một công việc một nút? Cảm ơn. –
Mạng như được hiển thị ở trên có thể được sửa đổi thông qua thao tác kéo và thả tương tác. Nhấp vào một công việc (các nút trong biểu đồ có nhãn "công việc") và di chuyển nó ở nơi khác. Vì thời gian công việc phụ thuộc vào khả năng có sẵn (thanh màu xám/xanh lục), độ dài công việc sẽ thay đổi trong khi di chuyển. – BuschnicK
Tôi cũng không hiểu. Có phải bạn muốn các công việc khác di chuyển xung quanh để thỏa mãn một phong trào công việc cụ thể - giả sử bạn kéo job032 sang trái, job029 và job031 bằng cách nào đó sắp xếp lại bản thân để job031 vẫn kết thúc trước khi job032 bắt đầu? Nếu vậy, bạn sẽ cần phải cho chúng tôi biết những gì chúng tôi được phép làm cho các công việc khác - di chuyển đúng lúc, thay đổi tài nguyên, v.v ...? Tài nguyên có chia sẻ đơn giản (tức là hai công việc đơn vị hoạt động đang chạy trên cùng một tài nguyên mất 2 đơn vị thời gian để hoàn thành)? –