2016-12-08 49 views
0

私は感度分析を実行しようとしています。私はPythonを学び始めたので、これをPythonで実現したいと思いました。私はSALibというパッケージを見つけましたが、自分の方程式を実装する方法は実際にはわかりません。私は、入力サンプルをgeneraeする必要があるが、私はどのように私は自分の式でこれらを生成します。この後pythonで感度解析を実行

problem = {'num_vars': 3, 
      'names': ['C', 'R', 't'], 
      'bounds': [[10, 100], 
        [3, 7], 
        [-10, 30]] 
      } 

:私は私の問題を定義する必要が最初に

ET = 0,0031*C*(R+209)*(t*(t+15)**-1) 

:たとえば は、これが私の方程式であります?たぶん誰かがSALibに敏感で、助けてくれるかもしれません。私はパッケージのドキュメントが本当に役に立つとは思わない。

+0

と思われます。 –

答えて

0

関数saltelli.sample()は、problemで定義された変数を表す各列を持つ行列を生成し、problemで定義された対応する範囲でサンプリングされます。その後、以下のようにモデルを関数として定義し、これらの入力に対して関数ET()の値を計算することができます。結果は、関数値のベクトルであり、他のSALib関数にドキュメント(https://github.com/SALib/SALib)で与えられているように送信することができます。

from SALib.sample import saltelli 
from SALib.analyze import sobol 

def ET(X): 
    # column 0 = C, column 1 = R, column 2 = t 
    return(0.0031*X[:,0]*(X[:,1]+209)*(X[:,2]*(X[:,2]+15))**-1) 

problem = {'num_vars': 3, 
      'names': ['C', 'R', 't'], 
      'bounds': [[10, 100], 
        [3, 7], 
        [-10, 30]] 
      } 

# Generate samples 
param_values = saltelli.sample(problem, 10000000, calc_second_order=False) 

# Run model (example) 
Y = ET(param_values) 

# Perform analysis 
Si = sobol.analyze(problem, Y, print_to_console=True)