使用python优化具有多个输出的函数scipy.optimize.minimize公司

2024-06-16 13:04:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在网上搜索了一下,没有找到任何解决这个问题的方法,所以我决定在这里正式提问。在

我有一个有多个输出的函数:

f(input1,input2,... ,inputn) = output1,ouput2,output3

我希望最小化output1约束其他输出,例如:

^{pr2}$

我的想法是有以下程序结构:

def function(input1,input2,...,inputn):
    #very secret part of code
    return(output1,ouput2,output3)

inputs=[1,31,22]
_res = optimize.minimize(function, inputs,  method='nelder-mead', 
options=options,*constraints*)

现在我认为答案应该在Scipy^{}函数的文档中找到。在

事实上,据我所知,我只能约束我的函数输入,而不能约束函数的某些输出。我错过了什么?在


Tags: 方法函数deffunctionveryoptionsinputspr2
1条回答
网友
1楼 · 发布于 2024-06-16 13:04:37

下面是一个带约束的优化示例:

from scipy.optimize import minimize

def f(xy):
    x, y = xy 
    return x**2 + y**2

def constraint1(xy):
    x, y = xy 
    return x-1

def constraint2(xy):
    x, y = xy 
    return y-2

constraints = ({'type': 'ineq', 'fun': constraint1},
               {'type': 'ineq', 'fun': constraint2})

xy_start = [0, 0]
res = minimize(f, xy_start, method='SLSQP', constraints=constraints)

它给出了:

^{pr2}$

其思想是要最小化的函数是标量良好的:返回的值必须是output1。为了定义每个约束,必须添加其他函数:constraint1(inputs)->output2constraint2(inputs)->output3。。。等等

也许你可以把代码的“非常秘密的部分”分成不同的函数,目标函数和约束函数都会用到这些函数

相关问题 更多 >