Esempio n. 1
0
Vector<double> Car::calculate_dependent_variables_dots(const NeuralNetwork& neural_network, const Vector<double>& variables) const
{
   const double time = variables[0];
//   const double position = variables[1];
   const double velocity = variables[2];

   const Vector<double> inputs(1, time);

   const Vector<double> outputs = neural_network.calculate_outputs(inputs);

   const double acceleration = outputs[0];
   const double deceleration = outputs[1];

   const double position_dot = velocity;
   const double velocity_dot = acceleration + deceleration;

   Vector<double> dependent_variables_dots(dependent_variables_number, 0.0);

   dependent_variables_dots[0] = position_dot;
   dependent_variables_dots[1] = velocity_dot;

   return(dependent_variables_dots);
}
Esempio n. 2
0
void NeuralNetworkTest::test_calculate_outputs(void) {
  message += "test_calculate_outputs\n";

  NeuralNetwork nn;

  unsigned inputs_number;
  unsigned outputs_number;

  Vector<unsigned> architecture;

  Vector<double> inputs;
  Vector<double> outputs;

  unsigned parameters_number;

  Vector<double> parameters;

  // Test

  nn.set(3, 4, 2);
  nn.initialize_parameters(0.0);

  inputs.set(3, 0.0);

  outputs = nn.calculate_outputs(inputs);

  assert_true(outputs == 0.0, LOG);

  // Test

  nn.set(1, 1, 1);
  nn.initialize_parameters(0.0);

  inputs.set(1, 0.0);

  outputs = nn.calculate_outputs(inputs);

  assert_true(outputs == 0.0, LOG);

  // Test

  nn.set(1, 1);

  inputs.set(1);
  inputs.randomize_normal();

  parameters = nn.arrange_parameters();

  assert_true(
      nn.calculate_outputs(inputs) == nn.calculate_outputs(inputs, parameters),
      LOG);

  // Test

  nn.set(4, 3, 5);

  inputs.set(4, 0.0);

  parameters_number = nn.count_parameters_number();

  parameters.set(parameters_number, 0.0);

  outputs = nn.calculate_outputs(inputs, parameters);

  assert_true(outputs.size() == 5, LOG);
  assert_true(outputs == 0.0, LOG);

  // Test

  architecture.set(5);

  architecture.randomize_uniform(5, 10);

  nn.set(architecture);

  inputs_number = nn.get_inputs_pointer()->get_inputs_number();
  outputs_number = nn.get_outputs_pointer()->get_outputs_number();

  inputs.set(inputs_number, 0.0);

  parameters_number = nn.count_parameters_number();

  parameters.set(parameters_number, 0.0);

  outputs = nn.calculate_outputs(inputs, parameters);

  assert_true(outputs.size() == outputs_number, LOG);
  assert_true(outputs == 0.0, LOG);
}