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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación General / Re: Duda python método optimización levenberg marquardt 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
2  Programación / Programación General / 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



Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines