Come generare vicini nell'algoritmo di arrampicata in collina?


9

L'arrampicata su collina sembra essere uno strumento molto potente per l'ottimizzazione. Tuttavia, come generare i "vicini" di una soluzione mi confonde sempre.

Ad esempio, sto ottimizzando una soluzione . Qui x 1 è nell'intervallo ( 0 , 0,1 ) , x 2 è nell'intervallo ( 0 , 100 ) , x 3 è nell'intervallo ( 0 , 1000000 ) . Qual è il modo migliore per generare "vicini"? Non riesco davvero a scegliere una "dimensione del passo" qui, perché una dimensione del passo da 1 è enorme a x 1 , ma molto minore a x 3(x1,x2,x3)x1(0,0.1)x2(0,100)x3(0,1000000)x1x3.

Qual è il miglior modo generico per generare "vicini" negli algoritmi di arrampicata?

Risposte:


3

La soluzione di Vincent ti farà superare il primo ostacolo. Potresti ancora chiederti come selezionare la dimensione del passo anche se tutte le dimensioni hanno lo stesso intervallo. In tal caso aiuta a capire il comportamento della tua funzione in modo da poter selezionare un valore appropriato. Un altro modo è impostare in modo adattivo le dimensioni del gradino in base al gradiente (procedere leggermente se la funzione sta cambiando molto).

Questo documento potrebbe avere anche alcune idee interessanti: su un algoritmo di arrampicata in salita con passo adattivo: verso un algoritmo di ottimizzazione senza scatola nera senza parametri di controllo


2

Il più semplice (e più sicuro) è la riparametrizzazione del problema in modo che tutti i parametri abbiano un intervallo comparabile, diciamo [0,1].

In alternativa, è possibile utilizzare una dimensione del passo diversa per ciascun parametro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.