Bình phương tối thiểu phi tuyến một phía với các ràng buộc tuyến tính


8

Tôi đang cố gắng giải quyết vấn đề bình phương tối thiểu phi tuyến một phía với các ràng buộc tuyến tính, tức là vấn đề:

minxi=1mri(x) s.t Axb

Ở đâu

ri(x)=fi(x)2 nếu fi(x)>0ri(x)=0 khác.

Nói cách khác, đây có thể được coi là một vấn đề bình phương nhỏ nhất trong đó chỉ có phần dư dương ( 's) được đưa vào. Tôi không thể nhấn mạnh đủ rằng đây không phải là một trường hợp dữ liệu. Tôi nhận thức được điều gì sẽ xảy ra nếu được sử dụng cho hầu hết các trường hợp dữ liệu, trong đó kết quả sẽ chỉ là một hàm "ở trên" tất cả các quan sát. Ứng dụng này là để giải quyết một vấn đề tối ưu hóa rất cụ thể thường được giải quyết trong định mức minmax ( ). Trong tất cả các trường hợp thực tế, giải pháp không đạt đến 0, tức là do hoạt động của các hàm .phút x | | f ( x ) | | | | f ( x ) | | 0 ffminx||f(x)||||f(x)||0f

Các hàm là phi tuyến tính và chúng ta có quyền truy cập vào các dẫn xuất của chúng, nhờ đó chúng ta có thể tính toán phân tích Jacobian mà không gặp nhiều rắc rối.f

Với một số thành công, chúng tôi đã áp dụng thuật toán Levenberg - Marquest trong đó hàm mục tiêu được xây dựng như trên, tức là các dưới 0 được xóa khỏi tổng và với các hàng tương ứng của Jacobian được đặt thành 0 (tức là nếu Điều này khá thô nhưng hoạt động tốt, thật không may, chúng tôi không thể kết hợp các ràng buộc tuyến tính.J J i , : = 0 f i ( x ) < = 0fJJi,:=0fi(x)<=0

Chúng tôi nhận thức được một số phương pháp giải quyết vấn đề NLLSQ chỉ với các ràng buộc ràng buộc, nhưng những phương pháp đó rõ ràng không giải quyết được vấn đề của chúng tôi. Chúng tôi chỉ tìm thấy một NLLSQ với các ràng buộc tuyến tính, được gọi là DQED và đã sử dụng nó với các thành công hạn chế (chúng tôi không hài lòng với số lần lặp / đánh giá chức năng) bằng cách sửa đổi hàm mục tiêu của chúng tôi như đã làm với Levenberg Marquest.

Những gì tôi đang tìm kiếm

Bất kỳ đề xuất cho các phương pháp giải quyết vấn đề bình phương tối thiểu phi tuyến tính với các ràng buộc tuyến tính. Ngoài ra, các đề xuất về cách sửa đổi các thuật toán để kết hợp thực tế là chúng tôi chỉ bao gồm các phần dư dương được chào đón nhiều hơn. Cuối cùng, bất kỳ lời khuyên hoặc suy nghĩ nào đều được hoan nghênh, mặc dù tôi phải nhấn mạnh một lần nữa rằng việc xây dựng vấn đề không sai, mặc dù tôi nhận ra rằng đó không phải là cách phù hợp nhất để tối ưu hóa do thiếu tính khác biệt của khi .r i ( x ) = 0ri(x)ri(x)=0


Khi bạn viết , ý bạn làhoặc? Tôi đoán sau này? max x | f ( x ) | tối đa tôi | f i ( x ) |f(x)maxx|f(x)|maxi|fi(x)|
David Ketcheson

Sau này, vâng. Cảm ơn bạn đã hỏi, xin lỗi đó là không rõ ràng.
OscarB

Câu trả lời:


2

Rất nhiều câu trả lời của tôi cho câu hỏi này cũng được áp dụng ở đây; chỉ cần bỏ qua phần PDE và giả vờ tôi đang nói về một vấn đề tối ưu hóa phi tuyến tính đang diễn ra.

Nói chung, vì bạn có các hàm liên tục, bạn có thể sử dụng các phương thức tìm kiếm trực tiếp, mặc dù sự hội tụ của các phương thức đó có thể chậm hơn các phương thức tương ứng sử dụng thông tin phái sinh bậc cao (trong trường hợp này, bạn không có). Bạn cũng có thể thử xem xét các bộ giải tối ưu hóa nonsmooth, chẳng hạn như các bộ giải sử dụng các phương thức bó. Tên chính trong lĩnh vực này là Frank Clarke, người đã phát triển phần lớn lý thuyết đằng sau việc tối ưu hóa nonsmooth; Tôi không biết nhiều về cơ thể của văn học.

Tôi đoán là do tính không đặc biệt trong mục tiêu của bạn, sử dụng các phương pháp giả định thông tin phái sinh thứ nhất hoặc thứ hai đang gây ra vấn đề với sự hội tụ.


Cảm ơn bạn, tôi sẽ thử tối ưu hóa không trơn tru. Tôi vẫn hy vọng tìm được ai đó cũng xem xét vấn đề này - tôi sẽ ngạc nhiên nếu tôi là người duy nhất chìm đắm trong vấn đề này. Vì vậy, tôi để lại câu hỏi mở một chút.
OscarB

0

(Nhiều năm sau) như bạn đã biết, tối ưu hóa Levenberg-Marquest lấy toàn bộ vectơ các hàm và thực hiện phép tính tổng và bình phương bên trong. Do đó, sẽ chỉ thấy , đó là những gì bạn muốn, có đúng không?[fi]
levmar( max( [fi...], 0 )]
fi>0

Các ràng buộc tuyến tính có cùng thuộc tính với của bạn , điều đó chỉ có các điều khoản tích cực. Do đó, bạn chỉ có thể thu được rất nhiều: (với nhân với 1000 hoặc 1000000.) Tất nhiên là phải xem xét các dấu hiệu của và , nhưng điều đó thật dễ dàng. Ngoài ra, tôi còn thêm một thuật ngữ để giữ không đi lang thang đến vô cùng.lini(x)Aixbi0fi
l i n i J một c o b i một n s i ( x ) f i l i n ix xlevmar( max( [fi... lini...], 0 )]
liniJacobiansi(x)filinixx

(Cả Scipy less_squaresceres đều thực hiện các ràng buộc hộp, nhưng tôi không thấy bất kỳ cách nào ánh xạ các vùng sang các hộp.)Axb

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.