[pyar] Buscar máximo

Angel Java Lopez ajlopez2000 en gmail.com
Vie Ene 17 20:30:48 ART 2014


Ah! Ahi entendi, gracias, me falto leer bien el while true


2014/1/17 fisa <fisadev en gmail.com>

> No requiere saber si es izquierda o derecha. En cada iteración de ese
> while, se queda con el x que mejor f(x) tenga, y luego mira a los
> costados de ese nuevo x.
> Imaginemos una función donde el máximo está en x=10, y usamos el rango
> a=0, b=50.
>
> Actual arranca valiendo 25.
>
> Primera iteración:
>
> Vecinos serían 24.999 y 25.001.
> Mejor vecino sería 24.999, porque f crece hacia ese lado (máximo en x=10)
> f(mejor_vecino) es mayor que f(actual) (porque f(24.999) > f(25), f
> sube hacia la izquierda)
> Por lo que pasa a tener actual=24.999
>
> Segunda iteración:
>
> Vecinos serían 24.998 y 25.
> Mejor vecino sería 24.998
> f(mejor_vecino) es mayor que f(actual) (porque f(24.998) > f(24.999))
> Entonces actual=24.998
>
> Y así sucesivamente.
> Nunca necesitamos el concepto de "izquierda o derecha". Simplemente
> vamos quedándonos con el mejor x, y descubriendo nuevos x a partir de
> ese mejor, sucesivamente.
> Es un algoritmo probado, no es invento mío :)
>
>
>
> El día 17 de enero de 2014, 20:12, Angel Java Lopez
> <ajlopez2000 en gmail.com> escribió:
> > Ah, con respecto a hill_climbing, la direccionalidad se pierde si
> > hill_climbing devuelve el punto medio de a y b. No se sabe si el maximo
> > queda a la izquierda o a la derecha de ese punto.
> >
> >
> > 2014/1/17 Angel Java Lopez <ajlopez2000 en gmail.com>
> >>
> >> Si, pero parece que con vecinos(...), se pierde la direccionalidad. Al
> >> final, no se sabe si el maximo esta a la izquierda o a la derecha del
> >> resultado de hill_climbing. No veo claro como seguir explorando luego
> >>
> >>
> >> 2014/1/17 fisa <fisadev en gmail.com>
> >>>
> >>> El resultado de hill_climbing ya es un x cercano al x con máximo f(x),
> >>> no es que ese resultado deba usarse en futuras iteraciones.
> >>> Se llama solo una vez a hill_climbing, con a y b en los límites
> >>> definidos del problema :)
> >>>
> >>> El día 17 de enero de 2014, 20:05, Angel Java Lopez
> >>> <ajlopez2000 en gmail.com> escribió:
> >>> > Hmmm... pero que se hace con el resultado de la funcion
> hill_climbing?
> >>> > como
> >>> > se usa ese resultado en la proxima iteracion? Cuales son los a y b en
> >>> > la
> >>> > proxima iteracion?
> >>> >
> >>> >
> >>> > 2014/1/17 fisa <fisadev en gmail.com>
> >>> >>
> >>> >> 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
> >>> >> _______________________________________________
> >>> >> pyar mailing list pyar en python.org.ar
> >>> >> http://listas.python.org.ar/listinfo/pyar
> >>> >>
> >>> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>> >>
> >>> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
> de
> >>> >> Argentina - http://www.usla.org.ar
> >>> >
> >>> >
> >>> >
> >>> > _______________________________________________
> >>> > pyar mailing list pyar en python.org.ar
> >>> > http://listas.python.org.ar/listinfo/pyar
> >>> >
> >>> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>> >
> >>> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
> de
> >>> > Argentina - http://www.usla.org.ar
> >>>
> >>>
> >>>
> >>> --
> >>> fisa  -  Juan Pedro Fisanotti
> >>> _______________________________________________
> >>> pyar mailing list pyar en python.org.ar
> >>> http://listas.python.org.ar/listinfo/pyar
> >>>
> >>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>>
> >>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> >>> Argentina - http://www.usla.org.ar
> >>
> >>
> >
> >
> > _______________________________________________
> > pyar mailing list pyar en python.org.ar
> > http://listas.python.org.ar/listinfo/pyar
> >
> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
>
>
>
> --
> fisa  -  Juan Pedro Fisanotti
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140117/5fffe11e/attachment-0001.html>


More information about the pyar mailing list