【发布时间】:2019-08-30 01:05:30
【问题描述】:
我有以下由变量 n 参数化的优化代码。
from symfit import parameters, Eq, Ge, Fit
import numpy as np
n = 3
xdata = np.sort(np.random.choice(range(1, 4*n), n)) # Make fake data
print(xdata)
p1, p2, p3 = parameters('p1, p2, p3')
model = p1*p2*p3
constraints = [
Eq(xdata[0]*p1+(xdata[1]-xdata[0])*p2+(xdata[2]-xdata[1])*p3, 1),
Ge(p1, p2),
Ge(p2, p3),
Ge(p3, 0)
]
fit = Fit(- model, constraints=constraints)
fit_result = fit.execute()
print(fit_result)
我想将它用于更大的 n 值,但我不知道如何更改线条
p1, p2, p3 = parameters('p1, p2, p3')
model = p1*p2*p3
和constraints 来应对任意大的n。
代码使用symfit 库。该链接显示了如何使用 parameters 的示例以及文档链接。
如何做到这一点?
【问题讨论】:
-
p1, p2, p3 = parameters('p1, p2, p3')这条线对我来说很模糊...可以做一个不包括那些库的minimal reproducible example 吗? (它可以帮助你也可以帮助我) -
@UlysseBN 问题是这条线是我问题的关键。我将添加相关文档的链接。