# scipy minimize with constraints

Each Answer to this Q is separated by one/two green lines.

I know that this question should be handled in the manual of scipy.optimize, but I don’t understand it well enough. Maybe you can help

I have a function (this is just an example, not the real function, but I need to understand it at this level):

Edit (better example):

Let’s suppose I have a matrix

``````arr = array([[0.8, 0.2],[-0.1, 0.14]])
``````

with a target function

``````def matr_t(t):
return array([[t, 0],[t+complex(0,1)*t, t]]

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
``````

now I want to minimize this target function under the assumption that the t[i] are real numbers, and something like `t+t=1`

This constraint

``````t + t = 1
``````

would be an equality (`type="eq"`) constraint, where you make a function that must equal zero:

``````def con(t):
return t + t - 1
``````

Then you make a `dict` of your constraint (list of dicts if more than one):

``````cons = {'type':'eq', 'fun': con}
``````

I’ve never tried it, but I believe that to keep `t` real, you could use:

``````con_real(t):
return np.sum(np.iscomplex(t))
``````

And make your `cons` include both constraints:

``````cons = [{'type':'eq', 'fun': con},
{'type':'eq', 'fun': con_real}]
``````

Then you feed `cons` into `minimize` as:

``````scipy.optimize.minimize(func, x0, constraints=cons)
`````` The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .