如何在scipy优化(python 2.7)中定义变量之间的相互依赖性?

如何在scipy优化(python 2.7)中定义变量之间的相互依赖性?,python,optimization,scipy,Python,Optimization,Scipy,我需要优化一个由多个元素组成的复杂函数,这些元素以类似于xi=1和0之和的方式相互依赖。在您的情况下,我认为您希望通过f_eqcons参数进一步定义一个等式函数约束。它需要是一个可调用函数,并且在成功优化的问题中,它应该返回0(或只包含0的数组)。下面是您的示例: import scipy.optimize as ss def f(x): x1, x2, x3, x4, x5=x return -np.mean(x1*x2*x3*x4*x5)*np.std(x1+x2-x3+x4

我需要优化一个由多个元素组成的复杂函数,这些元素以类似于xi=1和0之和的方式相互依赖。在您的情况下,我认为您希望通过
f_eqcons
参数进一步定义一个等式函数约束。它需要是一个可调用函数,并且在成功优化的问题中,它应该返回0(或只包含0的数组)。下面是您的示例:

import scipy.optimize as ss
def f(x):
    x1, x2, x3, x4, x5=x
    return -np.mean(x1*x2*x3*x4*x5)*np.std(x1+x2-x3+x4-x5)

x0=(0.5, 0.5, 0.5, 0.5, 0.5)

def eq_f(x):
    x1, x2, x3, x4, x5=x
    return sum(x)

res=ss.fmin_slsqp(f, x0, f_eqcons=eq_f, bounds = ((0, 1),(0, 1), (0, 1),(0, 1),(0, 1)))
结果:

Optimization terminated successfully.    (Exit mode 0)
            Current function value: -0.0
            Iterations: 1
            Function evaluations: 8
            Gradient evaluations: 1
In [11]:

res
Out[11]:
array([  0.00000000e+00,   5.55111512e-17,   0.00000000e+00,
         0.00000000e+00,   0.00000000e+00])

试着说出你的全部代码,让那些想帮助你的人感到厌烦。缩小范围。@Korem,谢谢你的反馈。我改变了我的问题。你试过把x100放在arg返回中吗?@user189,现在我试过了,但我不需要。我需要知道r的最大值,条件x1+x2+x3+x4+x5=1,范围0中的每个x在本页上有一个这样的约束示例。
Optimization terminated successfully.    (Exit mode 0)
            Current function value: -0.0
            Iterations: 1
            Function evaluations: 8
            Gradient evaluations: 1
In [11]:

res
Out[11]:
array([  0.00000000e+00,   5.55111512e-17,   0.00000000e+00,
         0.00000000e+00,   0.00000000e+00])