2014-10-02 178 views
1

我對Julia很新,並且有一個可能看起來很簡單的問題。假設我有一個函數,我將命名爲test(x::Vector, arg1, arg2),其中x是一個變量向量,函數有兩個參數arg1 & arg2將附加參數傳遞給內置函數

我想優化(最小化)關於矢量x的函數test。我無法弄清楚如何使用接受兩個參數值的Optim包中的優化功能。在R中,可以做如下:

optim(initial guest, test, arg1=value1,arg2=value2) 

有沒有類似的方式來聲明參數值在朱莉婭?

回答

3

您可以定義另一個函數來修復這些參數的值。

# Function to minimize 
f(x::Vector, a, b) = (x[1] - a)^2 + (x[2] - b)^2 

using Optim 
g(x::Vector) = f(x, 3, 4) 
optimize(g, [0.,0.]) 

您也可以使用匿名函數(但效率可能更低)。

optimize(x -> f(x,3,4), [0.,0.]) 
+0

謝謝!這對我現在的問題是一個解決方法。如果Julia函數可以接受額外的參數值,那將會很好。 – Tuan 2014-10-03 11:46:53

+0

這個解決方案被認爲是慣用的朱莉婭。請參閱https://github.com/JuliaOpt/NLopt.jl/issues/27。 – mlubin 2014-12-30 23:13:40