SARSA constructor

SARSA({
  1. required int nStates,
  2. required int nActions,
  3. double alpha = 0.1,
  4. double gamma = 0.99,
  5. double epsilon = 0.1,
  6. int? seed,
  7. double? epsilonMin,
  8. double? epsilonDecay,
  9. double? alphaMin,
  10. double? alphaDecay,
  11. double lambda = 0.0,
})

Implementation

SARSA({
  required this.nStates,
  required this.nActions,
  this.alpha = 0.1,
  this.gamma = 0.99,
  this.epsilon = 0.1,
  int? seed,
  this.epsilonMin,
  this.epsilonDecay,
  this.alphaMin,
  this.alphaDecay,
  this.lambda = 0.0,
}) : _rand = seed != null ? Random(seed) : Random() {
  if (nStates <= 0 || nActions <= 0) {
    throw ArgumentError('nStates and nActions must be > 0');
  }
  qTable = List.generate(nStates, (_) => List<double>.filled(nActions, 0.0));
  if (lambda > 0.0) {
    _eTrace = List.generate(
      nStates,
      (_) => List<double>.filled(nActions, 0.0),
    );
  }
}