2017-02-22 4 views
0

戻り値が最小になるアルファを見つけるために、次の関数を渡すことができるJavascriptライブラリがありますか?引数を変更して関数の戻り値を最小にするjsソルバーライブラリを探します。

var RMSE = runLES(this.monthlyData, this.alpha); 

すべての単語はJavascriptで他のより一般的な問題(例えば「最小化」 - >により縮小、「ソルバー」 - >解決方程式など)に関連しているため、私は私の検索で何かを見つけることができません。

誰か自分自身でこれを実装する方法についてのヒントはありますか?

EDIT: これは、関数本体である:

function runLES(data, alpha) { 
    var errors = new Array(data.length - 2); 
    for (var i = 2; i < data.length; i++) { 
     var Y1 = 2 * data[i - 1].noSeasonSales; 
     var Y2 = data[i - 2].noSeasonSales; 
     var E1 = 2 * (1 - alpha) * data[i - 1].error; 
     var E2 = Math.pow(1 - alpha, 2) * data[i - 2].error; 
     data[i].forecast = Y1 - Y2 - E1 + E2; 
     data[i].error = data[i].noSeasonSales - data[i].forecast; 
     errors[i - 2] = data[i].error; 
    } 
    return getRMSE(errors); 
} 

RMSEは、分散のルートであるプラス誤差の平均自乗。 (ちょうど番号)。

+0

関数は何をしますか?図書館を求めている人はいません。 runLESは私自身の関数です。 –

+0

2つの引数をとり、返す数値を計算します。数字は、どのアルファが渡されたかによって異なります。私は、戻り値が最も低くなるアルファ値を探しています。アルファの値は0と1の間でなければなりません(質問で忘れてしまいます)。 – smdufb

+1

Nelder-Mead(派生自由)https://github.com/benfred/fminからダウンロードできます。 –

答えて

1

私はどのような機能を持っているかによって異なります。 runLES()は何をしますか?

アルファベットの上限と下限がある場合は、最小値のバイナリ検索を使用できます。あなたの関数を派生させることができるなら、関数の派生物にNewton's methodを使うことができます。 詳細はこちらをご覧ください:Newton's method in Optimization

この方法は最小値が1つしかない場合にのみ機能します。 (あなたの関数のグラフは波のようなものではありません)

+0

はい、アルファには境界線があります。しかし、関数は必ずしもグローバルな最小値を持つとは限りません。そして、私の数学のスキルは、とにかく偏導関数を計算して使用するのには十分ではありません。 – smdufb

関連する問題