/// <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 ForgettingModel(IAgentId agentId, TwoModesNetwork <IEntityKnowledge> entityKnowledgeNetwork, CognitiveArchitecture cognitive, ForgettingModelEntity entity, bool knowledgeModelOn, byte randomLevel) { if (entity is null) { throw new ArgumentNullException(nameof(entity)); } if (cognitive is null) { throw new ArgumentNullException(nameof(cognitive)); } _agentId = agentId; _entityKnowledgeNetwork = entityKnowledgeNetwork ?? throw new ArgumentNullException(nameof(entityKnowledgeNetwork)); InternalCharacteristics = cognitive.InternalCharacteristics; _randomLevel = randomLevel; entity.CopyTo(this); if (!knowledgeModelOn || !cognitive.KnowledgeAndBeliefs.HasKnowledge || !InternalCharacteristics.CanForget) { // If KnowledgeModel Off or has no knowledge, there is no knowledge to forget // Agent is not concerned by this model On = false; } }
/// <summary> /// Constructor used by Agent.Cognitive for ForgettingKnowledge /// </summary> /// <param name="network"></param> /// <param name="actorId"></param> /// <param name="knowledgeId"></param> /// <param name="knowledgeBits"></param> /// <param name="minimumKnowledge"></param> /// <param name="timeToLive"></param> /// <param name="step"></param> public ActorKnowledge(TwoModesNetwork <IEntityKnowledge> network, IAgentId actorId, IAgentId knowledgeId, float[] knowledgeBits, float minimumKnowledge, short timeToLive, ushort step = 0) : base(network, actorId, knowledgeId) { MinimumKnowledge = minimumKnowledge; TimeToLive = timeToLive; KnowledgeBits = new KnowledgeBits(minimumKnowledge, timeToLive); KnowledgeBits.SetBits(knowledgeBits, step); Length = KnowledgeBits.Length; }
/// <summary> /// Constructor based on the knowledge Id and the knowledge Level. /// KnowledgeBits is not yet initialized. /// NetworkKnowledges.InitializeAgentKnowledge must be called to initialized KnowledgeBits /// </summary> /// <param name="network"></param> /// <param name="actorId"></param> /// <param name="knowledgeId"></param> /// <param name="level"></param> /// <param name="minimumKnowledge"></param> /// <param name="timeToLive"></param> public ActorKnowledge(TwoModesNetwork <IEntityKnowledge> network, IAgentId actorId, IAgentId knowledgeId, KnowledgeLevel level, float minimumKnowledge, short timeToLive) : base(network, actorId, knowledgeId) { KnowledgeLevel = level; MinimumKnowledge = minimumKnowledge; TimeToLive = timeToLive; KnowledgeBits = new KnowledgeBits(minimumKnowledge, timeToLive); Length = KnowledgeBits.Length; }
public static ActorKnowledge CreateInstance(TwoModesNetwork <IEntityKnowledge> network, IAgentId actorId, IAgentId knowledgeId, float[] knowledgeBits, float minimumKnowledge, short timeToLive, ushort step = 0) { return(new ActorKnowledge(network, actorId, knowledgeId, knowledgeBits, minimumKnowledge, timeToLive, step)); }
/// <summary> /// Constructor used by WorkerCognitiveAgent for ForgettingKnowledge /// </summary> /// <param name="network"></param> /// <param name="actorId"></param> /// <param name="knowledgeId"></param> /// <param name="knowledgeBits"></param> public ActorKnowledge(TwoModesNetwork <IEntityKnowledge> network, IAgentId actorId, IAgentId knowledgeId, KnowledgeBits knowledgeBits) : base(network, actorId, knowledgeId) { KnowledgeBits = knowledgeBits; Length = KnowledgeBits?.Length ?? 0; }
public static ActorKnowledge CreateInstance(TwoModesNetwork <IEntityKnowledge> network, IAgentId actorId, IAgentId knowledgeId, KnowledgeBits knowledgeBits) { return(new ActorKnowledge(network, actorId, knowledgeId, knowledgeBits)); }
public static ActorKnowledge CreateInstance(TwoModesNetwork <IEntityKnowledge> network, IAgentId actorId, IAgentId knowledgeId, KnowledgeLevel level, float minimumKnowledge, short timeToLive) { return(new ActorKnowledge(network, actorId, knowledgeId, level, minimumKnowledge, timeToLive)); }
public ForgettingModel(IAgentId agentId, TwoModesNetwork <IEntityKnowledge> entityKnowledgeNetwork, CognitiveArchitecture cognitive, MainOrganizationModels models, byte randomLevel) : this(agentId, entityKnowledgeNetwork, cognitive, models?.Forgetting, models != null && models.Knowledge.On, randomLevel) { }