对多个参数使用scipy优化库

2024-09-30 20:21:38 发布

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

我想最大化一个有50个变量的函数的返回值

def function_to_maximize:
    return (7.9*a1 + 8.1*a2 + 0.4*a3 + ........ + 2.6*a50)

我的变量是0<;=aN<;=10,变量之和是100。你知道吗

不幸的是,我不太熟悉这种任务。通过google我发现我可以使用这个documantation来完成工作,但是我不知道如何使用这个库。你知道吗

请您提供一个简单的注释,告诉我的步骤,我必须应用的示例代码?你知道吗


Tags: to函数ltana2returndefa1
1条回答
网友
1楼 · 发布于 2024-09-30 20:21:38

使用symfit,一个我为scipy制作的包装器,这变得更容易实现。所以请原谅我推荐你试一试。您可以在这里找到文档:http://symfit.readthedocs.io/en/latest/fitting_types.html#minimize-maximize

在你的情况下,我会做以下工作:

from symfit import parameters, Maximize, Equality

# Make your 50 parameters to optimize and their coefficients.
aN = parameters(', '.join('a{}'.format(i) for i in range(1, 51)))
coeff = [7.9, 8.1, ..., 2.6]

model = sum(coeff_i * a_i for a_i, coeff_i in zip(aN, coeff))
fit = Maximize(model, constraints=[Equality(sum(aN), 100)])
fit_result = fit.execute()

完成!你知道吗

另外,我担心这是一个欠定方程组,对吧?但你要担心的是:)。你知道吗

相关问题 更多 >