我正在寻找Julia中Matlab的lsqnonlin
函数的模拟。具有边界约束的非线性最小二乘法求解器
LsqFit.jl看起来不错,但不接受相同的论据Matlab的实现;具体为:
- 下界
- 上界
- 初始条件
其中初始条件,下,和上界是长度的矢量6.
任何意见将是真棒。谢谢!
我正在寻找Julia中Matlab的lsqnonlin
函数的模拟。具有边界约束的非线性最小二乘法求解器
LsqFit.jl看起来不错,但不接受相同的论据Matlab的实现;具体为:
其中初始条件,下,和上界是长度的矢量6.
任何意见将是真棒。谢谢!
其实,它只是没有在自述中解释(好的措施,这里是一个稳定的链接README.md)。
目前还不清楚你的初始条件是什么意思。如果你的意思是初始参数,这是非常有可能的。
using LsqFit
# a two-parameter exponential model
# x: array of independent variables
# p: array of model parameters
model(x, p) = p[1]*exp.(-x.*p[2])
# some example data
# xdata: independent variables
# ydata: dependent variable
xdata = linspace(0,10,20)
ydata = model(xdata, [1.0 2.0]) + 0.01*randn(length(xdata))
p0 = [0.5, 0.5]
fit = curve_fit(model, xdata, ydata, p0)
(摘自手册)。这里p0
是初始参数向量。
这会给你一些非常接近[1.0, 2.0]
。但是如果我们想限制参数在[0,1]x[0,1]
?然后我们只需设置关键字参数lower
和upper
到为下限向量和上界
fit = curve_fit(model, xdata, ydata, p0; lower = zeros(2), upper = ones(2))
这应该取决于你的确切数据给出类似[1.0, 1.0]
。
也许这不是一个正确的答案,但我在过去 已经取得了一些成功添加惩罚项的边界以外的成本函数,就像一个强有力的指数与步骤行为。缺点是手动定义你的成本函数,当然。