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 等更传统的求解器有帮助。
抽象待解题:
我们有 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 等更传统的求解器有帮助。