with Ada.Numerics.Discrete_Random;
with CNNC.Types;
with CNNC.Engine;
with CNNC.Natural_Network;
with CNNC.Server;
package body CNNC.Commander is
package User_Random is new Ada.Numerics.Discrete_Random(User_Id_Type);
User_Gen : User_Random.Generator;
package Action_Random is new Ada.Numerics.Discrete_Random(Action_Id_Type);
Action_Gen : User_Random.Generator;
package Object_Random is new Ada.Numerics.Discrete_Random(Object_Id_Type);
Object_Gen : User_Random.Generator;
task body CNNCommander is
Success : Boolean := False;
User_Next : User_Id_Type := Random(User_Gen);
Action_Next : Action_Id_Type := Random(Action_Gen);
Object_Next : Object_Id_Type := Random(Object_Gen);
begin
loop
Success := CNNC.Natural_Network.Respond(User_Next,
Action_Next,
Object_Next);
if Success then
Success := CNNC.Engine.Compute(User_Next,
Action_Next,
Object_Next);
CNNC.Natural_Network.Train(User_Next,
Action_Next,
Object_Next,
Success);
end if;
select
CNNC.Engine.Basic_Io.Send(User_Next,
Action_Next,
Object_Next);
or
delay 120.0;
User_Next := Random(User_Gen);
Action_Next := Random(Action_Gen);
Object_Next := Random(Object_Gen);
end select;
end loop;
end CNNCommander;
end CNNC.Commander;