Cách tốt nhất để khởi tạo một đơn giản để sử dụng trong tìm kiếm đơn giản Nelder-Mead từ đỉnh 'đoán' của người dùng là gì?Chọn đơn giản ban đầu trong thuật toán tối ưu hóa Nelder-Mead
Trả lời
Tôi không chắc liệu có cách nào là cách tốt nhất để chọn đơn giản ban đầu theo phương pháp Nelder-Mead, nhưng sau đây là những gì được thực hiện trong thực tế phổ biến.
Việc xây dựng ban đầu simplex S
được lấy từ tạo n+1
đỉnh x0,..,xn
xung quanh những gì bạn gọi của người dùng "đoán" đỉnh xin
trong một không gian N
chiều. Sự lựa chọn thường xuyên nhất là
x0=xin
và n
đỉnh còn lại sau đó được tạo ra để
xj=x0+hj*ej
nơi ej
là vector đơn vị của j
-thứ phối hợp trục trong R^n
và hj
là bước- kích thước theo hướng ej
.
hj = 0.05 if (x0)j is non-zero
hj = 0.00025 if (x0)j=0
với (x0) j thành phần thứ j của x0. Lưu ý rằng đây là lựa chọn trong thói quen fminsearch của Matlab, dựa trên lược đồ Nelder-Mead.
Bạn có thể tìm thấy một số thông tin trong
Tôi nghĩ rằng không có nguyên tắc chung để xác định tốt nhất simplex ban đầu của việc tối ưu hóa Nelder-Mead vì điều này đòi hỏi ít nhất một sự hiểu biết mơ hồ về phản ứng bề mặt.
Tuy nhiên, nó có thể là một chính sách hợp lý để thiết lập các điểm theo cách mà đơn giản bao gồm hầu như toàn bộ phạm vi có thể. Thuật toán của Nelder-Mead sẽ tự động thu nhỏ đơn giản và aproximate cho tối ưu. Lợi thế thực tế của chính sách này là bạn sẽ thu được kiến thức tổng thể tốt hơn về chức năng phản hồi.
Chúng tôi đã thực hiện một số thử nghiệm với HillStormer ("http://www.berkutec.com"). Chương trình này cho phép kiểm tra các chính sách này trên testfunctons và chúng tôi thấy rằng plicy này hoạt động khá tốt.
Hãy nhớ rằng thao tác đơn giản đầu tiên là một sự phản ánh. Nếu simplex bắt đầu bao gồm toàn bộ phạm vi cho phép, sự phản ánh nhất thiết sẽ cho ra một giới hạn điểm. Nhưng HillStormer cho phép sử dụng các ràng buộc tuyến tính và có thể tránh được vấn đề này.
Bạn có thể tìm thêm một số thông tin trong hệ thống trợ giúp của HillStormer.
B. Kühne