【发布时间】:2019-12-31 16:51:59
【问题描述】:
我正在尝试运行以下代码 sn-p 来拟合一些经验数据的曲线,但是 Julia Optim.jl 包中的 optimize() 方法一直存在问题。我正在使用 Julia v1.1.0 并安装了所有正确的软件包。我不断收到的错误是:
ERROR: LoadError: MethodError: no method matching optimize(::getfield(Main, Symbol("##13#14")), ::Array{Float64,1}, ::Array{Int32,1}, ::Array{Float64,1}, ::Fminbox{LBFGS{Nothing,LineSearches.InitialStatic{Float64},LineSearches.HagerZhang{Float64,Base.RefValue{Bool}},getfield(Optim, Symbol("##19#21"))},Float64,getfield(Optim, Symbol("##43#45"))})
这是我的代码:
# Loading in dependencies
using Distributions # To use probability & statistics library
using Plots # To visualize results
using Optim # For minimization (curve fitting)
# Empirical data for curve fitting
IM = [1, 2, 3, 4] # x axis variables
pfs = [0.0, 0.0, 0.13, 0.23] # associated probabilities y-axis
n = 1000 # assume this number of independent trials for each x value
# Create functions to evaluate fit between theoretical values and empirical values
theor_vals = x -> cdf.(LogNormal(log(x[1]), x[2]), IM) # Assume lognormal shape and construct CDF with arbitrary fit parameters
likelihood = x -> [pdf(Binomial(n,xx[1]), round(xx[2])) for xx in zip(theor_vals(x),n.*pfs)] # getting likelihood values from binomial distribution for n trials
log_likelihood = x -> log.([xi > 0 ? xi : 1e-30 for xi in likelihood(x)]) # getting log value of likelihood
min_function = x -> -sum(log_likelihood(x)) # summing and switching sign for optimization
# Set inputs for minimization - first index is for the median and second index is for the dispersion (uncertainty)
init_guess = [median(IM), 0.5] # reasonable initial guess
lx = [0.001, 5.0] # lower bound
ux = [5,10] # upper bound
# Using Optim to optimize the objective function and get best curve fit
result = optimize(min_function, lx, ux, init_guess, Fminbox(LBFGS())) # call optimize function
theta, beta_a = result.minimizer # retrieve lognormal fit params
我还在熟悉 julia 语言,所以很可能我只是没有正确理解文档。提前感谢您提供的任何帮助或指导!
【问题讨论】:
-
LBFGS来自哪里? -
如果您将所有匿名函数改为常规命名函数,则错误消息可能会让您更好地指示哪个函数引发了方法错误。
-
另外,错误信息的其余部分是什么?
标签: optimization runtime-error julia mathematical-optimization