Bohachevsky関数を実装してみた(Python)

非線形関数のRosenBrock関数について実装を行いたかったが意外と勾配も含めて実装されている文献がなかったので実装の備忘録を書きました。

他にもこんな関数を実装してみました。

RosenBrock関数を実装してみた(Python)

入力の次元は2次元、関数値はこの通りですね。
$$ f(x) ={x_1}^2 + 2{x_2}^2 -0.3cos3 \pi  x_1 – 0.4cos4 \pi x_2 + 0.7$$
とりあえず実装してみました。

加えて勾配ですがこちらは二方向に求まります。
片方だけ式を書きますとこんな感じです。
$$ f(x) ={2x_1} + 0.9 \pi sin3 \pi $$

def g_opt(self, w):
        w = np.array(w)
        w1, w2 = w[0], w[1]
        g_w1 = 2 * w1 + 0.9 * np.pi * np.sin(3 * np.pi * w1)
        g_w2 = 4 * w2 + 1.6 * np.pi * np.sin(4 * np.pi * w2)
        g = np.array([g_w1, g_w2])
        return g

 

関数値
勾配

コメント

タイトルとURLをコピーしました