Juliaでコールバック関数または関数ハンドルを定義する標準的な方法は何ですか?
定義するとします
function myFun(a, b, c, d)
a - 3* b - c * d # The return value
end
私の目標は、b = 1、c = 2、d = 3 を修正し、myFun を a の関数として渡すことです。何かのようなもの:
newFun2(x) = myFun(x, 1 ,2, 3)
myReceiver(myFun2)
Juliaでコールバック関数または関数ハンドルを定義する標準的な方法は何ですか?
定義するとします
function myFun(a, b, c, d)
a - 3* b - c * d # The return value
end
私の目標は、b = 1、c = 2、d = 3 を修正し、myFun を a の関数として渡すことです。何かのようなもの:
newFun2(x) = myFun(x, 1 ,2, 3)
myReceiver(myFun2)
documentationによると、の目的関数NLOpt
は次の形式にする必要があります。
function f(x::Vector, grad::Vector):
if length(grad) > 0:
...set grad to gradient, in-place...
return ...value of f(x)...
end
したがって、コードは次のようになります。
function myFun(a, b, c, d, grad)
a - 3* b - c * d # The return value
end
newFun2(x, grad) = myFun(x, 1 , 2, 3, grad)
myFun()
への書き込みに必要な導関数情報を使用する最適化アルゴリズムで正常に動作するためには、ベクトルの値を計算するgrad
だけでなく、目的関数の値を返す必要があります。myFun()
grad