通过对非优化变量的约束来最小化函数

时间:2017-09-28 15:36:18

标签: python optimization

我需要通过对变量的约束来优化函数,该变量通过求解一组方程来计算。

优化参数是方程组的输入变量,其中一个计算变量有约束条件。

这是一个极其简化的例子:

def opt(x):
    x1, x2, x3 = x

    z1 = x1 + x2 + x3
    z2 = z1**2
    .
    .
    .
    z100 = f(x1, x2, x3, z1, ..., z99)

    return some objective function

最小化opt(x)
S.T. z100<一个

我熟悉scipy.optimize.minimize但我无法在z100上设置约束,并且仅使用变量z100计算x1, x2, x3的函数非常困难。

1 个答案:

答案 0 :(得分:0)

这是非常广泛的,但有些评论:

  • and it is extremely difficult to calculate a function for z100 with only the variables x1, x2, x3
    • 问题出在哪里?只需使用调用内的args-argument即可最小化,您可以使用所需的所有对象
  • I am familiar with scipy.optimize.minimize but I can not set a constraint on z100
    • 这有点牵连,z100取决于优化变量(这使得它成为与标题相对的优化变量的约束;或者根本没有影响/理由使用它只修改opt-vars而没有先验约束逻辑受影响)
    • 只需引入辅助变量y0和约束:
      • y0 < a
      • y0 == f(...)
      • 但是:这可能与求解器关于平滑度的假设相矛盾(当然取决于f)。所以你可能应该再考虑一下你的问题(对我们来说没有什么可做的,因为这个问题的结构没有发布)。
      • 而且: eq-constraints有时在数字问题方面有点麻烦