繁体   English   中英

Fminbox约束优化Julia

[英]Fminbox Constrained Optimisation Julia

当我运行下面的代码时,fminbox或Optim.autodiff函数似乎都创建了一个类型为Array {Dual {Float64},1}的向量,因为我收到错误消息“ fbellmanind没有与... Array {Dual {Float64 },1}”。 我已经指定函数fbellmanind接受Array {Any,1}但没有运气。 有任何想法吗?

function fbargsolve(x::Vector)
 fbellmanind(probc,EV,V,Ind,x,V0,VUnemp0,Vnp,Vp,q,obj,assets,EmpState,i)
 fbellmanfirm(probc,poachedwage,minw,x,jfirm1,jfirm0,Ind,i)
 @inbounds for ia in 1:na
  Vnp[ia]=V[ia]
  Indnp[ia]=Ind[ia]
  firmratio[ia]=jfirm1[ia]/jfirmres[ia]
  hhratio[ia]=((Vnp[ia]-VUnemp0[ia])/(Vp[ia]-VUnemp0[ia]))
  end
  Crit_bwr=vnormdiff(firmratio,hhratio,Inf)
  return Crit_bwr
end

f=fbargsolve 
df = Optim.autodiff(f, Float64, na)
x0=vec(bargwage0)
l=vec(max(reswage,minw))
u=vec(poachedwage*ones(na))

sol=fminbox(df,x0,l,u)

参考Julia文档中非常重要的一段

朱莉娅的类型参数是不变的。

您至少可以遵循以下两种可能的解决方案:

1-更改函数声明,最好是显式使用正确的数据类型Array{Dual{Float64},1}但如果您喜欢通用的方法,请执行以下操作:

使用参数数据类型:

julia> function fbellmanind{T}(::Array{T,1})
  "OK"
end
julia> fbellmanind(["test"])
 "OK"

2-类型转换您的论点

julia> function fbellmanind(::Array{Any,1})
  "OK"
end
julia> fbellmanind(Any["test"])
 "OK"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM