Tôi hiện đang làm việc trên một giải pháp cho một vấn đề mà (sau một chút về nghiên cứu) việc sử dụng một leo đồi, và specificly hơn một shotgun (hoặc ngẫu nhiên khởi động lại ) đồi leo ý tưởng thuật toán có vẻ là phù hợp nhất, như tôi không biết làm thế nào giá trị bắt đầu tốt nhất có thể được tìm thấy.
Nhưng không có nhiều thông tin về loại thuật toán này ngoại trừ ý tưởng thô sơ đằng sau nó:
[Shotgun] leo đồi là một thuật toán meta được xây dựng dựa trên thuật toán leo đồi. Nó lặp đi lặp lại leo đồi, mỗi lần với điều kiện ban đầu ngẫu nhiên . tốt nhất được giữ: nếu một lần leo đồi mới tạo ra tốt hơn trạng thái được lưu trữ, thì nó sẽ thay thế trạng thái được lưu trữ.
Nếu tôi hiểu điều này một cách chính xác, điều này có nghĩa là một cái gì đó như thế này (giả sử tối đa hóa):
x = -infinity;
for ( i = 1 .. N ) {
x = max(x, hill_climbing(random_solution()));
}
return x;
Nhưng làm thế nào bạn có thể làm điều này thực sự hiệu quả, đó là tốt hơn so với leo đồi bình thường? Thật khó để tin rằng việc sử dụng các giá trị bắt đầu ngẫu nhiên giúp ích rất nhiều, đặc biệt là đối với các không gian tìm kiếm khổng lồ. Chính xác hơn, tôi tự hỏi:
- Có một chiến lược tốt để chọn (đang triển khai ), đặc biệt là kết quả biết (trung gian) của các lần lặp trước không?
random_solution
- Làm thế nào để chọn , đó là cần bao nhiêu lần lặp lại để khá chắc chắn rằng giải pháp hoàn hảo không bị bỏ sót (nhiều)?