cuốn sách gpt4 ai đã làm

Chiến lược phân nhánh và ràng buộc để thực hiện đường dẫn dài nhất

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 05:21:31 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi đang giải quyết một vấn đề cần được giải quyết bằng thuật toán nhánh và giới hạn. Giả sử chúng ta có n trạm xăng với các giá trị khoảng cách khác nhau tính từ điểm xuất phát. Các trạm có lợi nhuận khác nhau. Chúng ta muốn tối đa hóa lợi nhuận nhưng mỗi trạm phải cách nhau ít nhất K chiều dài. Tôi đã giải quyết vấn đề này bằng thuật toán động nhưng không thể tìm ra giải pháp cho thuật toán nhánh và ràng buộc. Thực ra, tôi cần một hàm mục tiêu tốt để xác định giới hạn. Tôi đã thử nhiều chức năng nhưng đều thất bại. Cảm ơn.

Ví dụ: n=5k=10

Giá trị khoảng cách l1=5, l2=15, l3=23, l4=30, l5=38

Lợi nhuận: p1=7, p2=3, p3=10, p4=12, p5=6

câu trả lời hay nhất

Đây là một vấn đề đóng gói khá điển hình. Chúng ta có thể xây dựng nó như một chương trình số nguyên như thế này. nếu chúng ta mở Tôi đứng rồi x_i1,否则为 0. Sau đó mục tiêu là

          n
tối đa hóa tổng lợi nhuận_i x_i.
i=1

Hạn chế là chúng ta không thể k Mở hai trang web trong một khoảng cách ngắn. Chúng ta có thể trượt một đoạn dài k cửa sổ, đưa ra một ràng buộc cho mỗi tập hợp con tối đa. Đối với giá trị khoảng cách l_1 = 5, l_2 = 15, l_3 = 23, l_4 = 30, l_5 = 38k = 16, chúng ta có những ràng buộc

x_1 + x_2 <= 1 (y_1) { 5, 15}
x_2 + x_3 + x_4 <= 1 (y_2) {15, 23, 30}
x_3 + x_4 + x_5 <= 1 (y_3) {23, 30, 38}.

Cuối cùng, mỗi trạm không thể mở được.

với mọi i, x_i trong {0, 1}

tính hai mặt

Đây là lý do tại sao chúng ta lại gặp rắc rối này. Đầu tiên, chúng ta có thể làm điều này bằng cách x_i trong {0, 1} Thay thế bằng x_i >= 0 để nới lỏng những hạn chế. Bây giờ chúng ta có một chương trình tuyến tính. chúng tôi biết

giá trị của chương trình tuyến tính >= giá trị của chương trình số nguyên,

Bởi vì mọi giải pháp của chương trình số nguyên đều là giải pháp hợp lệ cho chương trình tuyến tính. Cái hay của các chương trình tuyến tính là chúng có một chương trình kép, dưới những ràng buộc kỹ thuật nhất định, thông qua tính đối ngẫu LP, thỏa mãn

giá trị của chương trình kép = giá trị của chương trình tuyến tính >= giá trị của chương trình số nguyên.

Điều này rất quan trọng vì chương trình kép ở đây là một最小化, vì vậy bất kỳ giải pháp cũ nào cũng sẽ cung cấp cho chúng tôi một ràng buộc về lập trình số nguyên nguyên thủy (tức là vấn đề chúng tôi thực sự quan tâm).

Chương trình kép

Điều này được bắt nguồn một cách máy móc từ một chương trình tuyến tính. Tôi sẽ giải thích nó một cách trực quan dưới đây. Phiên bản phổ quát:

          m
tổng cực tiểu y_j
j=1
với mọi i, tính tổng trên các cửa sổ j chứa trạm i của y_j >= Profit_i
với mọi j, y_j >= 0.

Các phiên bản cụ thể (phiên bản kép của các LP cụ thể được liệt kê ở trên):

giảm thiểu y_1 + y_2 + y_3
y_1 >= lợi nhuận_1 (x_1)
y_1 + y_2 >= lợi nhuận_2 (x_2)
y_2 + y_3 >= lợi nhuận_3 (x_3)
y_2 + y_3 >= lợi nhuận_4 (x_4)
y_3 >= lợi nhuận_5 (x_5).
y_1, y_2, y_3 >= 0.

Theo trực giác, chúng tôi đang tính toán mức đánh thuế cho mỗi cửa sổ để việc xây dựng bất kỳ nhà ga nào cũng là đề xuất hòa vốn. Chúng ta thu càng ít thuế thì giá trị của nhà ga càng thấp.

xấp xỉ kép nguyên thủy

Chương trình kép có thể được giải bằng LP (thực tế có thể là số nguyên tối ưu; đây là bài toán đường đi ngắn nhất được ngụy trang). Đây là một thuật toán gần đúng dễ thực hiện hơn.

nếu mọi y_i xuất hiện ở bên trái của ràng buộc kép không thỏa mãn, thì nó làđầy sự kiện. khi một số y_i Khi ở trạng thái sự kiện, chúng tôi liên tục tăng y_i. Trong thực tế, trước tiên chúng ta tìm ra ràng buộc nào được thỏa mãn và sau đó trực tiếp bước thời gian đến điểm đó.

Giả sử các ràng buộc vẫn giống như trước

y_1 >= lợi nhuận_1 = 1
y_1 + y_2 >= lợi nhuận_2 = 2
y_2 + y_3 >= lợi nhuận_3 = 4
y_2 + y_3 >= lợi nhuận_4 = 5
y_3 >= lợi nhuận_5 = 3.

Ban đầu tất cả các biến đều 0 và đang ở trạng thái sự kiện. khi họ đạt được 1 giờ,lợi nhuận_1lợi nhuận_2 Các ràng buộc được thỏa mãn. Vì vậy y_1 bị vô hiệu hóa vì nó không tham gia vào bất kỳ ràng buộc nào khác. Chúng tôi sẽ tiếp tụcy_2y_3tăng lên2, thì thỏa mãnlợi nhuận_3hạn chế. Cả hai biến đều có liên quan lợi nhuận_4 Các ràng buộc để chúng duy trì trạng thái sự kiện. Khi chúng tôi thêm vào 2,5 giờ,lợi nhuận_4 các ràng buộc được thỏa mãn,y_2 Không còn hiệu lực. Hãy tiếp tục và sẽ y_3 tăng lên 3 để có được y_1 = 1y_2 = 2,5 Lời giải cuối cùng cho >y_3 = 3,giá trị 6,5. Giá trị tối ưu là (ví dụ)y_1 = 1y_2 = 2y_3 = 3, cho giá trị 6.

Về thuật toán - chiến lược phân nhánh và giới hạn để triển khai đường dẫn dài nhất, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/30019445/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress