使用循环生成用于Scipy优化的约束

时间:2019-04-26 22:27:55

标签: python numpy scipy

在使用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

1 个答案:

答案 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)])