我想最小化具有多个输入但多输出的功能。更具体地说,我称之为Excel计算,并希望约束函数的特定输入和输出。到目前为止,我只是设法最小化标量函数,意味着多输入,但只有一个输出。如果Python / Scipy可以解决这样的问题,有人可以指导我吗?我想选择x使smpkt最小化,A小于特定值。
例如一些代码片段:
def f1(x,params):
y=F(x)
函数F(x)
是一个带有多个输入和输出的外部Excel工作表,输出应为y = [smpkt,A]。现在,我想通过选择smpkt
来最小化A
并使x
小于我的约束。
到目前为止,我设法通过以下调用将y=F(x)
y = [smpkt]最小化为标量:
res = optimize.minimize(f1, x0, args=params, method='COBYLA',options={'ftol': 0.1, 'maxiter': 5})
有什么想法吗?
答案 0 :(得分:0)
注意:我不确定以下是否符合您的要求。特别是,你说"我想保持变量" A"小于特定值。",与&#34不同;我想选择x
,以便A
尽可能小。"。对于它的价值,这里是对你的问题的一种解释的答案。
如果您希望最小化输出的一个组成部分,请根据您对该功能f1
的评论建议(并且您不能只修改f1
以仅返回A),您和# 39; ll需要将现有函数包装在另一个调用f1
的函数中,并返回A
(假设A
实际上是标量)。
E.g。
def objective_function(x, params):
smpkt, A = f1(x, params)
return A
您可以使用lambda
表达式更简洁地完成相同的效果:
res = optimize.minimize(lambda x, params: f1(x, params)[1],
x0, args=params, method='COBYLA',
options={'ftol': 0.1, 'maxiter': 5})