Някой успя ли да направи задачата за самообучение на агент за морски шах?


1

Помагайте! Уж следвам алгоритъма, но не работи :( Как задавате наградата r?

Аз правя нещо подобно, но отчитам награда само при печалба, не и при загуба:

 

            string state = initialState;
            while (!IsGameEnd(state) & !IsTerminalStates(state))
            {
                stateAction currentStateAction = GetNextAction(qTable, state);
                string nextState = UpdateState(state, currentStateAction.action, 'x');
                double nextValue = qTable.GetMaxQ(nextState);
 
                int reward = 0;
                if (IsTerminalStates(nextState))
                {
                    reward = 1;
                }
 
                double updatedQ = (1 - ALPHA) * qTable.qTable[currentStateAction] + ALPHA * (reward + GAMMA * nextValue);
                qTable.qTable[currentStateAction] = updatedQ;
 
                string revertedState = RevertState(state);
                currentStateAction.state = revertedState;
                qTable.qTable[currentStateAction] = updatedQ;
                state = RevertState(nextState);
         }



Отговори



2
Май си единствен по тази задача...

от svetlin.nakov (31978 точки)


0
Може да съм единствен с проблеми и затова никой да не поглежда форума :) Но пък работещо решение вече е качено в материалите към семинара.

от krasin (296 точки)