gpt4 book ai didi

python - Scipy,优化具有参数依赖约束的函数

转载 作者:太空狗 更新时间:2023-10-30 02:43:59 26 4
gpt4 key购买 nike

我正在尝试使用 scipy.optimize.minimize 的负数最大化函数 f (a, b, c, d) . dnumpy.array猜测变量。

我正在尝试对每个 d 设置一些界限.还有对每个 d 的约束这样 (d1 * a1 + d2 * a2 + ... + d3 * a3) < some_Value ( a 是主题函数 f 的另一个参数)。

我的问题是如何将此约束定义为最大化函数的参数。

我找不到任何 maximize库中的函数,所以我们使用 minimize 的负数与 minimize文档超过 here .

如果问题不够清楚,请考虑要求澄清。

最佳答案

从您的描述中不能完全清楚您正在优化 f 的哪些参数。出于本示例的目的,我将使用 x 来指代您正在优化的参数向量,并使用 a 来指代相同参数的另一个参数向量长度保持不变。

现在假设您想强制执行以下不等式约束:

10 <= x[0] * a[0] + x[1] * a[1] + ... + x[n] * a[n]

首先,您必须定义一个接受xa 的函数,并在满足约束条件时返回一个非负值。在这种情况下,我们可以使用:

lambda x, a: (x * a).sum() - 10

或等同于:

lambda x, a: x.dot(a) - 10

约束被传递到一个字典中最小化(如果你有多个约束要应用,则传递一系列字典):

con = {'type': 'ineq',
'fun': lambda x, a: a.dot(x) - 10,
'jac': lambda x, a: a,
'args': (a,)}

为了提高效率,我还定义了一个返回 Jacobian 的函数(约束函数的偏导序列 w.r.t. x 中的每个参数),尽管这不是必需的 - 如果未指定它将通过一阶有限差分进行估计。

您对 minimize 的调用将类似于:

res = minimize(f, x0, args=(a,), method='SLSQP', constraints=con)

您可以在官方文档中找到另一个使用 SLSQP 进行约束优化的完整示例 here .

关于python - Scipy,优化具有参数依赖约束的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com