optimization - help - scipy optimize minimize in python
scipy minimizar con restricciones (1)
Esta restricción
t[0] + t[1] = 1
sería una restricción de igualdad ( type=''eq''
), donde se hace una función que debe ser igual a cero:
def con(t):
return t[0] + t[1] - 1
Luego haces un dict
de tu restricción (lista de dicts si hay más de uno):
cons = {''type'':''eq'', ''fun'': con}
Nunca lo intenté, pero creo que para mantenerlo real, podrías usar:
con_real(t):
return np.sum(np.iscomplex(t))
Y haz que tus cons
incluyan ambas restricciones:
cons = [{''type'':''eq'', ''fun'': con},
{''type'':''eq'', ''fun'': con_real}]
Luego alimentas cons
para minimize
como:
scipy.optimize.minimize(func, x0, constraints=cons)
Sé que esta pregunta debería ser manejada en el manual de scipy.optimize, pero no la entiendo lo suficiente. Quizás puedas ayudar
Tengo una función (esto es solo un ejemplo, no la función real, pero necesito entenderla en este nivel):
Editar (mejor ejemplo):
Supongamos que tengo una matriz
arr = array([[0.8, 0.2],[-0.1, 0.14]])
con una función objetivo
def matr_t(t):
return array([[t[0], 0],[t[2]+complex(0,1)*t[3], t[1]]]
def target(t):
arr2 = matr_t(t)
ret = 0
for i, v1 in enumerate(arr):
for j, v2 in enumerate(v1):
ret += abs(arr[i][j]-arr2[i][j])**2
return ret
ahora quiero minimizar esta función objetivo bajo el supuesto de que t [i] son números reales, y algo como t[0]+t[1]=1