DQN constructor

DQN({
  1. required int nActions,
  2. required List<int> netLayers,
  3. int memoryCapacity = 1000,
  4. double epsilon = 0.1,
  5. double gamma = 0.99,
  6. int targetUpdateSteps = 100,
  7. bool useTarget = true,
  8. int? seed,
})

Implementation

DQN({
  required this.nActions,
  required List<int> netLayers,
  this.memoryCapacity = 1000,
  this.epsilon = 0.1,
  this.gamma = 0.99,
  this.targetUpdateSteps = 100,
  bool useTarget = true,
  int? seed,
}) : _rand = seed != null ? Random(seed) : Random(),
     network = ANN(layers: netLayers, seed: seed) {
  if (netLayers.isEmpty) throw ArgumentError('netLayers required');
  // Ensure the network parameters are initialized before serializing/cloning.
  // ANN initializes lazily on predict(), so force a lightweight predict.
  network.predict([List<double>.filled(network.layers[0], 0.0)]);
  if (useTarget) {
    _targetNetwork = ANN.fromMap(network.toMap(), seed: seed);
  }
}