Cách tính ellipsoid tối đa trong một khối đa diện đã cho


8

BBCC={x|aiTxbi,i=1,,m}

minB,d[logdetB1]s.t.:||Bai||2+aiTdbi,i=1,,m
. Cách tiếp cận của tôi sẽ là sử dụng các phương pháp điểm bên trong, giới thiệu tham số chính xác và kết hợp các ràng buộc vào mục tiêu thông qua chức năng rào cản logarit như được giải thích trong chương 11 của cuốn sách trên và cố gắng giảm thiểu vấn đề không được Do đó, tôi sẽ lấy các đạo hàm riêng của : là một ma trận và phút B , dt>0ff
minB,d[logdetB11ti=1mlog(bi||Bai||2aiTd)]=f(B,d).
ff
fB=B1+1ti=1m(BaiaiT||Bai||bi||Bai||2aiTd)
fd=1ti=1m(aibi||Bai||2aiTd)
đó là một vectơ. Và sau đó bắt đầu từ một điểm ban đầu (khả thi) Tôi sẽ cập nhật lặp lại giải pháp thực tế theo các đạo hàm riêng âm: trong đó và( B k , d k ) B k + 1 = B k - s B f ( B k , d k )(B0,d0)(Bk,dk) sB>0sd>0
Bk+1=BksBf(Bk,dk)Bdk+1=dksdf(Bk,dk)d
sB>0sd>0là các tham số kích thước bước cho đến khi một tiêu chí dừng được xác định trước được điền đầy đủ. \ Tôi không chắc liệu đây có phải là một cách chính xác để giải quyết vấn đề không? Dường như với tôi rất vụng về và không thanh lịch lắm. Tôi không phải là một chuyên gia về kỹ thuật tối ưu hóa và tôi không chắc liệu tôi có đặt tất cả các thành phần (dẫn xuất một phần, phương pháp điểm nội bộ, khai thác không giới hạn, v.v.) theo đúng cách hay không. Tôi tự hỏi làm thế nào một chuyên gia sẽ giải quyết vấn đề này. Trong cuốn sách được đề cập ở trên, nhiệm vụ này đã được hiển thị như một ví dụ cho một vấn đề lồi, nhưng theo như tôi có thể thấy có thuật toán rõ ràng được đưa ra để giải quyết nhiệm vụ. Mặc dù tôi nghĩ rằng ông Boyd có một kịch bản Matlab trên các trang của mình để giải quyết công việc, nhưng tôi muốn hiểu các kỹ thuật cơ bản trước khi sử dụng thuật toán "hộp đen". Dường như có những cách tiếp cận khác trong " Thuật toán đa thức điểm trong trong lập trình lồi; Yurii Nesterov và Arkadii Nemirovskii, SIAM nghiên cứu về toán ứng dụng; vol.13, 1994 "và" Về sự phức tạp của xấp xỉ ellipsoid được ghi tối đa cho một đa giác, Leonid G. Khachiyan và Michael J. Todd, Lập trình toán học 61 (1993), 137-159 "nhưng tôi không hiểu chúng vì chúng được viết cho kỹ thuật cho tôi.

Nhân tiện: Làm thế nào để vấn đề kép của vấn đề đầu tiên trông như thế nào? Và nó có nguồn gốc như thế nào?

Cảm ơn trước


1
Có những người giải quyết sẽ làm tất cả những điều này cho bạn. Có bất kỳ lý do bạn muốn tự làm chúng thay thế? Nói như một người, tại một thời điểm, đã học về các phương pháp điểm bên trong và đã làm việc trong phòng thí nghiệm tối ưu hóa và đã mã hóa một số phương pháp trong MATLAB (để làm bài tập về nhà), tôi vẫn sử dụng bộ giải hộp đen .
Geoff Oxberry

1
Tôi tuân thủ nguyên tắc để hiểu / thực hiện ít nhất một phiên bản cơ bản của phương pháp trước khi sử dụng các thói quen ngoài luồng. Tôi nghĩ rằng nguyên tắc này đi kèm với hai khía cạnh thuận lợi: 1) Nó đi kèm với một hiệu quả học tập to lớn và sự hiểu biết sâu sắc hơn về các phương pháp. 2) Trong hầu hết các ứng dụng, một phiên bản cơ bản của thuật toán toán học là đủ (ít nhất là đối với các ứng dụng tôi phải đối mặt). Vì vậy, bạn có thể giữ mã của mình nhỏ và đơn giản và không phải lo lắng về nội dung cấp phép (trong trường hợp bạn muốn kiếm tiền với nó).
Denis K.

Câu trả lời:


1

Vâng, bạn đang sắp xếp đúng hướng. Không có phép thuật để giải quyết những vấn đề này bằng các phương pháp điểm bên trong, chúng có tính lặp đi lặp lại và dựa trên tuyến tính hóa, v.v.

Tuy nhiên, thuật toán điểm bên trong điển hình cho các vấn đề này sẽ không thực hiện một bước theo hướng gradient, mà cũng tính toán thông tin bậc hai, và do đó có một bước Newton. Do đó, tìm kiếm dòng được thực hiện theo hướng Newton, một bước tối ưu được thực hiện và quy trình được lặp lại. Sau khi hội tụ (quá chính xác được xác định phù hợp), tham số rào cản sẽ giảm (với một số yếu tố phù hợp) và quy trình được lặp lại một lần nữa.

Để làm cho nó hoạt động trong thực tế, bạn phải suy nghĩ cẩn thận về cách bạn thực hiện các cập nhật tham số và thường thì bạn sẽ thực hiện mọi thứ trong không gian nguyên thủy kép.

Nếu bạn google cho sillysdp, bạn sẽ thấy một triển khai đơn giản của trình giải SDP, về cơ bản, ví dụ 11.9 trong tài liệu tham khảo Boyd & Vandenberghe mà bạn đang đọc. Có thể là một khởi đầu cho cảm hứng (vì lập trình semidefinite là sự khái quát hóa một SOCP mà bạn đang giải quyết, bỏ qua thuật ngữ logdet trong mục tiêu, điều này không làm phức tạp mọi thứ thực sự)

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.