Scipy.Optimize.Minimize动态约束问题

时间:2018-06-05 12:28:49

标签: python scipy

我试图用模式x [i-1]<写出动态约束列表。 x [i]具有未知长度的i。

到目前为止,我已经非动态地尝试过了:

cons = [{'type':'eq', 'fun': lambda x: x[0]-1},
        {'type':'ineq','fun': lambda x: x[0]-x[1]},
        {'type':'ineq','fun': lambda x: x[1]-x[2]},
        {'type':'ineq','fun': lambda x: x[2]-x[3]},]

这很好用。当我尝试动态循环时,它在i为2或3时有效,但在> = 4

时失败
cons2 =[{'type':'eq', 'fun': lambda x: x[0]-1}]

for j in range(1,periods):
    a = {'type':'ineq', 'fun': lambda x: x[j-1] - x[j]}
    cons2.append(a)

i = 2(两者)时的输出

x: array([1.        , 0.32822429])

i = 3(两者)时的输出

x: array([1.        , 0.41383429, 0.41383429])

i = 4时的输出(动态编码)

x: array([1.        , 0.15914709, 0.56579436, 0.56579436])

i = 4时的输出(硬编码)

x: array([1.        , 0.43127982, 0.43127982, 0.43127982])

任何帮助都指出了这种分解(和修复)的原因或位置,我们将非常感激!

谢谢,

0 个答案:

没有答案