Esempio n. 1
0
        /// <summary>
        /// Creates a new Q-learner
        /// </summary>
        /// <param name="qValueTable">The Q-value table</param>
        /// <param name="selectionPolicy">The selection policy</param>
        /// <param name="alpha">The learning rate</param>
        /// <param name="gamma">The discount factor</param>
        /// <param name="random">The random generator</param>
        public QLearning(QValueTable <TState> qValueTable, IActionSelectionPolicy selectionPolicy, double alpha, double gamma, Random random)
        {
            if (alpha < 0)
            {
                throw new ArgumentException("Expected alpha to be >= 0.", "alpha");
            }

            if (gamma < 0)
            {
                throw new ArgumentException("Expected gamma to be >= 0.", "gamma");
            }

            this.qValueTable     = qValueTable;
            this.selectionPolicy = selectionPolicy;
            this.alpha           = alpha;
            this.gamma           = gamma;
            this.random          = random;
        }
Esempio n. 2
0
 /// <summary>
 /// Creates a new Q-learner using the given selection policy
 /// </summary>
 /// <param name="numActions">The number of actions</param>
 /// <param name="selectionPolicy">The selection policy</param>
 ///  <param name="alpha">The learning rate</param>
 /// <param name="gamma">The discount factor</param>
 /// <param name="random">The random generator</param>
 public static QLearning <TState> New(int numActions, IActionSelectionPolicy selectionPolicy, double alpha, double gamma, Random random)
 {
     return(new QLearning <TState>(new QValueTable <TState>(numActions), selectionPolicy, alpha, gamma, random));
 }