Các thuật toán cho một bài toán gán tổng quát nhiều-nhiều


20

Tôi dường như không thể tìm thấy bất kỳ tài liệu nào về các thuật toán có thể được sử dụng để giải quyết vấn đề chuyển nhượng tổng quát nhiều-nhiều (GAP), tức là các mô hình trong đó không chỉ có thể gán nhiều tác vụ cho một tác nhân, mà còn có thể có nhiều tác nhân được giao cho một nhiệm vụ (một đến một và nhiều AP được thảo luận trong một bài báo của Pentico). Tôi không biết gì về các vấn đề chuyển nhượng, nhưng tôi đã gặp một vấn đề như thế này trong quá trình nghiên cứu của tôi và muốn biết thêm về cách giải quyết chúng. Có thể là một GAP nhiều-nhiều như vậy được biết đến dưới một tên khác, hoặc có một lý do khác tại sao rất ít tài liệu về nó có thể được tìm thấy?

Pentico, D. Vấn đề chuyển nhượng: Một khảo sát kỷ niệm vàng . Tạp chí nghiên cứu hoạt động châu Âu (2007); 176 (2): 774-793.


1
Xin chào GerritJan. Chào mừng đến với Scicomp! :) Bạn có quen thuộc với heuristic heuristic cho bài toán tổng quát không? scTHERirect.com/science/article/pii/S0898122110002609 hoặc irma-i Intl.org/viewtitle/58969 hoặc crcnetbase.com/doi/abs/10.1201/9781420010749.ch48 ?
Paul

1
Đối với tôi, dường như trường hợp gán các phần của một nhiệm vụ cho nhiều tác nhân có thể được mô hình hóa, ít nhất là trong trường hợp chi phí được phân bổ tuyến tính, bằng cách xử lý một nhiệm vụ như thể nó thay vì nhiều nhiệm vụ. Nếu không có thêm chi tiết, thật khó để biết các vấn đề của bạn có thể "chung chung" hơn các vấn đề chuyển nhượng tổng quát. Các bài viết Wikipeida có một số triển lãm tốt và liên kết với một vài tài liệu tham khảo về chủ đề này.
hardmath

Cảm ơn, @Paul. Tôi sẽ xem xét các giấy tờ, mặc dù chúng có vẻ khá phức tạp đối với mắt chưa được huấn luyện của tôi. Sau đó, một lần nữa, tôi nghi ngờ vấn đề là phức tạp, và tôi có thể sẽ phải làm một số đơn giản hóa. hardmath, vấn đề của tôi về cơ bản là phân phối năng lượng trong mạng: cung và cầu cần phải được kết hợp bằng cách sử dụng các kết nối (có trọng số) giữa chúng, theo cách tối ưu nhất, với việc sử dụng nguồn cung tối thiểu để đáp ứng mọi nhu cầu. Tất nhiên, các ràng buộc bổ sung có thể được sử dụng, như dung lượng tối đa trên các kết nối, v.v.
Gerrit ngày 1

1
@GerritJan: Đây là một vấn đề khó khăn, vì vậy nó sẽ yêu cầu một sơ đồ gần đúng. Nếu bạn cần một xấp xỉ tốt, thuật toán của bạn có thể phải phức tạp một chút.
Paul

2
@GerritJan: Điều đó có nghĩa là giải pháp 'tối ưu' chính xác chỉ có thể được đảm bảo bằng cách kiểm tra tất cả các cấu hình có thể. Những giải pháp khả thi này phát triển (ít nhất) theo cấp số nhân theo thời gian, làm cho các vấn đề kích thước tương đối khiêm tốn hầu như không thể giải quyết chính xác trong một khoảng thời gian hợp lý.
Paul

Câu trả lời:


1

Vấn đề của bạn dường như không phải là ", rằng tổng của các" tác nhân "phải cung cấp chính xác một phần năng lượng riêng biệt hoặc không có gì cho mỗi nhu cầu duy nhất ...", phải không? Hoặc bạn không hiểu tôi. Vì vậy, tôi sẽ cố gắng mô tả vấn đề của mình tốt hơn, cũng bởi vì tôi đã tìm ra giải pháp.

Trong vấn đề của tôi, tôi có một tập hợp các đại lý trong đó mỗi đại lý có ngân sách của một số tài nguyên nhất định, những người có thể chia sẻ chi phí của các nhiệm vụ, có thể được "thực hiện" 1 lần hay không (nhiều nhiệm vụ mà không cần phải giao "thực thi" mọi nhiệm vụ). Nó có nghĩa là: tổng các giải pháp một phần của các tác nhân cho nhiệm vụ x nên nhỏ hơn hoặc bằng chi phí của nhiệm vụ x. Mục tiêu là tìm ra tập hợp các nhiệm vụ với hầu hết giá trị mà các đại lý có thể trả.

Tôi đang làm việc với phần mềm gams vì vậy tôi mô tả nó theo kiểu gams: đặt tác nhân, t nhiệm vụ tham số chi phí (t), giá trị (t) tài nguyên tham số (a)

biến dương y (a, t) (không phải int), một phần của tác nhân a cho chi phí của mục tiêu nhiệm vụ t:

maxvalue =e= sum((a,t), value(t) * y(a,t) / cost(t) );
agentresource_max_constraint(a).. sum(t, y(a,t)) =l= resources(a);
taskcost_max_constraint.. sum(a, y(a,t)) =l= cost(t);

Như tôi đã viết, tôi đã có một giải pháp nhưng không biết cách tách các giải pháp nhiệm vụ một phần. Nhưng bây giờ tôi phát hiện ra rằng tôi có thể xây dựng một ràng buộc với một

biến nhị phân z(t)

taskcost_bin_constraint z(t) =e= sum(a, y(a,t)) / cost(t);

sum(a, y(a,t)) / cost(t)trong công thức phương trình là một cái gì đó trong khoảng từ 0 đến 1 và theo ràng buộc này, zlà 0 cho tất cả ít hơn 1 và 1 cho 1. với taskcost_bin_constraintmục tiêu này sẽ là:

maxvalue =e= sum(t, value(t) * z(t));

Tôi đã tự hỏi nhưng điều này hoạt động và cung cấp cho tôi các giải pháp tốt hơn trong các ràng buộc, để xây dựng một nhiệm vụ đầy đủ hay không.

Có lẽ bạn cũng có thể thêm một ràng buộc như vậy? Một ràng buộc để đáp ứng chính xác các yêu cầu, được biểu thị bằng biểu thức có giá trị từ 0 đến 1.


1

Có một thuật toán ủ xác định để giải quyết vấn đề gán một-một hoặc tương đương với bài toán phân vùng ma trận dyadic.

Tuy nhiên, thay vì sử dụng các giá trị số nguyên [0, 1], người ta có thể sử dụng các giá trị phân số (vì vậy thuật toán vẫn giữ nguyên) hoặc thậm chí mở rộng nó để xử lý nhiều hơn một phép gán (bằng cách thêm một vòng lặp bên trong và theo đó, ma trận trở thành một mảng siêu chiều hoặc tenor)

Bài viết ở đây: http://www.researchgate.net/publication/2382666_Pairwise_Data_Clustering_by_Deterministic_Anninating/file/d912f50c75945d835b.pdf

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.