func BackupStateAction(qt *discrete.QTable, mdp discrete.MDP, s discrete.State, a discrete.Action) (error float64) { var nq float64 for n := range mdp.S64() { ev := mdp.T(s, a, n) ev *= qt.V(n) nq += ev } nq *= mdp.GetGamma() nq += mdp.R(s, a) error = math.Fabs(nq - qt.Q(s, a)) qt.SetQ(s, a, nq) return }