def mixed(x0, func=rosenbrock(30, 2, 80), eps=0.0000000001):
rb = 0.5
Cb = 10
r = 1
C = 10
cons = constraints()
while True:
bar = barier(rb, cons)
pen = penalty(r, cons)
added = lambda x: pen(x) - bar(x)
f = lambda x: func(x) + added(x)
x0 = scipy.optimize.minimize(f, x0, method='CG').x
if abs(added(x0)) <= eps:
return x0
else:
rb = rb / Cb
r = r * C