[pyar] Buscar máximo

fisa fisadev en gmail.com
Vie Ene 17 19:59:36 ART 2014


El día 17 de enero de 2014, 19:46, Alejandro Santos
<listas en alejolp.com> escribió:
> 2014/1/17 fisa <fisadev en gmail.com>:
>> Ah! leí mal. Si no puede tener varios máximos locales, entonces hago
>> un hill climbing normal, que es suficiente :)
>>
>
> Es la primera vez que escucho del Hill Climbing. ¿Cómo sería en código? :D
>

Algo así (versión amoldada a este problema en especial):

def hill_climbing():
    actual = (a + b) / 2  # medio entre a y b
    while True:
        mejor_vecino = vecino con f más alto en vecinos(actual)
        if f(actual) > f(mejor_vecino):
            return actual
        else:
            actual = mejor_vecino

def vecinos(x):
    return (x + 0.001, x - 0.001)

Como decía, elegiría esto nomás por gusto. No es una solución exacta,
ni el algoritmo más eficiente. Pero es entretenido y simple, y en
muchos casos "good enough" :)
Básicamente lo que hace es moverse de costado por el eje x, para el
lado que ve que sube el valor de f(x), hasta que encuentra un punto
donde para ninguno de los dos costados sube el valor de f (mirando de
a saltos de 0.001 en x).

Saludos!

-- 
fisa  -  Juan Pedro Fisanotti


More information about the pyar mailing list