/// <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; }
public CognitiveArchitecture() { KnowledgeAndBeliefs = new KnowledgeAndBeliefs(); InternalCharacteristics = new InternalCharacteristics(); TasksAndPerformance = new TasksAndPerformance(); MessageContent = new MessageContent(); InteractionCharacteristics = new InteractionCharacteristics(); InteractionPatterns = new InteractionPatterns(); }
/// <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)); }
/// <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); }
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); }
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 }