Bagaimana cara menghasilkan tetangga dalam algoritma mendaki bukit?

9

Mendaki bukit tampaknya menjadi alat yang sangat ampuh untuk optimasi. Namun, cara menghasilkan "tetangga" dari solusi selalu membingungkan saya.

Misalnya, saya mengoptimalkan solusi . Di sini berada dalam kisaran (0, 0,1) , x_2 dalam kisaran (0, 100) , x_3 dalam kisaran (0, 1000000) . Apa cara terbaik untuk menghasilkan "tetangga"? Saya tidak dapat memilih "ukuran langkah" di sini, karena ukuran langkah 1 besar untuk x_1 , tetapi sangat kecil untuk x_3 .x 1(x1,x2,x3)x1x 2 ( 0 , 100 ) x 3 ( 0 , 1000000 ) x 1 x 3(0,0.1)x2(0,100)x3(0,1000000)x1x3

Apa cara generik terbaik untuk menghasilkan "tetangga" dalam algoritma pendakian bukit?

Vendetta
sumber

Jawaban:

3

Solusi Vincent akan membantu Anda mengatasi rintangan pertama. Anda mungkin masih bertanya-tanya bagaimana cara memilih ukuran langkah bahkan jika semua dimensi memiliki kisaran yang sama. Dalam hal ini membantu memahami perilaku fungsi Anda sehingga Anda dapat memilih nilai yang sesuai. Cara lain adalah dengan mengatur ukuran langkah secara adaptif berdasarkan gradien (injak ringan jika fungsinya banyak berubah).

Makalah ini mungkin memiliki beberapa ide menarik juga: Pada Algoritma Panjat Tebing dengan Ukuran Langkah Adaptif: Menuju Parameter Kontrol-Lebih Sedikit Algoritma Optimalisasi Kotak Hitam

Emre
sumber
2

Cara termudah (dan paling aman) adalah reparametrize masalah Anda sehingga semua parameter memiliki rentang yang sebanding, katakan [0,1].

Atau, Anda dapat menggunakan ukuran langkah yang berbeda untuk setiap parameter.


sumber