Vấn đề khả thi lập trình tuyến tính với các ràng buộc tích cực nghiêm ngặt


15

Có một hệ thống các ràng buộc tuyến tính Axb . Tôi muốn tìm một vectơ tích cực nghiêm ngặt x>0 thỏa mãn các ràng buộc này. Điều đó có nghĩa là, xi>0 là bắt buộc cho mọi thành phần xi của x . Làm cách nào tôi có thể sử dụng bộ giải LP để tìm một vectơ dương nghiêm ngặt như vậy x(hoặc xác nhận rằng không có x tồn tại)? Tôi không thể đơn giản giới thiệu một hệ thống ràng buộc khác xi>0, bởi vì sự bình đẳng phải luôn được cho phép trong LP LP nhưng tôi có thể sử dụng bộ giải LP nhiều lần, với việc thay đổi các hàm mục tiêu. Tôi nghĩ rằng tôi nên sử dụng phương pháp biến đổi chùng, nhưng tôi không biết làm thế nào.

Câu trả lời:


15

Bạn có thể phá vỡ các vấn đề lựa chọn một nhỏ ε>0 bằng cách tham vọng hơn một chút: Cố gắng tìm x sao cho Mộtxb và rằng mục nhỏ trong x là lớn nhất có thể.

y=[xϵ]Rn+1
xRn
maxy[00 1]ys.t.[A 0]yband0[10010101011]y.

Đây là một sự cải tổ của vấn đề sau:

maxϵs.tAxbandxϵ1.


được thực hiện tốt, điều này tương đương với một mánh khóe của một đồng tác giả và tôi chỉ sử dụng trong một bài báo gần đây, và chắc chắn là vượt trội so với cách tiếp cận mà tôi đề xuất.
Aron Ahmadia

Đã đồng ý. Chơi tốt, thưa ngài.
Geoff Oxberry

Vấn đề được điều chỉnh có thể có một mục tiêu không giới hạn trong trường hợp câu trả lời cho vấn đề ban đầu là không đáng kể. Ví dụ: nếu hệ thống các ràng buộc chỉ là . Điều đó tốt miễn là bạn kiểm tra tính khả thi, tối ưu hoặc không bị ràng buộc trong trạng thái trả về của bộ giải lp của bạn hoặc ràng buộc rõ ràng với . x1ϵ
David Nehme

@DavidNehme: Người ta có thể thêm ràng buộc để có được một mục tiêu bị ràng buộc. yn+11
Arnold Neumaier

5

Đối với một vấn đề khả thi LP, tôi sẽ không sử dụng đơn giản tiêu chuẩn. Các thuật toán đơn giản tiêu chuẩn (hoặc kép) sẽ chỉ truy cập vào các đỉnh của tập hợp khả thi của các vấn đề nguyên thủy (hoặc kép).

Đặt tập hợp khả thi của vấn đề bạn thực sự muốn giải quyết là và giả sử thay vào đó bạn sẽ giải quyết vấn đề ( F ε ):F={x:Axb,x>0}Fε

minx0s.t.Axbxε1.

Giá trị gần đúng nhất của vấn đề bạn muốn giải quyết là , thừa nhận hơi quá nhiều điểm. Vấn đề là ranh giới của bộ chỉnh lưu dương (nghĩa là tập hợp B = { x : x0 , i : x i = 0 } có thể tạo thành một phần ranh giới của tập hợp khả thi của F 0. Chúng tôi muốn như để loại trừ các điểm này. Một cách để làm điều đó là để làm những gì Aron gợi ý, mà là để thiết lập εF0B={x:x0,i:xi=0}F0εđến một số giá trị dương nhỏ, và sau đó sử dụng bất kỳ thuật toán LP tiêu chuẩn nào. Chiến lược này là một chiến lược tốt, và có thể sẽ hoạt động trong nhiều tình huống khác nhau. Tuy nhiên, nó sẽ thất bại nếu là không khả thi. Chúng ta biết rằng F 0F F ε cho tất cả ε > 0 (để ký hiệu lạm dụng và tham khảo một tập khả thi bởi sự cố tương ứng của nó), và nó có thể là ngay cả khi bạn chọn các giá trị dương nhỏ ε , người giải quyết LP sẽ chỉ ra LP của bạn là không thể.FεF0FFεε>0ε

Đối với một giải LP, tôi muốn sử dụng bất kỳ thuật toán điểm nội thất cho LP mà bắt đầu với một điểm có tính khả thi và khả thi ở lại, đó là một cách khác để loại trừ điểm trong . Bạn không cần phải cung cấp một điểm khả thi cho các thuật toán này; người giải quyết tiêu chuẩn sẽ làm điều đó cho bạn. Các phương pháp như chia tỷ lệ affine, giảm tiềm năng và các phương pháp rào cản thiết lập các LP phụ trợ sẽ tìm ra các giải pháp khả thi và các lần lặp cho các thuật toán này đi qua bên trong khu vực khả thi. Bạn chỉ cần xác định một điểm trong vùng khả thi của mình, miễn là các vấn đề phụ được sử dụng bởi người giải quyết LP xác định điểm khả thi cho vấn đề của bạn và điểm khả thi đó là hoàn toàn tích cực, bạn sẽ ổn thôi. Nếu giải F ε không thành công cho các giá trị dương nhỏ của εBFεε, bạn vẫn có thể sử dụng các phương pháp này để xác định điểm khả thi tích cực hoàn toàn trong .F0

Không sử dụng simplex, tuy nhiên, vì nó sẽ chỉ khám phá các đỉnh của , đó là chính xác những gì bạn muốn tránh làm.Fε


4

Các vấn đề khả thi là một trò chơi phức tạp hơn một chút so với các vấn đề tuyến tính nói chung, mà bạn đã lưu ý. Nếu bạn đang giải quyết xấp xỉ (bằng cách sử dụng một đại diện dấu chấm động của hệ phương trình và hạn chế), nó là hợp pháp để yêu cầu , nơi ε là một số giá trị số rất nhỏ, đủ lớn để đảm bảo rằng x i thực cuộc sống trong + , nhưng đủ nhỏ rằng một giải pháp trên ranh giới không được xem xét.xi>=ϵϵxi+

Bạn có thể phải điều chỉnh , và giải pháp của bạn sẽ đủ điều kiện để "trong vòng hệ số ε ", nhưng điều này là đủ cho nhiều tình huống.ϵϵ


2

Câu trả lời được đưa ra bởi aeismail là được đọc kỹ, liên quan đến lp

max(x1+x2)

thứ

x1+x21

x1,x20

Nó có các giải pháp ( 0 , 1 ) cũng như các giải pháp khác (thoái hóa). Tổng quát của câu hỏi ngụ ý rằng những trường hợp này cũng cần phải được điều trị.(1,0)(0,1)

Vì bạn có thể chọn chức năng khách quan, bạn có thể cố gắng sửa đổi nó lặp đi lặp lại. Ví dụ: Bắt đầu với tất cả các hệ số cho tất cả các biến bằng một, hãy kiểm tra xem bạn có đạt được giải pháp chính xác hay không. Nếu một biến bằng 0, hãy tăng hệ số và bắt đầu lại ...

Mặc dù tôi không thể đưa ra một bằng chứng toán học rằng điều này hoạt động (hoặc một quy trình được xác định rõ làm thế nào để sửa đổi hàm mục tiêu). Tôi hi vọng cái này giúp được :)


Tuy nhiên, nếu bạn có một số lượng lớn các giải pháp thoái hóa, làm thế nào bạn sẽ đối phó với số này? Không có bất kỳ người giải quyết số nào đưa ra một cảnh báo (hoặc tệ hơn) về việc giải quyết vấn đề này?
aeismail

Không, họ sẽ không; họ sẽ chỉ trả lại giải pháp tối ưu đầu tiên gặp phải. Cách mà bạn sẽ tiếp tục tạo ra các giải pháp là thêm các mặt phẳng cắt (hoặc các ràng buộc khác) loại trừ các giải pháp tối ưu được tính toán trước đó. Trong trường hợp này, việc thêm các mặt phẳng cắt như vậy sẽ cho phép bạn trả về một xấp xỉ rời rạc của tập hợp các giải pháp tối ưu vô hạn.
Geoff Oxberry

Tôi sẽ xem đó là một quyết định lập trình kỳ lạ; Tại sao bạn không muốn nói với người dùng rằng hàm mục tiêu đang làm điều gì đó kỳ lạ trong vùng lân cận của giải pháp được báo cáo? Đối với một người giải phi tuyến, tôi có thể thấy có vấn đề với việc tìm hiểu chuyện gì đang xảy ra; Nhưng không nên nói dễ dàng hơn với hệ thống tuyến tính?
aeismail

Tôi phải suy nghĩ về cách người ta sẽ phát hiện sự thoái hóa bằng cách thực sự xây dựng các vấn đề, nhưng thông thường, người dùng muốn có một giải pháp tối ưu, vì vậy thông tin quan trọng nhất cho LP là trả về nếu giải pháp đó là tối ưu, khả thi (nhưng không tối ưu), không khả thi, hoặc không giới hạn. (Trên thực tế, những trạng thái này là những gì một người giải quyết như CPLEX sẽ trả lại.) Sự thoái hóa chủ yếu là vấn đề lý thuyết; lý do duy nhất nó sẽ được thảo luận trong ngữ cảnh số là trong thiết kế thuật toán hoặc trong thực tế, để lưu ý rằng sự suy biến thường làm chậm một bộ giải.
Geoff Oxberry
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.