有沒有一種方法來指定一個初始條件(我希望提高速度)使用Optim在朱莉婭單變量優化?看起來這是不可能的,因爲只有多元優化才能接受初始條件。我想我可以將我的問題指定爲多變量問題,並忽略其中一個變量,但這不是特別優雅。Optim Julia單變量最小化與初始條件
2
A
回答
0
你的意思是布倫特的方法和黃金分割搜索?我認爲這些方法中的初始條件取決於您設置的初始下限和上限。因此,從這些算法的角度來看,提供x_minimum
的初始猜測會是多餘/錯誤的。
例如,在布倫特的方法預計最低的初始值計算爲:
x_minimum = x_lower + golden_ratio*(x_upper-x_lower)
0
如果你不想爲使用布倫特原油或黃金分割搜索,您可以簡單地使用基於梯度或Hessian的方法,因爲對於Optim中的大多數算法,R^n包括n = 1的情況。您必須遵循多變量方法的語法並傳遞向量。
julia> using Optim, Plots
julia> f(x) = -2*x[1]+3*x[1]^2+sin(x[1]*3)
f (generic function with 1 method)
julia> plot(x->f4([x,]), lab = "Univariate Function")
julia> optimize(f, [2.5,], GradientDescent())
Results of Optimization Algorithm
* Algorithm: Gradient Descent
* Starting Point: [2.5]
* Minimizer: [-0.12943993754432737]
* Minimum: -6.948989e-02
* Iterations: 5
* Convergence: true
* |x - x'| < 1.0e-32: false
|x - x'| = 3.35e-08
* |f(x) - f(x')|/|f(x)| < 1.0e-32: false
|f(x) - f(x')|/|f(x)| = NaN
* |g(x)| < 1.0e-08: true
|g(x)| = 4.58e-12
* stopped by an increasing objective: false
* Reached Maximum Number of Iterations: false
* Objective Calls: 12
* Gradient Calls: 12
相關問題
- 1. 最終變量初始化
- 2. javascript設置變量條件初始化
- 3. 變量的條件初始化/定義
- 4. 初始化Convex.MaxAtom數組Julia
- 5. 初始化向量與變量,C++
- 6. 變量初始化
- 7. 初始化變量
- 8. 變量初始化
- 9. 初始化變量
- 10. 初始化靜態final變量聲明與初始化在Application.OnCreate()
- 11. 初始化靜態最終變量
- 12. 初始化大量變量的最簡單方法
- 13. 最小的openGL初始化
- 14. 與空值初始化Date變量
- 15. c + +初始化成員變量與{}
- 16. Scanner.scan /初始化變量
- 17. scala變量初始化
- 18. 迅速變量初始化
- 19. java:變量初始化
- 20. 變量未初始化
- 21. 初始化Java變量
- 22. 私有變量初始化
- 23. 靜態變量初始化
- 24. 靜態變量初始化
- 25. 靜態變量初始化
- 26. C#初始化變量
- 27. 初始化數組變量
- 28. 變量未初始化
- 29. 繞過初始化變量
- 30. 對象變量初始化
謝謝。這太遺憾了。我在一個循環中使用了優化,我想將一次迭代的結果作爲初始猜測的更新提供給後續迭代。 –
選擇一個初始區間大小:'x_upper + x_lower',然後使用上面的公式找到'x_upper'和'x_lower',它們給你'x_minimum'。你只需要小心,初始間隔足夠大,以包含你想要的解決方案的概率很高。 –