Giảm lập trình tuyến tính sang lập trình tuyến tính tích cực


7

Giả sử chúng ta có một lời sấm giải quyết các vấn đề về hình thức

maximize  cTxsubject to  Ax=b,x0

khi (tất cả các hệ số trong mục tiêu tối đa hóa đều không âm).c0

Nó có thể được sử dụng để giải quyết hiệu quả các chương trình tuyến tính nói chung?

FAILED ATTEMPT # 1: thay thế từng biến xuất hiện với hệ số âm trong , bằng một biến khác . Thật không may, này không thỏa mãn các ràng buộc không phủ định.xicTxyi:=xiyi

FAILED ATTEMPT # 2: Đảm bảo rằng tất cả các phần tử trong đều không dương (nhân phương trình với -1 nếu cần). Sau đó tạo LP kép:b

maximize  bTysubject to  ATyc

Ở đây, tất cả các hệ số trong mục tiêu là không âm. Tuy nhiên, hình thức này không phù hợp với hình thức mà nhà tiên tri có thể giải quyết, vì các ràng buộc không phải là các ràng buộc phương trình và các biến không bị ràng buộc.y


Bạn có thể thử sử dụng giảm từ tối ưu hóa thành khả thi (về cơ bản là tìm kiếm nhị phân).
Yuval Filmus

Tôi có thể hỏi động lực cho sự không âm thầm này là gì?
John L.

1
@ Apass.Jack Tôi đã cố gắng chứng minh độ cứng của một số vấn đề và nghĩ rằng một cách tiềm năng là giảm bớt nó từ lập trình tuyến tính. Tuy nhiên, trong vấn đề của tôi, các hệ số đều dương. Vì vậy, tôi muốn biết liệu lập trình tuyến tính tích cực có khó như vấn đề chung không.
Erel Segal-Halevi

Câu trả lời:


5

Bạn có thể thêm một biến và một đẳng thức tuyến tính cho một số . Sau đó, vấn đề ban đầu tương đương với tối đa hóa trong hệ thống mới.yy=cTx+c0c0y

Ngoại trừ điều kiện . Đó là nơi xuất hiện. Chúng ta cần làm cho đủ lớn để một số khả thi (đó là và giữ) chúng ta có . Trong trường hợp đó, không có vấn đề gì là không tiêu cực cắt đi các phần của không gian khả thi. Giá trị tối ưu vẫn như cũ.y0c0c0xAx=bx0cTx+c00

Vậy làm thế nào để chọn ? Tôi không phải là một chuyên gia về tối ưu hóa tuyến tính. Việc tìm kiếm một số khả thi dễ hơn tìm kiếm tối đa hóa chức năng mục tiêu không? Nếu vậy, chúng ta có thể lấy thành .c0x0c0cTx0

Nếu các hệ số đã cho là hợp lý, có một cách khác. Trước tiên, chúng ta hãy xác định rằng đa giác của khả thi có các đỉnh (trừ khi nó trống): Gọi là một điểm trong một ô ranh giới chiều tối thiểu của đa giác đã nói. Đối với mâu thuẫn, giả sử rằng kích thước của ô này là . Sau đó, có một điểm khác nhau trong cùng một ô. Vì ô có kích thước tối thiểu, nó không bị chặn, do đó, các điểm có dạng nằm trong cùng một ô và do đó trong đa giác. Vì , một số như vậy có tọa độ âm, mâu thuẫn với điều kiện đa giác .xp1qr=p+t(qp)qp0rr0

Bây giờ, tạo tất cả các hệ số của số nguyên và bằng cách nhân với mẫu số chung. Đặt là thứ nguyên (chiều dài của vectơ ) và gọi là giá trị tuyệt đối lớn nhất của bất kỳ hệ số nào của , hoặc . Sau đó, chúng ta có thể ràng buộc tọa độ của bất kỳ đỉnh nào của đa giác khả thi bằng . Do đó, chọn .AbncMAbcn!Mnc0:=nn!Mn+1

[BIÊN TẬP]

Tuy nhiên, một cách tiếp cận khác, trong trường hợp bạn sẵn sàng gọi nhà tiên tri nhiều lần: Đầu tiên, hãy thử cách trên với . Nếu bạn nhận được một giải pháp hoặc câu trả lời "không giới hạn", bạn vẫn ổn. Nếu câu trả lời là "không thể giải quyết", bạn cần tìm hiểu xem có giải pháp nào có chức năng mục tiêu tiêu cực không. Do đó, đặt và tối đa hóa thay thế. Nếu bạn nhận được giải pháp, bạn có thể sử dụng nó dưới dạng . Nếu bạn nhận được "không thể giải quyết" một lần nữa, bạn cũng đã hoàn thành. Trường hợp cuối cùng là câu trả lời "không giới hạn". Sau đó, bạn cần dùng thử lớn hơn bao giờ hết (đối với một vài cuộc gọi tiên tri, hãy sử dụng chức năng phát triển nhanh; chức năng Ackermann có thể làm) cho đến khi bạn nhận được giải pháp.c0=0z=cTzx0c0


Âm thanh tốt. Tôi nghĩ bạn thậm chí không cần phần cuối cùng. Để tìm một giải pháp khả thi, bạn chỉ cần giải quyết một vấn đề giả, chẳng hạn như "tối đa hóa 1 chủ đề cho ". Câu trả lời nên là 1 nếu có một giải pháp khả thi (mặc dù không chắc chắn về điều đó). Ax=b,x0
Erel Segal-Halevi

-1

Bạn có thể thay thế một biến x không có giới hạn là dương bằng hai biến trong đó cả và đều bị hạn chế là dương. Tất cả các hệ số của chúng sẽ giống hệt nhau ngoại trừ chúng có dấu ngược lại.x+xx+x

Trong thuật toán đơn giản, luôn luôn có thể chỉ đưa một trong số này vào cơ sở. Trên thực tế, bạn có thể tránh mọi tính toán bổ sung bằng cách chỉ theo dõi xem bất kỳ biến cơ sở nào hiện đang dương hay âm.


Tôi không hiểu câu trả lời này. Nếu bạn thay bằng hai biến, thì các hệ số trong mục tiêu tối đa hóa sẽ là âm ..x
Erel Segal-Halevi
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.