Пример #1
0
        //This is a small console program to exemplify the main functionality of the Emotional Appraisal Asset
        static void Main(string[] args)
        {
            AssetManager.Instance.Bridge = new BasicIOBridge();
            var kickEvent = "Event(Action-Start, Player, Kick, John)";

            // To create a new asset it is required to tell the name of the agent which will correpond to the perspective of the "SELF"
            EmotionalAppraisalAsset ea = new EmotionalAppraisalAsset("John");

            //The following lines add an appraisal rule that will make the kickEvent be perceived as undesirable
            //Normally, these rules should be authored using the AuthoringTool provided with the asset but they can also be added dynamically
            var rule = new AppraisalRuleDTO { EventMatchingTemplate = "Event(Action-Start, *, Kick, SELF)", Desirability = -5f, Praiseworthiness = -3f };
            ea.AddOrUpdateAppraisalRule(rule);

            //Emotions are generated by the appraisal of the events that occur in the game world
            ea.AppraiseEvents(new[] { kickEvent });
            Console.WriteLine("\nAfter appraising  '" + kickEvent + "'\nWith the appraisal rule '" + rule.EventMatchingTemplate + " Desirability: "+rule.Desirability+ " Praiseworthiness: " + rule.Praiseworthiness +  "'");
            Console.WriteLine("\nMood on tick '" + ea.Tick + "': " + ea.Mood);
            Console.WriteLine("Active Emotions: " + string.Concat(ea.ActiveEmotions.Select(e => e.Type + "-" + e.Intensity + " ")));

            //Each event that is appraised will be stored an the agent's autobiographical memory
            Console.WriteLine("\nEvents occured so far: " + string.Concat(ea.EventRecords.Select(e => "\nId: " + e.Id + " Event: " + e.Event)));

            //The update function will increase the current tick by 1. Each active emotion will decay to 0 and the mood will slowly return to 0
            for (int i = 0; i < 3; i++)
            {
                ea.Update();
                Console.WriteLine("\nMood on tick '" + ea.Tick + "': " + ea.Mood);
                Console.WriteLine("Active Emotions: " + string.Concat(ea.GetAllActiveEmotions().Select(e => e.EmotionType + "-" + e.Intensity + " ")));
            }

            //The asset can also be loaded from an existing file using the following method:
            ea = EmotionalAppraisalAsset.LoadFromFile("../../../Examples/EATest.ea");

            Console.ReadKey();
        }
Пример #2
0
        private static RolePlayCharacterAsset BuildEmotionalRPCAsset()
        {
            var kb = new KB((Name)"Matt");


            var ea = new EmotionalAppraisalAsset();

            var appraisalRule = new EmotionalAppraisal.DTOs.AppraisalRuleDTO()
            {
                Conditions            = new Conditions.DTOs.ConditionSetDTO(),
                EventMatchingTemplate = (Name)"Event(*, *,*, *)",
                Desirability          = Name.BuildName(2),
                Praiseworthiness      = Name.BuildName(2)
            };

            ea.AddOrUpdateAppraisalRule(appraisalRule);


            var rpc = new RolePlayCharacterAsset
            {
                BodyName      = "Male",
                VoiceName     = "Male",
                CharacterName = (Name)"Matt",
                m_kb          = kb,
            };

            rpc.m_emotionalAppraisalAsset = ea;

            rpc.BindToRegistry(rpc.m_kb);



            EmotionalDecisionMakingAsset edm = new EmotionalDecisionMakingAsset();
            SocialImportanceAsset        si  = new SocialImportanceAsset();
            CommeillFautAsset            cfa = new CommeillFautAsset();

            rpc.m_emotionalAppraisalAsset      = ea;
            rpc.m_emotionalDecisionMakingAsset = edm;
            rpc.m_socialImportanceAsset        = si;
            rpc.m_commeillFautAsset            = cfa;
            return(rpc);
        }
Пример #3
0
 public void AddOrUpdateAppraisalRule(AppraisalRuleDTO newRule)
 {
     _ea.AddOrUpdateAppraisalRule(newRule);
     RefreshData();
 }
Пример #4
0
        private static EmotionalAppraisalAsset BuildTestAsset()
        {
            var m_emotionalAppraisalAsset = new EmotionalAppraisalAsset();


            var joyDisposition = new EmotionDisposition(OCCEmotionType.Joy.Name, 2, 3);

            m_emotionalAppraisalAsset.AddEmotionDisposition(joyDisposition.ToDto());

            var distressDisposition = new EmotionDisposition(OCCEmotionType.Distress.Name, 2, 1);

            m_emotionalAppraisalAsset.AddEmotionDisposition(distressDisposition.ToDto());

            var prideDisposition = new EmotionDisposition(OCCEmotionType.Pride.Name, 5, 5);

            m_emotionalAppraisalAsset.AddEmotionDisposition(prideDisposition.ToDto());

            var shameDisposition = new EmotionDisposition(OCCEmotionType.Shame.Name, 2, 1);

            m_emotionalAppraisalAsset.AddEmotionDisposition(shameDisposition.ToDto());

            var gratificationDisposition = new EmotionDisposition(OCCEmotionType.Gratification.Name, 8, 5);

            m_emotionalAppraisalAsset.AddEmotionDisposition(gratificationDisposition.ToDto());

            var remorseDisposition = new EmotionDisposition(OCCEmotionType.Remorse.Name, 2, 1);

            m_emotionalAppraisalAsset.AddEmotionDisposition(remorseDisposition.ToDto());

            var admirationDisposition = new EmotionDisposition(OCCEmotionType.Admiration.Name, 5, 3);

            m_emotionalAppraisalAsset.AddEmotionDisposition(admirationDisposition.ToDto());

            var reproachDisposition = new EmotionDisposition(OCCEmotionType.Reproach.Name, 8, 2);

            m_emotionalAppraisalAsset.AddEmotionDisposition(reproachDisposition.ToDto());

            var gratitudeDisposition = new EmotionDisposition(OCCEmotionType.Gratitude.Name, 5, 3);

            m_emotionalAppraisalAsset.AddEmotionDisposition(gratitudeDisposition.ToDto());

            var angerDisposition = new EmotionDisposition(OCCEmotionType.Anger.Name, 5, 3);

            m_emotionalAppraisalAsset.AddEmotionDisposition(angerDisposition.ToDto());

            //Setup appraisal rules

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Pet,SELF)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.DESIRABILITY,
                        Value = (Name)"10"
                    },
                })
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Slap,SELF)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.DESIRABILITY,
                        Value = (Name)"10"
                    }
                })
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Feed,SELF)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.DESIRABILITY,
                        Value = (Name)"5"
                    },
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.PRAISEWORTHINESS,
                        Value = (Name)"10"
                    }
                })
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Talk(High,Mad),SELF)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.DESIRABILITY,
                        Value = (Name)"-7"
                    },
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.PRAISEWORTHINESS,
                        Value = (Name)"15"
                    }
                })
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Talk(Low,Happy),SELF)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.DESIRABILITY,
                        Value = (Name)"5"
                    }
                })
            });

            //Generate emotion

            //m_emotionalAppraisalAsset.AppraiseEvents(new []{ "Event(Action-Finished,Player,Slap,self)" });

            //Add knowledge


            return(m_emotionalAppraisalAsset);
        }
Пример #5
0
        private static RolePlayCharacterAsset BuildEmotionalRPCAsset(int eaSet = -1)
        {
            var kb = new KB((Name)"Matt");


            var ea = new EmotionalAppraisalAsset();


            if (eaSet == -1)
            {
                var appraisalRule = new EmotionalAppraisal.DTOs.AppraisalRuleDTO()
                {
                    Conditions            = new Conditions.DTOs.ConditionSetDTO(),
                    EventMatchingTemplate = (Name)"Event(*, *,*, *)",
                    AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                    {
                        new AppraisalVariableDTO()
                        {
                            Name  = OCCAppraisalVariables.DESIRABILITY,
                            Value = (Name)"2"
                        },
                        new AppraisalVariableDTO()
                        {
                            Name  = OCCAppraisalVariables.PRAISEWORTHINESS,
                            Value = (Name)"2"
                        }
                    })
                };

                ea.AddOrUpdateAppraisalRule(appraisalRule);
            }

            else
            {
                PopulateAppraisalRuleSet();
                ea.AddOrUpdateAppraisalRule(appraisalRuleSet[eaSet]);
            }

            ea.AddOrUpdateGoal(new GoalDTO()
            {
                Name         = "Goal",
                Significance = 5,
                Likelihood   = 0.5f
            });

            ea.AddOrUpdateGoal(new GoalDTO()
            {
                Name         = "GoalNegative",
                Significance = 5,
                Likelihood   = 0.2f
            });

            ea.AddOrUpdateGoal(new GoalDTO()
            {
                Name         = "GoalPositive",
                Significance = 5,
                Likelihood   = 0.8f
            });

            var rpc = new RolePlayCharacterAsset
            {
                BodyName      = "Male",
                VoiceName     = "Male",
                CharacterName = (Name)"Matt",
                m_kb          = kb,
            };

            rpc.m_emotionalAppraisalAsset = ea;

            rpc.BindToRegistry(rpc.m_kb);



            EmotionalDecisionMakingAsset edm = new EmotionalDecisionMakingAsset();
            SocialImportanceAsset        si  = new SocialImportanceAsset();
            CommeillFautAsset            cfa = new CommeillFautAsset();

            rpc.m_emotionalAppraisalAsset      = ea;
            rpc.m_emotionalDecisionMakingAsset = edm;
            rpc.m_socialImportanceAsset        = si;
            rpc.m_commeillFautAsset            = cfa;
            return(rpc);
        }
Пример #6
0
        private static EmotionalAppraisalAsset BuildTestAsset()
        {        //Emotional System Setup
            var m_emotionalAppraisalAsset = new EmotionalAppraisalAsset();
            //	m_emotionalAppraisalAsset.SetPerspective("Test");

            //Setup Emotional Disposition

            //var loveDisposition = new EmotionDisposition(OCCEmotionType.Love.Name, 5, 3);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(loveDisposition);

            //var hateDisposition = new EmotionDisposition(OCCEmotionType.Hate.Name, 5, 3);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(hateDisposition);

            //var hopeDisposition = new EmotionDisposition(OCCEmotionType.Hope.Name, 8, 4);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(hopeDisposition);

            //var fearDisposition = new EmotionDisposition(OCCEmotionType.Fear.Name, 2, 1);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(fearDisposition);

            //var satisfactionDisposition = new EmotionDisposition(OCCEmotionType.Satisfaction.Name, 8, 5);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(satisfactionDisposition);

            //var reliefDisposition = new EmotionDisposition(OCCEmotionType.Relief.Name, 5, 3);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(reliefDisposition);

            //var fearsConfirmedDisposition = new EmotionDisposition(OCCEmotionType.FearsConfirmed.Name, 2, 1);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(fearsConfirmedDisposition);

            //var disapointmentDisposition = new EmotionDisposition(OCCEmotionType.Disappointment.Name, 5, 2);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(disapointmentDisposition);

            var joyDisposition = new EmotionDisposition(OCCEmotionType.Joy.Name, 2, 3);

            m_emotionalAppraisalAsset.AddEmotionDisposition(joyDisposition.ToDto());

            var distressDisposition = new EmotionDisposition(OCCEmotionType.Distress.Name, 2, 1);

            m_emotionalAppraisalAsset.AddEmotionDisposition(distressDisposition.ToDto());

            //var happyForDisposition = new EmotionDisposition(OCCEmotionType.HappyFor.Name, 5, 2);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(happyForDisposition);

            //var pittyDisposition = new EmotionDisposition(OCCEmotionType.Pitty.Name, 2, 2);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(pittyDisposition);

            //var resentmentDisposition = new EmotionDisposition(OCCEmotionType.Resentment.Name, 2, 3);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(resentmentDisposition);

            //var gloatingDisposition = new EmotionDisposition(OCCEmotionType.Gloating.Name, 8, 5);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(gloatingDisposition);

            var prideDisposition = new EmotionDisposition(OCCEmotionType.Pride.Name, 5, 5);

            m_emotionalAppraisalAsset.AddEmotionDisposition(prideDisposition.ToDto());

            var shameDisposition = new EmotionDisposition(OCCEmotionType.Shame.Name, 2, 1);

            m_emotionalAppraisalAsset.AddEmotionDisposition(shameDisposition.ToDto());

            var gratificationDisposition = new EmotionDisposition(OCCEmotionType.Gratification.Name, 8, 5);

            m_emotionalAppraisalAsset.AddEmotionDisposition(gratificationDisposition.ToDto());

            var remorseDisposition = new EmotionDisposition(OCCEmotionType.Remorse.Name, 2, 1);

            m_emotionalAppraisalAsset.AddEmotionDisposition(remorseDisposition.ToDto());

            var admirationDisposition = new EmotionDisposition(OCCEmotionType.Admiration.Name, 5, 3);

            m_emotionalAppraisalAsset.AddEmotionDisposition(admirationDisposition.ToDto());

            var reproachDisposition = new EmotionDisposition(OCCEmotionType.Reproach.Name, 8, 2);

            m_emotionalAppraisalAsset.AddEmotionDisposition(reproachDisposition.ToDto());

            var gratitudeDisposition = new EmotionDisposition(OCCEmotionType.Gratitude.Name, 5, 3);

            m_emotionalAppraisalAsset.AddEmotionDisposition(gratitudeDisposition.ToDto());

            var angerDisposition = new EmotionDisposition(OCCEmotionType.Anger.Name, 5, 3);

            m_emotionalAppraisalAsset.AddEmotionDisposition(angerDisposition.ToDto());

            //Setup appraisal rules

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Pet,self)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.DESIRABILITY,
                        Value = (Name)"10"
                    }
                })
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Slap,self)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.DESIRABILITY,
                        Value = (Name)"10"
                    }
                })
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Feed,self)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.DESIRABILITY,
                        Value = (Name)"5"
                    },
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.PRAISEWORTHINESS,
                        Value = (Name)"10"
                    }
                })
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Talk(High,Mad),self)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.DESIRABILITY,
                        Value = (Name)"-7"
                    },
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.PRAISEWORTHINESS,
                        Value = (Name)"-15"
                    }
                })
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = (Name)"Event(Action-End,*,Talk(Low,Happy),self)",
                AppraisalVariables    = new AppraisalVariables(new List <AppraisalVariableDTO>()
                {
                    new AppraisalVariableDTO()
                    {
                        Name  = OCCAppraisalVariables.PRAISEWORTHINESS,
                        Value = (Name)"5"
                    }
                })
            });

            //Generate emotion

            //m_emotionalAppraisalAsset.AppraiseEvents(new []{ "Event(Action-Finished,Player,Slap,self)" });

            //Add knowledge


            return(m_emotionalAppraisalAsset);
        }
        private static EmotionalAppraisalAsset BuildTestAsset()
        {
            //Emotional System Setup
            var m_emotionalAppraisalAsset = new EmotionalAppraisalAsset("Agent");
            m_emotionalAppraisalAsset.SetPerspective("Test");

            //Setup Emotional Disposition

            //var loveDisposition = new EmotionDisposition(OCCEmotionType.Love.Name, 5, 3);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(loveDisposition);

            //var hateDisposition = new EmotionDisposition(OCCEmotionType.Hate.Name, 5, 3);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(hateDisposition);

            //var hopeDisposition = new EmotionDisposition(OCCEmotionType.Hope.Name, 8, 4);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(hopeDisposition);

            //var fearDisposition = new EmotionDisposition(OCCEmotionType.Fear.Name, 2, 1);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(fearDisposition);

            //var satisfactionDisposition = new EmotionDisposition(OCCEmotionType.Satisfaction.Name, 8, 5);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(satisfactionDisposition);

            //var reliefDisposition = new EmotionDisposition(OCCEmotionType.Relief.Name, 5, 3);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(reliefDisposition);

            //var fearsConfirmedDisposition = new EmotionDisposition(OCCEmotionType.FearsConfirmed.Name, 2, 1);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(fearsConfirmedDisposition);

            //var disapointmentDisposition = new EmotionDisposition(OCCEmotionType.Disappointment.Name, 5, 2);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(disapointmentDisposition);

            var joyDisposition = new EmotionDisposition(OCCEmotionType.Joy.Name, 2, 3);
            m_emotionalAppraisalAsset.AddEmotionDisposition(joyDisposition.ToDto());

            var distressDisposition = new EmotionDisposition(OCCEmotionType.Distress.Name, 2, 1);
            m_emotionalAppraisalAsset.AddEmotionDisposition(distressDisposition.ToDto());

            //var happyForDisposition = new EmotionDisposition(OCCEmotionType.HappyFor.Name, 5, 2);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(happyForDisposition);

            //var pittyDisposition = new EmotionDisposition(OCCEmotionType.Pitty.Name, 2, 2);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(pittyDisposition);

            //var resentmentDisposition = new EmotionDisposition(OCCEmotionType.Resentment.Name, 2, 3);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(resentmentDisposition);

            //var gloatingDisposition = new EmotionDisposition(OCCEmotionType.Gloating.Name, 8, 5);
            //m_emotionalAppraisalAsset.EmotionalState.AddEmotionDisposition(gloatingDisposition);

            var prideDisposition = new EmotionDisposition(OCCEmotionType.Pride.Name, 5, 5);
            m_emotionalAppraisalAsset.AddEmotionDisposition(prideDisposition.ToDto());

            var shameDisposition = new EmotionDisposition(OCCEmotionType.Shame.Name, 2, 1);
            m_emotionalAppraisalAsset.AddEmotionDisposition(shameDisposition.ToDto());

            var gratificationDisposition = new EmotionDisposition(OCCEmotionType.Gratification.Name, 8, 5);
            m_emotionalAppraisalAsset.AddEmotionDisposition(gratificationDisposition.ToDto());

            var remorseDisposition = new EmotionDisposition(OCCEmotionType.Remorse.Name, 2, 1);
            m_emotionalAppraisalAsset.AddEmotionDisposition(remorseDisposition.ToDto());

            var admirationDisposition = new EmotionDisposition(OCCEmotionType.Admiration.Name, 5, 3);
            m_emotionalAppraisalAsset.AddEmotionDisposition(admirationDisposition.ToDto());

            var reproachDisposition = new EmotionDisposition(OCCEmotionType.Reproach.Name, 8, 2);
            m_emotionalAppraisalAsset.AddEmotionDisposition(reproachDisposition.ToDto());

            var gratitudeDisposition = new EmotionDisposition(OCCEmotionType.Gratitude.Name, 5, 3);
            m_emotionalAppraisalAsset.AddEmotionDisposition(gratitudeDisposition.ToDto());

            var angerDisposition = new EmotionDisposition(OCCEmotionType.Anger.Name, 5, 3);
            m_emotionalAppraisalAsset.AddEmotionDisposition(angerDisposition.ToDto());

            //Setup appraisal rules

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = "Event(Action-Finished,*,Pet,self)",
                Desirability = 10
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = "Event(Action-Finished,*,Slap,self)",
                Desirability = -10
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = "Event(Action-Finished, *, Feed, self)",
                Desirability = 5,
                Praiseworthiness = 10
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = "Event(Action-Finished,*,Talk(High,Mad),self)",
                Desirability = -7,
                Praiseworthiness = -15
            });

            m_emotionalAppraisalAsset.AddOrUpdateAppraisalRule(new AppraisalRuleDTO()
            {
                EventMatchingTemplate = "Event(Action-Finished,*,Talk(Low,Happy),self)",
                Praiseworthiness = 5
            });

            //Generate emotion

            m_emotionalAppraisalAsset.AppraiseEvents(new []{ "Event(Action-Finished,Player,Slap,self)" });

            //Add knowledge
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Strength(John)",
                Perspective = "self",
                Value = "5"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Strength(Mary)",
                Perspective = "self",
                Value = "3"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Strength(Leonidas)",
                Perspective = "self",
                Value = "500"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Strength(Goku)",
                Perspective = "self",
                Value = "9001"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Strength(SuperMan)",
                Perspective = "self",
                Value = ulong.MaxValue.ToString()
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Strength(Saitama)",
                Perspective = "self",
                Value = double.MaxValue.ToString(CultureInfo.InvariantCulture)
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Race(Saitama)",
                Perspective = "self",
                Value = "human"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Race(Mary)",
                Perspective = "self",
                Value = "human"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Race(John)",
                Perspective = "self",
                Value = "human"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Race(Leonidas)",
                Perspective = "self",
                Value = "human"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Race(Goku)",
                Perspective = "self",
                Value = "sayian"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Race(Superman)",
                Perspective = "self",
                Value = "kriptonian"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Job(Superman)",
                Perspective = "self",
                Value = "super-hero"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Job(Jeonidas)",
                Perspective = "self",
                Value = "king"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "AKA(Saitama)",
                Perspective = "self",
                Value = "One-Punch_Man"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "AKA(Saitama)",
                Perspective = "self",
                Value = "Caped_Baldy"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "AKA(Superman)",
                Perspective = "self",
                Value = "Clark_Kent"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "AKA(Goku)",
                Perspective = "self",
                Value = "Kakarot"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Hobby(Saitama)",
                Perspective = "self",
                Value = "super-hero"
            });
            m_emotionalAppraisalAsset.AddOrUpdateBelief(new BeliefDTO()
            {
                Name = "Hobby(Goku)",
                Perspective = "self",
                Value = "training"
            });

            return m_emotionalAppraisalAsset;
        }
 public void AddOrUpdateAppraisalRule(AppraisalRuleDTO newRule)
 {
     _emotionalAppraisalAsset.AddOrUpdateAppraisalRule(newRule);
     RefreshData();
 }