pyOpt multi-objective minimax 示例

pyOpt multi-objective minimax example

抽象待解题:

我们有 n 个 d 维设计变量,比如说 {k_0, k_1, ..., k_n}

最大化 [f(k_0), f(k_1), ... f(k_n)] 的最小值,其中 f() 是一个非线性函数,即最大最小值

constraint: mean([k_0, k_1, ...,k_n])==m, m 已知常数

有人可以举例说明如何通过 pyOpt 解决这个问题(最大最小值、d-dim 变量)吗?

编辑: 我试过这个:

import scipy as sp
from pyOpt.pyOpt_optimization import Optimization
from pyOpt.pyALPSO.pyALPSO import ALPSO
def __objfunc(x,**kwargs):
    f=min([x[0]+x[1],x[2]+x[3]])
    g=[0.0]
    g[0]=(((x[0]+x[1])+(x[2]+x[3]))/2.0)-5
    fail=0
    return f,g,fail

if __name__=='__main__':
    op=Optimization('test', __objfunc)
    op.addVarGroup('p0',4,type='c')
    op.addObj('f')
    op.addCon('ineq','i')
    o=ALPSO()
    o(op)
    print(op._solutions[0])

假设二维设计变量

有没有更好的方法?

我可能会重新表述为:

您使用的 min() 函数是 non-differentiable(因此很危险)。 mean() 函数也可以用线性约束代替(这更容易)。

我不熟悉 ALPSO 求解器,但这种重新表述通常对 SNOPT、NLPQL 和 FSQP 等更传统的求解器有帮助。