我试图用模式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])
任何帮助都指出了这种分解(和修复)的原因或位置,我们将非常感激!
谢谢,
富