Articles of optimization

Encontrar todos los divisores de una optimización numérica.

He escrito la siguiente función que encuentra todos los divisores de un número natural dado y los devuelve como una lista: def FindAllDivisors(x): divList = [] y = 1 while y <= math.sqrt(x): if x % y == 0: divList.append(y) divList.append(int(x / y)) y += 1 return divList Funciona realmente bien con la excepción de […]

Optimización SciPy con límites agrupados.

Estoy tratando de realizar una optimización de cartera que devuelve los pesos que maximizan mi función de utilidad. Puedo hacer esta parte bien, incluida la restricción de que los pesos se sumn a uno y que los pesos también me dan un riesgo objective. También he incluido límites para [0 <= pesos <= 1]. Este […]

Progtwig de resolución cuadrática (QP) que solo depende de NumPy / SciPy?

Me gustaría que los estudiantes resuelvan un progtwig cuadrático en una tarea sin que tengan que instalar software adicional como cvxopt, etc. ¿Hay alguna implementación de Python disponible que solo dependa de NumPy / SciPy?

scipy no está optimizando y devuelve “El error deseado no se logra necesariamente debido a una pérdida de precisión”

Tengo el siguiente código que intenta minimizar una función de probabilidad de registro. #!/usr/bin/python import math import random import numpy as np from scipy.optimize import minimize def loglikelihood(params, data): (mu, alpha, beta) = params tlist = np.array(data) r = np.zeros(len(tlist)) for i in xrange(1,len(tlist)): r[i] = math.exp(-beta*(tlist[i]-tlist[i-1]))*(1+r[i-1]) loglik = -tlist[-1]*mu loglik = loglik+alpha/beta*sum(np.exp(-beta*(tlist[-1]-tlist))-1) loglik = […]

Caso de error de optimización de adición de cadena CPython

La pregunta ¿Por qué, en CPython, hace def add_string(n): s = ” for _ in range(n): s += ‘ ‘ tomar tiempo lineal, pero def add_string_in_list(n): l = [”] for _ in range(n): l[0] += ‘ ‘ tomar tiempo cuadrático? Prueba: Timer(partial(add_string, 1000000)).timeit(1) #>>> 0.1848409200028982 Timer(partial(add_string, 10000000)).timeit(1) #>>> 1.1123797750042286 Timer(partial(add_string_in_list, 10000)).timeit(1) #>>> 0.0033865350123960525 Timer(partial(add_string_in_list, 100000)).timeit(1) […]

¿Cómo calcular el peso para minimizar la varianza?

dados varios vectores: x1 = [3 4 6] x2 = [2 8 1] x3 = [5 5 4] x4 = [6 2 1] Quiero encontrar el peso w1, w2, w3 para cada elemento y obtener la sum ponderada de cada vector: yi = w1*i1 + w2*i2 + w3*i3 . por ejemplo, y1 = 3*w1 + […]

Método para encontrar una solución estrictamente mayor que cero para la Progtwigción lineal Scipy de Python

Scipy NNLS realiza esto: Solve argmin_x || Ax – b ||_2 for x>=0. ¿Cuál es la forma alternativa de hacerlo si busco una solución estrictamente distinta de cero (es decir, x > 0 )? Aquí está mi código LP usando el NNLS de Scipy: import numpy as np from numpy import array from scipy.optimize import […]

Herramientas de optimización PNG

Hace un tiempo, utilicé un servicio de optimización PNG llamado (creo) “smush it”. Lo alimentaste con un enlace web y devolvió un zip de todas las imágenes PNG con sus tamaños de archivo muy bien, bueno, sonrió … Quiero implementar una función de optimización similar como parte del proceso de carga de imágenes de mi […]

Mejora de la eficiencia del código: desviación estándar en ventanas deslizantes

Estoy tratando de mejorar la función que calcula para cada píxel de una imagen la desviación estándar de los píxeles ubicados en la vecindad del píxel. Mi función utiliza dos bucles incrustados para ejecutarse a través de la matriz, y es el cuello de botella de mi progtwig. Supongo que es probable que haya una […]

La mejor manera de pasar un parámetro repetido a una función vectorizada Numpy

Entonces, continuando de la discusión que tuvimos en esta respuesta @TheBlackCat y yo, me gustaría saber la mejor manera de pasar argumentos a una función vectorizada Numpy. La función en cuestión se define así: vect_dist_funct = np.vectorize(lambda p1, p2: vincenty(p1, p2).meters) donde, vincenty viene del paquete Geopy . Actualmente llamo a vect_dist_funct de esta manera: […]