2013-07-29 42 views

Trả lời

7

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 

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^nhj 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

F. Gao, L. Han, "Implementing the Nelder-Mead simplex algorithm with adaptive parameters", Comput. Optim. Appl., DOI 10.1007/s10589-010-9329-3

2

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

Các vấn đề liên quan