Những ưu điểm / nhược điểm của phương pháp điểm bên trong so với phương pháp đơn giản để tối ưu hóa tuyến tính là gì?


14

Theo tôi hiểu, vì một giải pháp cho chương trình tuyến tính luôn xảy ra ở một đỉnh của tập hợp khả thi đa diện của nó (nếu một giải pháp tồn tại và giá trị hàm mục tiêu tối ưu được giới hạn từ bên dưới, giả sử có vấn đề tối thiểu hóa), làm thế nào có thể tìm kiếm thông qua nội địa của khu vực khả thi sẽ tốt hơn? Liệu nó hội tụ nhanh hơn? Trong trường hợp nào sẽ thuận lợi hơn khi sử dụng phương pháp đơn giản so với phương pháp điểm bên trong? Là một dễ dàng để thực hiện trong một mã hơn so với cái khác?


minx[1,1]x2x=0

Sẽ là thích hợp hơn để nói "tối ưu hóa tuyến tính" thay vì "tối ưu hóa lồi"?
Paul

Vâng, sau đó tuyên bố của bạn là chính xác. Cảm ơn bạn đã chỉnh sửa câu hỏi của bạn.
Geoff Oxberry

Vấn đề với phương pháp đơn giản là nó không thể khái quát thành các vấn đề phi tuyến, tức là phần lớn các vấn đề trong thế giới thực.

Câu trả lời:


17

Dựa trên kinh nghiệm cá nhân, tôi muốn nói rằng các phương thức đơn giản dễ hiểu hơn cách thực hiện so với phương pháp điểm bên trong, dựa trên kinh nghiệm cá nhân từ việc thực hiện cả phương pháp đơn giản nguyên thủy và phương pháp điểm nội bộ cơ bản trong MATLAB như là một phần của việc tham gia lớp lập trình tuyến tính . Những trở ngại chính trong prx đơn giản là đảm bảo rằng bạn thực hiện đúng Giai đoạn I và Giai đoạn II và bạn cũng thực hiện đúng quy tắc chống tái chế. Những trở ngại chính trong việc thực hiện một phương pháp điểm bên trong cho lập trình tuyến tính có xu hướng liên quan nhiều hơn đến việc thực hiện phương pháp lặp một cách chính xác và điều chỉnh tham số rào cản tương ứng.

Bạn có thể tìm thấy một cuộc thảo luận đầy đủ hơn về ưu và nhược điểm của từng thuật toán trong sách giáo khoa về lập trình tuyến tính, chẳng hạn như Giới thiệu về Tối ưu hóa tuyến tính của Bertsimas và Tsitsiklis. ( Tuyên bố miễn trừ trách nhiệm: Tôi đã học lập trình tuyến tính từ sách giáo khoa này và học lập trình tuyến tính tại MIT từ vợ của Bertsimas.) Dưới đây là một số điều cơ bản:

Ưu điểm của đơn giản:

  • Cho biến quyết định, thường hội tụ trong các phép toán O ( n ) với các trục .nO(n)O(n)
  • Tận dụng lợi thế của hình học của vấn đề: truy cập các đỉnh của tập hợp khả thi và kiểm tra từng đỉnh được truy cập để tìm sự tối ưu. (Trong primal Simplex, chi phí giảm có thể được sử dụng cho kiểm tra này.)
  • Tốt cho các vấn đề nhỏ.

Nhược điểm của Simplex:

  • Đưa ra biến quyết định, bạn luôn có thể tìm thấy một trường hợp vấn đề trong đó thuật toán yêu cầu các phép toán và các trục xoay để đi đến một giải pháp.nO(2n)
  • Không quá tuyệt vời cho các vấn đề lớn, bởi vì các hoạt động xoay vòng trở nên đắt đỏ. Các thuật toán mặt phẳng cắt hoặc các thuật toán tạo cột bị trì hoãn như Dantzig-Wolfe đôi khi có thể bù đắp cho sự thiếu sót này.

Ưu điểm của phương pháp điểm nội thất:

  • Có độ phức tạp tiệm cận thời gian đa thức của , trong đó là số bit đầu vào của thuật toán.O(n3.5L2logLloglogL)L
  • Tốt hơn cho các vấn đề lớn, thưa thớt vì đại số tuyến tính cần thiết cho thuật toán nhanh hơn.

Nhược điểm của phương pháp điểm nội thất:

  • Điều đó không thỏa mãn bằng trực giác bởi vì bạn đúng, các phương pháp này không truy cập vào các đỉnh. Họ đi lang thang qua khu vực nội địa, hội tụ một giải pháp khi thành công.
  • Đối với các vấn đề nhỏ, Simplex có thể sẽ nhanh hơn. (Bạn có thể xây dựng các trường hợp bệnh lý, như khối Klee-Minty.)

2
Một bản tóm tắt tốt. Trên thực tế, Klee-Minty dường như được thiết kế để gây nhiễu các phương pháp LP đơn giản ...
JM

@JM Vâng, đó chính xác là điểm chính của nó - đó là một cấu trúc rõ ràng để chỉ ra rằng các phương thức đơn giản không phải là đa thức (mặc dù cũng có các biến thể làm cho các phương thức điểm bên trong cũng khóc).
Christian Clason

Cảm ơn bạn đã đăng bài thông tin này. Tôi tự hỏi có bao nhiêu biến làm cho vấn đề lớn? Hàng chục? Hàng trăm? Hàng ngàn?
KjMag

Khối Klee-Minty chạy trong <0,1 giây trong bộ giải mã nguồn mở GLPK 4,65 đơn giản. (Giá trị trong và khiến nhiều người giải quyết hoạt động sai ở D = 100, nhưng điều đó khác nhau.) Có bất kỳ vấn đề nào mà phương pháp đơn giản chạy chậm, nói thưa với <1M nonzeros không? 5DAx
chối

3

Câu trả lời rất dễ. Cả hai (phương pháp điểm đơn giản và điểm bên trong) là một trường trưởng thành từ quan điểm thuật toán. Cả hai đều làm việc rất tốt trong thực tế. Danh tiếng tốt của IPM (phương pháp điểm bên trong) là do sự phức tạp đa thức của nó trong trường hợp xấu nhất. Đó không phải là trường hợp đơn giản có độ phức tạp tổ hợp. Tuy nhiên, các chương trình tuyến tính tổ hợp hầu như không bao giờ xảy ra trong thực tế. Đối với các vấn đề quy mô rất lớn, IP dường như nhanh hơn một chút, nhưng không cần thiết là quy tắc. Theo tôi IP có thể dễ hiểu và thực hiện, nhưng chắc chắn, người khác có thể không đồng ý, và điều đó là tốt. Bây giờ, trong LP, nếu giải pháp là duy nhất, nó chắc chắn nằm trong một đỉnh, (cả IP và Simplex cũng làm tốt ở đây). Giải pháp cũng có thể nằm trên một mặt của khối đa diện hoặc trên một cạnh trong trường hợp này, đỉnh liền kề là (hoặc đỉnh là) cũng là một giải pháp (một lần nữa, cả IP và đơn giản đều làm tốt). Vì vậy, chúng là khá nhiều như nhau.


Tôi nhận ra ví dụ tôi đưa ra không phải là một chương trình tuyến tính; nếu bạn nhìn vào lịch sử sửa đổi, một phiên bản trước của câu hỏi này được yêu cầu so sánh phương pháp đơn giản và phương pháp điểm bên trong cho các vấn đề tối ưu hóa lồi. Tôi đã đưa ra một ví dụ để biện minh cho các chỉnh sửa tôi đã thực hiện và để khuyến khích người đăng ban đầu sửa câu hỏi của mình, điều mà anh ta đã làm.
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.