Юлия - ограниченная оптимизация - PullRequest
1 голос
/ 10 апреля 2020

Я пытаюсь минимизировать функцию (довольно сложная, без аналитической формы). Сначала я изменил его и запустил следующее:

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"})

Может кто-нибудь помочь мне ограничить решение?

Заранее спасибо!

...