在使用scipy进行优化时会使用很多约束;所以我需要循环生成约束。下面是我的约束示例:
cons = ({'type': 'ineq', 'fun': lambda x: -x[0] - 2 * x[1] + 2},
{'type': 'ineq', 'fun': lambda x: -x[1] - 2 * x[1] + 2},
{'type': 'ineq', 'fun': lambda x: -x[2] - 2 * x[1] + 2})
有超过三个约束... 我使用以下循环生成,但无法获得相同的输出。
cons ={}
for i in range(50):
cons['type'] = 'ineq'
cons['fun'] = lambda x: -x[i] - 2 * x[1] + 2
答案 0 :(得分:1)
您每次都在更新缺点。试试这个
_tmp = []
for i in range(50):
_tmp.append({'type':'ineq', 'fun': lambda x: -x[i] - 2 * x[1] + 2})
cons = tuple(_tmp)
这是更pythonic的
cons = tuple([{'type':'ineq', 'fun': lambda x: -x[i] - 2 * x[1] + 2} for i in range(50)])