2014-10-02 2 views
1

Я довольно новичок в Julia и задаюсь вопросом, который может показаться простым. Скажем, у меня есть функция, которую я назову test(x::Vector, arg1, arg2), где x - вектор переменных, и функция имеет два аргумента arg1 .Передайте дополнительные аргументы встроенной функции

Я хотел бы оптимизировать (свести к минимуму) функцию test относительно вектора x. Я не могу понять, как использовать функцию оптимизации из пакета 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

+0

Это решение считается идиоматическим Джулией. См. Https://github.com/JuliaOpt/NLopt.jl/issues/27. – mlubin

 Смежные вопросы

  • Нет связанных вопросов^_^