slsqp optimize opt help optimization scipy

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