Я пытаюсь минимизировать функцию (довольно сложная, без аналитической формы). Сначала я изменил его и запустил следующее:
using Optim
x0= [.1, .3, 1/3, .75]
f(x) = prstream_res(x[1],x[2],x[3],x[4])
z= optimize(f, x0)
, что дает мне безусловное решение. Однако решение, которое находит Джулия, не имеет смысла в реальном мире (некоторые аргументы минимизатора отрицательны).
Мне нужно ограничить решение только положительными значениями. На самом деле, я могу дать нижнюю и верхнюю границу результирующих параметров.
Я пытался:
f(x) = prstream_res(x[1],x[2],x[3],x[4])
lower= [0, 0, 0, 0]
upper= [1, 1, 1, 1]
x0= [.1, .3, 1/3, .75]
inner_optimizer = GradientDescent()
results = optimize(f, lower, upper, x0, Fminbox(inner_optimizer))
, но это не работает, бросая
ERROR: MethodError: no method matching optimize(::typeof(f), ::Array{Int64,1}, ::Array{Int64,1}, ::Array{Float64,1}, ::Fminbox{GradientDescent{InitialPrevious{Float64},HagerZhang{Float64,Base.RefValue{Bool}},Nothing,Optim.var"#13#15"},Float64,Optim.var"#43#45"})
Может кто-нибудь помочь мне ограничить решение?
Заранее спасибо!