更新
私はグローバルな最小値を見つけるでしょう、プロットは、この関数が多くの極小値を持つことを示しています。シミュレーテッドアニーリングの実装。どのようにパフォーマンスを向上させるには?
f[x_] = 0.5 x^2 + Cos[Pi x] 2 Sin[Pi x] + Cos[Pi x] + 2 Sin[Pi x];
plt1 = Plot[f[x], {x, -5, 5}, PlotStyle -> RGBColor[1, 0, 0],Frame -> True]
紙(http://ww.w.sliponline.org/Publications/Conferences/24/c24.pdf)によると、私は、SAのアルゴリズムを実装するだろうが、パフォーマンスが非常に遅いです。
fTmp = fBest = xBest = xTmp = 999.0;
k = 0;
LIMIT = 10^6;
tTmp = tInit = 300;
Alpha = 0.999999999;
For [tTmp = tTmp * Alpha;, k < LIMIT, k++,
xTmp = RandomReal[{-5, 5}];
fTmp = f[xTmp];
If [fTmp < fBest, fBest = fTmp; xBest = xTmp,
PRA = N[Min[{1, Exp[-(fTmp - fBest)/tTmp]}]];
R = RandomReal[{0.0, 1.0}];
If [R < PRA, fBest = fTmp; xBest = xTmp; k++,];
];
tTmp = tTmp * Alpha;
];
Print[xBest]
Print[fBest]
-0.390741
-2.10428
それは、シミュレーテッドアニーリングの性能と精度を向上させることは可能ですか?お気軽にコメントしてください、ありがとうございます。精度を向上させるために
私には良い例がありますか?このトピックに関するウェブサイトやブログの例はどこにありますか? –
私は答えにいくつかの追加情報を追加しました。私はあなたが動的停止基準の代わりに固定ループを使用していることに気づいた。研究論文の例として、私は大学が学生に与える論文にアクセスすることはできません。もしあなたがそうしたら、ちょうどGoogleのシミュレーテッドアニーリング(Simulated Annealing)を見て、学術論文がどのようなものになっているかを見て、いくつかの例を読んでください。彼らはパラメータの選択肢を説明したり、パラメータを最適化する方法を示すことができます。 – BobbyJ
ありがとうございます。 –