Esempio n. 1
0
        /// <summary>
        /// </summary>
        /// <param name="agentId"></param>
        /// <param name="models"></param>
        /// <param name="knowledgeNetwork"></param>
        /// <param name="entityKnowledgeNetwork">ActorKnowledgeNetwork, ResourceKnowledgeNetwork depending on the agent</param>
        /// <param name="cognitiveArchitecture"></param>
        /// <param name="model"></param>
        /// <param name="randomLevel"></param>
        public LearningModel(IAgentId agentId, MainOrganizationModels models, OneModeNetwork knowledgeNetwork,
                             TwoModesNetwork <IEntityKnowledge> entityKnowledgeNetwork,
                             CognitiveArchitecture cognitiveArchitecture, RandomGenerator model, byte randomLevel)
        {
            if (models == null)
            {
                throw new ArgumentNullException(nameof(models));
            }

            if (cognitiveArchitecture == null)
            {
                throw new ArgumentNullException(nameof(cognitiveArchitecture));
            }

            models.Learning.CopyTo(this);
            _agentId                 = agentId;
            TasksAndPerformance      = cognitiveArchitecture.TasksAndPerformance;
            _internalCharacteristics = cognitiveArchitecture.InternalCharacteristics;
            _knowledgeNetwork        = knowledgeNetwork;
            _entityKnowledgeNetwork  =
                entityKnowledgeNetwork ?? throw new ArgumentNullException(nameof(entityKnowledgeNetwork));
            _randomLevel = randomLevel;
            if (!cognitiveArchitecture.InternalCharacteristics.CanLearn ||
                !cognitiveArchitecture.KnowledgeAndBeliefs.HasKnowledge)
            {
                // Agent is not concerned by this model
                On = false;
            }

            _model = model;
        }
Esempio n. 2
0
 public CognitiveArchitecture()
 {
     KnowledgeAndBeliefs        = new KnowledgeAndBeliefs();
     InternalCharacteristics    = new InternalCharacteristics();
     TasksAndPerformance        = new TasksAndPerformance();
     MessageContent             = new MessageContent();
     InteractionCharacteristics = new InteractionCharacteristics();
     InteractionPatterns        = new InteractionPatterns();
 }
Esempio n. 3
0
        /// <summary>
        ///     Clone the Influentialness for a specific agent with a random value between [InfluentialnessRateMin,
        ///     InfluentialnessRateMax]
        /// </summary>
        /// <returns></returns>
        public static float NextInfluenceability(InternalCharacteristics internalCharacteristics)
        {
            if (internalCharacteristics == null)
            {
                throw new ArgumentNullException(nameof(internalCharacteristics));
            }

            return(ContinuousUniform.Sample(internalCharacteristics.InfluenceabilityRateMin,
                                            internalCharacteristics.InfluenceabilityRateMax));
        }
Esempio n. 4
0
        /// <summary>
        ///     Add an agentId's Knowledge to the network
        /// </summary>
        /// <param name="knowledgeId"></param>
        /// <param name="level"></param>
        /// <param name="internalCharacteristics"></param>
        public void AddKnowledge(IAgentId knowledgeId, KnowledgeLevel level,
                                 InternalCharacteristics internalCharacteristics)
        {
            if (internalCharacteristics == null)
            {
                throw new ArgumentNullException(nameof(internalCharacteristics));
            }

            AddKnowledge(knowledgeId, level, internalCharacteristics.MinimumRemainingKnowledge,
                         internalCharacteristics.TimeToLive);
        }
Esempio n. 5
0
        public void CopyTo(CognitiveArchitecture cognitive)
        {
            if (cognitive is null)
            {
                throw new ArgumentNullException(nameof(cognitive));
            }

            KnowledgeAndBeliefs.CopyTo(cognitive.KnowledgeAndBeliefs);
            InternalCharacteristics.CopyTo(cognitive.InternalCharacteristics);
            TasksAndPerformance.CopyTo(cognitive.TasksAndPerformance);
            MessageContent.CopyTo(cognitive.MessageContent);
            InteractionCharacteristics.CopyTo(cognitive.InteractionCharacteristics);
            InteractionPatterns.CopyTo(cognitive.InteractionPatterns);
        }
Esempio n. 6
0
        public void CopyTo(InternalCharacteristics internalCharacteristics)
        {
            if (internalCharacteristics is null)
            {
                throw new ArgumentNullException(nameof(internalCharacteristics));
            }

            #region Learning

            internalCharacteristics.CanLearn = CanLearn;

            #endregion

            #region Risk aversion

            internalCharacteristics.RiskAversionLevel = RiskAversionLevel;

            #endregion

            #region Forgetting

            internalCharacteristics.CanForget      = CanForget;
            internalCharacteristics.ForgettingMean = ForgettingMean;
            internalCharacteristics.ForgettingStandardDeviation = ForgettingStandardDeviation;
            internalCharacteristics.PartialForgetting           = PartialForgetting;
            internalCharacteristics.PartialForgettingRate       = PartialForgettingRate;
            internalCharacteristics.ForgettingSelectingMode     = ForgettingSelectingMode;
            internalCharacteristics.MinimumRemainingKnowledge   = MinimumRemainingKnowledge;
            internalCharacteristics.TimeToLive = TimeToLive;

            #endregion

            #region Influence

            internalCharacteristics.CanInfluenceOrBeInfluence = CanInfluenceOrBeInfluence;
            internalCharacteristics.InfluenceabilityRateMax   = InfluenceabilityRateMax;
            internalCharacteristics.InfluenceabilityRateMin   = InfluenceabilityRateMin;
            internalCharacteristics.InfluentialnessRateMax    = InfluentialnessRateMax;
            internalCharacteristics.InfluentialnessRateMin    = InfluentialnessRateMin;

            #endregion
        }