現在、C でシミュレートされたアニーリングのコードをいくつか書いています。この関数に問題があります。
int metrop (E, E1, T)
{
int j;
if (exp((-E-E1)/T) > ran())
j = 2;
printf("Random# %lf\n",ran());
if (E-E1<0)
j = 2;
else
j = 0;
if (j=1)
printf("Accepted %d",j);
if (j=0)
printf("Rejected");
return(j);
}
E、E1、および T の入力に関係なく、「if (j=1) printf("Accepted %lf",j);」実行されたようです;「Accepted 1」の出力を与えます。このコードでは j を 1 にすることはできませんが、間違ったデータ型などを参照している可能性があります。誰にもアイデアはありますか?
ありがとう!