elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Duda python método optimización levenberg marquardt
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda python método optimización levenberg marquardt  (Leído 2,981 veces)
Quini sb

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Duda python método optimización levenberg marquardt
« en: 5 Septiembre 2016, 05:27 am »




Buenas noches.

Tengo una duda en como usar el metodo de optimizacion levenberg marquardt en python

En la libreria scipy vienen varios de estos metodos --> http://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html

He probado dos metodos(nelder-mead y basinhopping) y funcionan correctamente con la siguiente sentencia:

Nelder mead ---> res0_10 = optimize.minimize(f0_10, x0, method='Nelder-Mead', options={'disp': True, 'maxiter': 2000})


Basinhopping ---> res0_10 = optimize.basinhopping(f0_10, x0, niter=100, disp=True)


El problema surge cuando uso el Levenberg-Marquardt(copio solo la parte del error, el programa es largo por eso no copio el resto):

def f0_10(x):
m, u, z, s = x
for i in range(alt_max):
if i==alt_min: suma=0
if i > alt_min:
suma = suma + (B(x, i)-b0_10(x, i))**2
return np.sqrt(suma/alt_max)

x0 = np.array([40., 0., 500., 50.])

res0_10 = root(f0_10, x0, jac=True, method='lm')


El programa compila bien, pero ahora de ejecutar, me surge el siguiente error:


Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Quini SB\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.7.4.3348.win-x86_64\lib\lib-tk\Tkinter.py", line 1536, in __call__
return self.func(*args)
File "C:\Users\Quini SB\Desktop\tfg\Steyn - levmar.py", line 384, in askopenfilename
res0_10 = root(f0_10, x0, jac=True, method='lm')
File "C:\Users\Quini SB\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy\optimize\_root.py", line 188, in root
sol = _root_leastsq(fun, x0, args=args, jac=jac, **options)
File "C:\Users\Quini SB\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy\optimize\_root.py", line 251, in _root_leastsq
factor=factor, diag=diag)
File "C:\Users\Quini SB\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy\optimize\minpack.py", line 377, in leastsq
shape, dtype = _check_func('leastsq', 'func', func, x0, args, n)
File "C:\Users\Quini SB\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy\optimize\minpack.py", line 26, in _check_func
res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
File "C:\Users\Quini SB\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy\optimize\optimize.py", line 64, in __call__
self.jac = fg[1]
IndexError: invalid index to scalar variable.







No tengo muy claro a que se debe, soy estudiante y lo necesito para el TFG, pero mi profesor no controla python, asi que probablemente sera una tonteria, pero no soy capaz de solucionarlo

Ante todo, muchas gracias y un saludo

Pd: no veo Subforos de python, si este lenguaje no se trata en este foro disculparme





En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Duda python método optimización levenberg marquardt
« Respuesta #1 en: 5 Septiembre 2016, 07:13 am »

hay un foro de python en scripting.
Con respecto a tu problema no se nada del módulo que usas y que hace,  pero te diré algunos comentarios:
1- cuando usas
Código
  1. def f0_10(x):
  2.  
¿está dentro de una clase para el uso de tkinter?
2-
Código
  1. x0 = np.array([40., 0., 500., 50.])
si eso es una línea de código me parece muy raro el uso de "." después de cada número
3-
Código
  1. res0_10 = root(f0_10, x0, jac=True, method='lm')
  2.  

root es una función que desconozco, pero da toda la sensación de estar mal declarada en sus parametros.
igual si querés mandame una copia del script completo y sería más fácil revisarlo(además aprendo algo nuevo)


En línea

Quini sb

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Duda python método optimización levenberg marquardt
« Respuesta #2 en: 5 Septiembre 2016, 11:44 am »

Agradeceria si algun moderador lo mueve a su correspondiente lugar

1 Si

2 Si es linea de codigo, lo hago asi para forzar que sean numeros reales(constumbre de programacion, no se si en este lenguaje son directamente reales, vengo de otro en que por defecto son enteros)

3 El error viene de ahi, cambiando el metodo de optimizacion(solo esa sentencia) funciona correctamente

Te lo envio por mensaje, gracias y un saludo


EDITO: te lo he mandado al correo, pues el mensaje excedia los 100.000 caracteres
No te asustes, es culpa del fichero de prueba para ejecutar el programa jajaja
« Última modificación: 5 Septiembre 2016, 12:05 pm por Quini sb » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] invocar metodo desde metodo.
Scripting
Hesp 2 7,331 Último mensaje 8 Marzo 2009, 00:38 am
por Hesp
[Python]Problema al ejecutar metodo principal
Scripting
Debci 3 5,906 Último mensaje 10 Septiembre 2010, 17:15 pm
por Debci
Duda con un método de optimización de HD Intel Graphics
Hardware
eleon 1 2,991 Último mensaje 26 Junio 2012, 00:08 am
por Aprendiz-Oscuro
[AYUDA][PYTHON] Necesito ayuda con el metodo SEARCH del modulo RE de python
Scripting
Noxware 2 4,148 Último mensaje 24 Mayo 2014, 16:11 pm
por Noxware
Método duplicado en herencia con python.-
Scripting
El mas antiguo 5 3,934 Último mensaje 29 Septiembre 2022, 14:17 pm
por El mas antiguo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines