Exemplo n.º 1
0
        static void SetupBPNetwork(Agent reasoner)
        {
            //Chunks for the whales, tuna, and bears
            DeclarativeChunk TunaChunk  = World.NewDeclarativeChunk("Tuna");
            DeclarativeChunk WhaleChunk = World.NewDeclarativeChunk("Whale");
            DeclarativeChunk BearChunk  = World.NewDeclarativeChunk("Bear");

            //The 2 properties (as DV pairs)
            DimensionValuePair livesinwater = World.NewDimensionValuePair("lives in", "water");
            DimensionValuePair eatsfish     = World.NewDimensionValuePair("eats", "fish");

            //The BP network to be used in the bottom level of the NACS
            BPNetwork net = AgentInitializer.InitializeAssociativeMemoryNetwork(reasoner, BPNetwork.Factory);

            //Adds the properties (as inputs) and chunks (as outputs) to the BP network
            net.Input.Add(livesinwater);
            net.Input.Add(eatsfish);
            net.Output.Add(TunaChunk);
            net.Output.Add(WhaleChunk);
            net.Output.Add(BearChunk);

            reasoner.Commit(net);

            //Adds the chunks to the GKS
            reasoner.AddKnowledge(TunaChunk);
            reasoner.AddKnowledge(WhaleChunk);
            reasoner.AddKnowledge(BearChunk);

            //Initializes a trainer to use to train the BP network
            GenericEquation trainer = ImplicitComponentInitializer.InitializeTrainer(GenericEquation.Factory, (Equation)trainerEQ);

            //Adds the properties (as inputs) and chunks (as outputs) to the trainer
            trainer.Input.Add(livesinwater);
            trainer.Input.Add(eatsfish);
            trainer.Output.Add(TunaChunk);
            trainer.Output.Add(WhaleChunk);
            trainer.Output.Add(BearChunk);

            trainer.Commit();

            //Sets up data sets for each of the 2 properties
            List <ActivationCollection> sis = new List <ActivationCollection>();
            ActivationCollection        si  = ImplicitComponentInitializer.NewDataSet();

            si.Add(livesinwater, 1);
            sis.Add(si);

            si = ImplicitComponentInitializer.NewDataSet();
            si.Add(eatsfish, 1);
            sis.Add(si);

            Console.Write("Training AMN...");
            //Trains the BP network to report associative knowledge between the properties and the chunks
            ImplicitComponentInitializer.Train(net, trainer, sis, ImplicitComponentInitializer.TrainingTerminationConditions.SUM_SQ_ERROR);
            Console.WriteLine("Finished!");
        }
Exemplo n.º 2
0
        public static void InitializeAgent(Groups gr)
        {
            Participant = World.NewAgent();

            BPNetwork idn = AgentInitializer.InitializeImplicitDecisionNetwork(Participant, BPNetwork.Factory);

            idn.Input.AddRange(dvs);

            idn.Output.AddRange(acts);

            Participant.Commit(idn);

            foreach (DeclarativeChunk t in tools)
            {
                RefineableActionRule a = AgentInitializer.InitializeActionRule(Participant, RefineableActionRule.Factory, World.GetActionChunk("Tool"));
                foreach (DimensionValuePair dv in t)
                {
                    a.GeneralizedCondition.Add(dv, true);
                }
                Participant.Commit(a);
            }

            foreach (DeclarativeChunk g in guns)
            {
                RefineableActionRule a = AgentInitializer.InitializeActionRule(Participant, RefineableActionRule.Factory, World.GetActionChunk("Gun"));
                foreach (DimensionValuePair dv in g)
                {
                    a.GeneralizedCondition.Add(dv, true);
                }
                Participant.Commit(a);
            }

            Participant.ACS.Parameters.PERFORM_RER_REFINEMENT            = false;
            Participant.ACS.Parameters.PERFORM_DELETION_BY_DENSITY       = false;
            Participant.ACS.Parameters.FIXED_BL_LEVEL_SELECTION_MEASURE  = 1;
            Participant.ACS.Parameters.FIXED_RER_LEVEL_SELECTION_MEASURE = 1;
            Participant.ACS.Parameters.FIXED_IRL_LEVEL_SELECTION_MEASURE = 0;
            Participant.ACS.Parameters.FIXED_FR_LEVEL_SELECTION_MEASURE  = 0;
            Participant.ACS.Parameters.B = 1;

            HonorDrive honor = AgentInitializer.InitializeDrive(Participant, HonorDrive.Factory, r.NextDouble());

            GenericEquation hd = AgentInitializer.InitializeDriveComponent(honor, GenericEquation.Factory, (Equation)TangentEquation);

            var ins = Drive.GenerateTypicalInputs(honor);

            ParameterChangeActionChunk pac = World.NewParameterChangeActionChunk();

            pac.Add(Participant.ACS, "MCS_RER_SELECTION_MEASURE", .5);

            hd.Input.AddRange(ins);

            hd.Parameters.MAX_ACTIVATION = 5;

            honor.Commit(hd);

            honor.Parameters.DRIVE_GAIN = (gr == Groups.PRIVATE) ? .1 / 5 : .2 / 5;

            Participant.Commit(honor);

            ParameterSettingModule lpm = AgentInitializer.InitializeMetaCognitiveModule(Participant, ParameterSettingModule.Factory);

            ACSLevelProbabilitySettingEquation lpe = AgentInitializer.InitializeMetaCognitiveDecisionNetwork(lpm, ACSLevelProbabilitySettingEquation.Factory, Participant);

            lpe.Input.Add(honor.GetDriveStrength());

            lpm.Commit(lpe);

            Participant.Commit(lpm);

            lpm.Parameters.FIXED_BL_LEVEL_SELECTION_MEASURE  = 1;
            lpm.Parameters.FIXED_RER_LEVEL_SELECTION_MEASURE = 0;

            //Pre-train the IDN in the ACS
            PreTrainACS(idn);
        }