我使用時間差異學習來訓練計算機在玩去。我注意到,我的經紀人在玩一場比賽(如10秒)時真的很慢,因爲它應該能夠在大約20分鐘內玩上100.000場比賽。在縮小問題的範圍之後,我發現那條線沒有。以下代碼中的5是麻煩製造者。代碼取自一個更大的函數。給陣列座位賦值很慢
int i;
double td = newValue - oldValueWhite;
for(i = 0; i<FEATURES_SIZE; i++)
{
Value[i] =Value[i] + alpha*(td)*((double)phiOldWhite[i]);
}
但是,下面的代碼運行光滑如地獄:
double tmp:
int i;
double td = newValue - oldValueWhite;
for(i = 0; i<FEATURES_SIZE; i++)
{
tmp =Value[i] + alpha*(td)*((double)phiOldWhite[i]);
}
我不知道這是否是編譯器只是忽略的計算,或者新的價值,以價值分配[i]是真的很慢。值得一提的是,Value被用作指向函數的指針。
任何想法?