# python – how to loop all possible values when using scipy and why scipy does not respect constraints

First I have the simple below constraints + constraint 7 and 8

``````0<x(0)<1
0<x(1)<10
0<x(2)<10
``````

in my objective function I have constant that are represented as a list and I want to calculate all possible solution with variation of those constants.

So LGSR,LGRS,LGSS,LGPR,LGRP,LGPP represent constants in form of lists with Len=100 and contains random value

Example:

``````LGSR = (2.4,3.4,300.4,...)
``````

my objective if function is to maximize the minimum between two function, so the goal is to find the optimal value for `x(0),x(1),x(2)`.

so I want to test my code with every element of `LGSR,LGRS,LGSS,LGPR,LGRP,LGPP (100)`

the problem is that i figure out that the index of the for loop is displayed 10000 in my funcion instead of 100 solution.

the second thing is that the optimal solution of `x(0) x(1) x(2)` does not respect the constraints.

I’m getting negative value

`````` for x(0) x(1) x(2) instead of 0<x(0)<1, 0<x(1)<10, 0<x(2)<10
``````

the problem look like this with Nr = 1

with the three first contraints this one

this is my code :

``````   import numpy as np
from scipy.optimize import fmin_cobyla

import scipy
Pp=10
to=0.5
liste1 = ()

def constr1(x):
return 10 - x(1)
def constr2(x):
return x(1)
def constr3(x):
return 10 - x(2)
def constr4(x):
return x(2)
def constr5(x):
return 1 - x(0)
def constr6(x):
return x(0)

for i in range(0,len(LGSR)):
def objective(x,sig=-1):
print(i) # more then 100

return sig*(np.minimum((LGSR(i)*(1-x(0))*x(1))/(LGPR(i)*Pp+1),(LGSS(i)*x(1)+LGRS(i)*x(2)+2*(np.sqrt(LGRS(i)*LGSS(i)*x(0)*x(1)*x(2))))))

def A_():

return ((LGPP(i) * Pp )/((((1+LGPP(i)*Pp)**(1-to))-1)))

def constr7(x):
Res = (A_()-1)/(LGRP(i)*x(2))
if Res > 0 :
return Res
def constr8(x):
res1 = (A_()-1)
Res = res1-(LGRP(i)*x(2))
return Res

a= fmin_cobyla(objective, (0.5,5,6), (constr1, constr2,constr3,constr4,constr5,constr6,constr7,constr8), rhoend=1e-7)
liste1.append((a(0),a(1),a(2)))
``````