シミュレーテッド アニーリングを使用して、定義済みの間隔内で、単一変数の多項式関数の局所的な最小値を見つけたいと思います。また、二次関数のグローバル最小値を見つけたいと思います。
このような導関数を使用しないアルゴリズムは、問題に取り組むための最良の方法ではないため、これは研究目的のみです。
アルゴリズム自体は非常に単純ですが、1 次元または n 次元の空間で効率的に隣人を選択する方法がわかりません。
関数の局所的最小値を探しているとしましょう: 2* x^ 3+ x+ 1 間隔 [-0.5, 30] で、間隔が各数値の 10 分の 1 に減ると仮定します (例: {1.1, 1.2)。 ,1.3 , ..., 29.9, 30}.
私が達成したいのは、ランダムウォークと開始点からより低いエネルギーの点への収束速度のバランスです。
毎回指定された間隔から乱数を選択するだけでは、ランダムウォークはなく、アルゴリズムが循環する可能性があります。反対に、単純に 0.1 を同じ確率で加算または減算することによって次のポイントが選択された場合、アルゴリズムは開始ポイントに基づいて徹底的な検索になる可能性があります。
1 次元空間と n 次元空間でシミュレーテッド アニーリングの近隣探索を効率的にバランスさせるにはどうすればよいですか?