Example #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;
        }
Example #2
0
        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;
            }
        }
Example #3
0
 /// <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;
 }
Example #4
0
 /// <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;
 }
Example #5
0
 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));
 }
Example #6
0
 /// <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;
 }
Example #7
0
 public static ActorKnowledge CreateInstance(TwoModesNetwork <IEntityKnowledge> network, IAgentId actorId, IAgentId knowledgeId, KnowledgeBits knowledgeBits)
 {
     return(new ActorKnowledge(network, actorId, knowledgeId, knowledgeBits));
 }
Example #8
0
 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));
 }
Example #9
0
 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)
 {
 }