2017-09-27 5 views
-1

別の関数(function_B)のパラメータを反復処理で最適化する関数(function_A)を書きたいと思います。一定の基準に基づいて結果を最適化するだろう関数変数を別の関数のパラメータとして参照する方法は?

def function_B(a=10, b=12, c=14, d= 18): 
    value = (...) 
    return value 

今私は、パラメータabcの組み合わせを見つけたい、d:そのパラメータが最適化される機能。

def function_A(variable = a, min = 10, max = 20): 

    value = np.zeros((max - min + 1)) # initialize an empty vector to store results 
    count = 0 

    for i in np.linspace(1, 20, 20, endpoint=True): 
     ans = function_B(variable = i) 
     value[count] = ans 
     count = count + 1 

    return value 

問題がある、私はaを指定する方法がわからない。だから私は、次の関数を書く - - たとえば、ユーザーが最適化するために、どのパラメータを指定することができ、この場合には、我々はパラメータaを最適化することを選択しますfunction_A。私が使用してみました:

function_A(variable = a, ...)

function_A(variable = 'a', ...)

どちらも作品... 'a'を指定する方法を私は反復処理するパラメータのですか?

def A(a=5, b=4): 
    return a, b 

def B(var): 
    x = {var:'numberyouwant'} 
    return A(**x) 

だからあなたの場合には、文字列として変数を渡し、dictonaryにこれを渡し、最後にキーワードとして変数を使用すると、あなたが最適化したいparemeterであなたの機能を更新します。ここでは

答えて

1

は非常に単純化した例です。

def function_A(variable = 'a', min = 10, max = 20): 

    value = np.zeros((max - min + 1)) # initialize an empty vector to store results 
    count = 0 

    for i in np.linspace(1, 20, 20, endpoint=True): 
     temp_dict = {variable: i} 
     ans = function_B(**temp_dict) 
     value[count] = ans 
     count = count + 1 

return value 
+0

ありがとうございますが、私はまだ理解していません。単純な例として次のコードを試してみました。エラーメッセージが表示されました。私がどこに間違っているか私に見せてくれますか? – user7269791

+0

def A(a = 1、b = 2): 戻り値a + b'と def B(var = 'a'、min = 10): temp_dict = {var:min} ans = A 'var' 'b') 'をテストし、エラーが発生しましたmsg _TypeError: 'str'と 'int'オブジェクトを連結できません – user7269791

関連する問題