无法使用for循环传递多个约束

时间:2017-10-21 11:42:01

标签: python for-loop constraints minimize

我正在尝试使用两个约束来最小化函数:x[0] > 1, x[1] > 1

如果我将它们作为元组传递(在下面的代码中注释掉),我得到了正确的答案(即(1,1))。

但是,如果我在for循环中传递它们,似乎忽略了第一个约束(x[0] > 1)。我得到答案为(0,1)。

我错过了什么?

from scipy.optimize import minimize

def costFunction(x):
    f = x[0]**2 + x[1]**2
    return f

cons = []
n = 2
for i in range(n):
    cons.append({'type': 'ineq', 'fun': lambda x: x[i] - 1})

# cons = ({'type': 'ineq', 'fun': lambda x: x[0] - 1},
#         {'type': 'ineq', 'fun': lambda x: x[1] - 1})

x0 = [0,0]
sol = minimize(costFunction, x0, constraints = cons)
print(sol['x'])

感谢。

0 个答案:

没有答案