Tôi đang cố gắng thực hiện thuật toán Nelder-Mead để tối ưu hóa một chức năng. Các trang wikipedia về Nelder-Mead là đáng ngạc nhiên rõ ràng về toàn bộ thuật toán, ngoại trừ tiêu chí dừng của nó. Có nó buồn bã nói:
Kiểm tra sự hội tụ [cần làm rõ] .
Tôi đã thử và tự mình thử nghiệm một vài tiêu chí:
Dừng nếu nơi ε là nhỏ và nơi x i là i -thứ đỉnh của simplex, đặt hàng từ thấp ( f ( x 1 ) ) đến cao ( f ( x N + 1 )) các giá trị hàm. Nói cách khác, khi giá trị tối đa của đơn giản gần như bằng giá trị tối thiểu. Tôi thấy điều này không hoạt động đúng, vì điều này không đảm bảo về chức năng làm gì bên trong đơn giản. Ví dụ, hãy xem xét hàm: Tất nhiên đây là chuyện nhỏ để tối ưu hóa, nhưng giả sử chúng ta làm điều này với NM và để hai điểm đơn giản của chúng ta là x 1 = - 1 và x 2 = 1 . Thuật toán sẽ hội tụ ở đây mà không tìm thấy tối ưu của nó.
Tùy chọn thứ hai liên quan đến việc đánh giá trọng tâm của đơn giản: dừng nếu . Điều này giả định rằng nếu điểm thấp nhất của Simplex và centroid có các giá trị tương tự như vậy, thì Simplex đủ nhỏ để gọi hội tụ.
Đây có phải là một cách thích hợp để kiểm tra sự hội tụ? Hoặc có một cách thành lập để kiểm tra này? Tôi không thể tìm thấy bất kỳ nguồn nào về điều này, vì hầu hết các lần tìm kiếm tập trung vào sự phức tạp của thuật toán.