Thuật toán nhanh cho bài toán khớp bipartite có trọng số


8

Tôi có một tập hợp tác nhân và một tập hợp nhiệm vụ và tôi cần chỉ định mỗi tác nhân cho chính xác một nhiệm vụ sao cho chi phí được giảm thiểu. Một số tác nhân không tương thích với một số nhiệm vụ.nn

Tôi có một triển khai Thuật toán Hungary, mất khoảng một phút để giải quyết ma trận của tôi . Đối với các bài tập bị cấm, tôi đặt chi phí thành . ( Luôn tồn tại một giải pháp khả thi trong vấn đề của tôi).640×640

Tôi cũng đã thiết lập nó như một chương trình nhị phân trong CPLEX, mất khoảng 9 giây để giải quyết vấn đề tương tự. Mô hình BIP loại trừ các bài tập bị cấm hoàn toàn bằng cách bỏ qua các biến đó.

Tôi chưa điều tra thiết lập nó như một mô hình mạng trong CPLEX, nhưng đó có thể sẽ là bước tiếp theo của tôi. Tuy nhiên, có một chi phí hiệu năng khi giao tiếp với CPLEX, vì vậy tôi chắc chắn rằng một thuật toán chuyên dụng sẽ có hiệu suất tốt hơn.

Vấn đề khớp lưỡng cực này là một hạt nhân trong một thuật toán tìm kiếm lặp khác, vì vậy nó phải chạy càng nhanh càng tốt .

Có thuật toán nào tôi có thể thực hiện sẽ vượt trội hơn Thuật toán Hungary trong trường hợp này không? Hoặc bạn có bất kỳ đề xuất nào khác về cách tôi có thể cải thiện hiệu suất của hạt nhân này không?


Cũng như một ghi chú bên lề, kết hợp lưỡng cực rất phù hợp với lưu lượng tối đa tối thiểu và như tôi thấy có vẻ như bạn có một tình huống động và biểu đồ ban đầu của bạn có thể không thay đổi quá nhiều trong hai lần lặp liên tiếp, vì vậy có lẽ bạn có thể tìm thấy điều gì đó có liên quan công việc của bạn dọc theo câu hỏi và câu trả lời này .
Saeed

@Saeed, cảm ơn, tôi đã coi việc đại diện cho nó như một mạng chi phí tối thiểu bằng cách sử dụng thông tin từ lần lặp trước như một giải pháp khả thi ban đầu.
Ozzah

Câu trả lời:


7

Bạn có thể thử một trong các thuật toán dựa trên đấu giá cho các kết hợp lưỡng cực. (Xem ví dụ: ghi chú bài giảng mô tả một biến thể đơn giản tại đây: https://staff.fnwi.uva.nl/nswalton/Notes/Bertsekas_Ajection.pdf nhưng có thể tối ưu hóa nhiều hơn).

Các thuật toán này không nhất thiết phải có thời gian chạy tốt nhất trong trường hợp xấu nhất, nhưng chỉ yêu cầu các thao tác rất đơn giản và do đó thường hiệu quả trong thực tế và có thể tuân thủ song song. (Và họ có thể được sử dụng như một cơ sở cho việc khôi phục các trường hợp xấu nhất nổi tiếng nhất chạy lần, xem: http://agtb.wordpress.com/2009/07/13/auction-algorithm-for-bipartite-matching/

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.