Skip to content

Commit

Permalink
Refactoring BeliefNetwork
Browse files Browse the repository at this point in the history
  • Loading branch information
lmorisse committed Aug 31, 2020
1 parent 1b50290 commit 9e0eee2
Show file tree
Hide file tree
Showing 27 changed files with 55 additions and 278 deletions.
4 changes: 2 additions & 2 deletions SourceCode/Symu/Classes/Agents/CognitiveAgent.Murphies.cs
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ public void CheckBlockerIncompleteBelief(SymuTask task, IId knowledgeId)
byte mandatoryIndex = 0;
byte requiredIndex = 0;

var belief = Environment.WhitePages.MetaNetwork.Beliefs.GetBelief<Belief>(knowledgeId);
var belief = Environment.WhitePages.MetaNetwork.Belief.GetBelief<Belief>(knowledgeId);
Environment.Organization.Murphies.IncompleteBelief.CheckBelief(belief, taskBits, BeliefsModel.Beliefs,
ref mandatoryScore, ref requiredScore,
ref mandatoryIndex, ref requiredIndex);
Expand Down Expand Up @@ -680,7 +680,7 @@ public void CheckRiskAversion(SymuTask task, IId knowledgeId)
float mandatoryScore = 0;
byte mandatoryIndex = 0;

var belief = Environment.WhitePages.MetaNetwork.Beliefs.GetBelief<Belief>(knowledgeId);
var belief = Environment.WhitePages.MetaNetwork.Belief.GetBelief<Belief>(knowledgeId);
MurphyIncompleteBelief.CheckRiskAversion(belief, taskBits, BeliefsModel.Beliefs, ref mandatoryScore,
ref mandatoryIndex, -Cognitive.InternalCharacteristics.RiskAversionValue());
if (!(mandatoryScore <= -Cognitive.InternalCharacteristics.RiskAversionValue()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,9 @@
using System;
using System.Collections.Generic;
using Symu.Common.Interfaces.Agent;
using Symu.Common.Interfaces.Entity;
using Symu.DNA;
using Symu.DNA.Activities;
using Symu.DNA.Knowledges;
using Symu.Repository.Entity;
using Symu.Repository.Networks;

#endregion

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,16 @@

using System;
using System.Linq;
using Symu.Common;
using Symu.Common.Classes;
using Symu.Common.Interfaces.Agent;
using Symu.Common.Interfaces.Entity;
using Symu.Common.Math.ProbabilityDistributions;
using Symu.DNA;
using Symu.DNA.Beliefs;
using Symu.DNA.Knowledges;
using Symu.DNA.OneModeNetworks.Belief;
using Symu.DNA.TwoModesNetworks.AgentBelief;
using Symu.Messaging.Templates;
using Symu.Repository.Entity;
using Symu.Repository.Networks;
using static Symu.Common.Constants;

#endregion
Expand All @@ -40,7 +39,8 @@ public class BeliefsModel
private readonly IAgentId _agentId;
private readonly KnowledgeAndBeliefs _knowledgeAndBeliefs;
private readonly MessageContent _messageContent;
private readonly BeliefNetwork _networkBeliefs;
private readonly AgentBeliefNetwork _agentBeliefNetwork;
private readonly BeliefNetwork _beliefNetwork;

/// <summary>
/// Initialize Beliefs model :
Expand Down Expand Up @@ -71,7 +71,8 @@ public class BeliefsModel

On = entity.IsAgentOn();
_agentId = agentId;
_networkBeliefs = network.Beliefs;
_beliefNetwork = network.Belief;
_agentBeliefNetwork = network.AgentBelief;
_knowledgeAndBeliefs = cognitiveArchitecture.KnowledgeAndBeliefs;
_messageContent = cognitiveArchitecture.MessageContent;
_model = model;
Expand All @@ -83,7 +84,7 @@ public class BeliefsModel
/// Get the agent Beliefs
/// </summary>
public AgentBeliefs Beliefs =>
On && _knowledgeAndBeliefs.HasBelief ? _networkBeliefs.GetAgentBeliefs(_agentId) : null;
On && _knowledgeAndBeliefs.HasBelief ? _agentBeliefNetwork.GetAgentBeliefs(_agentId) : null;

/// <summary>
/// Initialize the beliefs of the agent based on the belief network
Expand All @@ -95,10 +96,10 @@ public void InitializeBeliefs()
return;
}

if (!_networkBeliefs.Exists(_agentId))
if (!_agentBeliefNetwork.Exists(_agentId))
// An agent may be able to have belief but with no expertise for the moment
{
_networkBeliefs.AddAgentId(_agentId);
_agentBeliefNetwork.AddAgentId(_agentId);
}

InitializeBeliefs(!_knowledgeAndBeliefs.HasInitialBelief);
Expand All @@ -124,11 +125,11 @@ public void AddBeliefs(AgentExpertise expertise, BeliefLevel beliefLevel)
throw new ArgumentNullException(nameof(expertise));
}

_networkBeliefs.AddAgentId(_agentId);
_agentBeliefNetwork.AddAgentId(_agentId);

foreach (var agentBelief in expertise.List.Select(agentKnowledge => new AgentBelief(agentKnowledge.KnowledgeId, beliefLevel)))
{
_networkBeliefs.AddBelief(_agentId, agentBelief);
_agentBeliefNetwork.AddBelief(_agentId, agentBelief);
}
}

Expand Down Expand Up @@ -156,7 +157,7 @@ public void AddBelief(IId knowledgeId, BeliefLevel beliefLevel)
}

var agentBelief = new AgentBelief(knowledgeId, beliefLevel);
_networkBeliefs.Add(_agentId, agentBelief);
_agentBeliefNetwork.Add(_agentId, agentBelief);
}

public AgentBelief GetAgentBelief(IId beliefId)
Expand All @@ -166,7 +167,7 @@ public AgentBelief GetAgentBelief(IId beliefId)

public Belief GetBelief(IId beliefId)
{
return _networkBeliefs.GetBelief<Belief>(beliefId);
return _beliefNetwork.GetBelief<Belief>(beliefId);
}

/// <summary>
Expand Down Expand Up @@ -297,7 +298,7 @@ public float GetBeliefsPotential()
/// <param name="neutral"></param>
public void InitializeBeliefs(bool neutral)
{
if (!_networkBeliefs.Exists(_agentId))
if (!_agentBeliefNetwork.Exists(_agentId))
{
throw new NullReferenceException(nameof(_agentId));
}
Expand Down Expand Up @@ -342,7 +343,7 @@ public void InitializeAgentBelief(AgentBelief agentBelief, bool neutral)
BeliefLevel beliefLevel)
{
LearnNewBelief(beliefId, beliefLevel);
_networkBeliefs.GetAgentBelief<AgentBelief>(_agentId, beliefId).Learn(beliefBits, influenceWeight);
_agentBeliefNetwork.GetAgentBelief<AgentBelief>(_agentId, beliefId).Learn(beliefBits, influenceWeight);
}

/// <summary>
Expand All @@ -352,13 +353,13 @@ public void InitializeAgentBelief(AgentBelief agentBelief, bool neutral)
/// <param name="beliefLevel"></param>
public void LearnNewBelief(IId beliefId, BeliefLevel beliefLevel)
{
if (_networkBeliefs.Exists(_agentId, beliefId))
if (_agentBeliefNetwork.Exists(_agentId, beliefId))
{
return;
}

var agentBelief = new AgentBelief(beliefId, beliefLevel);
_networkBeliefs.Add(_agentId, agentBelief);
_agentBeliefNetwork.Add(_agentId, agentBelief);
InitializeBeliefs(true);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,13 @@
#region using directives

using System;
using Symu.Common;
using Symu.Common.Classes;
using Symu.Common.Interfaces.Agent;
using Symu.Common.Interfaces.Entity;
using Symu.Common.Math.ProbabilityDistributions;
using Symu.DNA;
using Symu.DNA.Agent;
using Symu.DNA.OneModeNetworks.Agent;
using Symu.Repository.Entity;
using Symu.Repository.Networks;

#endregion

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
using Symu.DNA.Knowledges;
using Symu.Messaging.Templates;
using Symu.Repository.Entity;
using Symu.Repository.Networks;
using static Symu.Common.Constants;

#endregion
Expand Down
2 changes: 1 addition & 1 deletion SourceCode/Symu/Classes/Agents/ReactiveAgent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
using System;
using Symu.Common;
using Symu.Common.Interfaces.Agent;
using Symu.DNA.Agent;
using Symu.DNA.OneModeNetworks.Agent;
using Symu.Environment;
using Symu.Messaging.Manager;
using Symu.Messaging.Messages;
Expand Down
2 changes: 1 addition & 1 deletion SourceCode/Symu/Classes/Murphies/MurphyIncompleteBelief.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

using System;
using Symu.Classes.Task;
using Symu.DNA.Beliefs;
using Symu.DNA.TwoModesNetworks.AgentBelief;
using Symu.Repository.Entity;

#endregion
Expand Down
1 change: 0 additions & 1 deletion SourceCode/Symu/Engine/SymuEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
using Symu.Common.Interfaces.Agent;
using Symu.Environment;
using Symu.Repository.Entity;
using Symu.Repository.Networks.Events;
using Symu.Results;

#endregion
Expand Down
3 changes: 1 addition & 2 deletions SourceCode/Symu/Environment/SymuEnvironment.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
using Symu.Messaging.Tracker;
using Symu.Repository;
using Symu.Repository.Entity;
using Symu.Repository.Networks.Events;
using Symu.Results;

#endregion
Expand Down Expand Up @@ -437,7 +436,7 @@ public void SetKnowledges()
foreach (var knowledge in Organization.Knowledges)
{
var belief = new Belief(knowledge, knowledge.Length, Organization.Models.Generator, Organization.Models.BeliefWeightLevel);
WhitePages.MetaNetwork.Beliefs.AddBelief(belief);
WhitePages.MetaNetwork.Belief.AddBelief(belief);
}
}

Expand Down
2 changes: 1 addition & 1 deletion SourceCode/Symu/Repository/Entity/AgentBelief.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
using Symu.Common.Classes;
using Symu.Common.Interfaces.Entity;
using Symu.Common.Math.ProbabilityDistributions;
using Symu.DNA.Beliefs;
using Symu.DNA.TwoModesNetworks.AgentBelief;
using static Symu.Common.Constants;

#endregion
Expand Down
2 changes: 1 addition & 1 deletion SourceCode/Symu/Repository/Entity/Belief.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
using Symu.Common.Classes;
using Symu.Common.Interfaces.Entity;
using Symu.Common.Math.ProbabilityDistributions;
using Symu.DNA.Beliefs;
using Symu.DNA.Knowledges;
using Symu.DNA.OneModeNetworks.Belief;

#endregion

Expand Down
2 changes: 1 addition & 1 deletion SourceCode/Symu/Repository/Entity/SymuEvent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#region using directives

using System;
using Symu.Repository.Networks.Events;
using Symu.DNA.OneModeNetworks.Event;

#endregion

Expand Down
3 changes: 1 addition & 2 deletions SourceCode/Symu/Repository/WhitePages.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@
using Symu.Common.Interfaces.Agent;
using Symu.Common.Interfaces.Entity;
using Symu.DNA;
using Symu.DNA.Agent;
using Symu.Repository.Networks;
using Symu.DNA.OneModeNetworks.Agent;

#endregion

Expand Down
1 change: 0 additions & 1 deletion SourceCode/SymuForm/SymuForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
using Symu.Engine;
using Symu.Environment;
using Symu.Repository.Entity;
using Symu.Repository.Networks.Events;
using Symu.Results;

#endregion
Expand Down
10 changes: 5 additions & 5 deletions SourceCode/SymuTests/Classes/Agents/CognitiveAgentTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,10 @@ public void Initialize()
_knowledges.Add(_knowledge);
_environment.WhitePages.MetaNetwork.Knowledge.AddKnowledge(_knowledge);
var belief = new Belief(_knowledge, _knowledge.Length, _environment.Organization.Models.Generator, _environment.Organization.Models.BeliefWeightLevel);
_environment.WhitePages.MetaNetwork.Beliefs.AddBelief(belief);
_environment.WhitePages.MetaNetwork.Belief.AddBelief(belief);
_environment.WhitePages.MetaNetwork.Knowledge.AddKnowledge(_knowledge2);
var belief2 = new Belief(_knowledge2, _knowledge2.Length, _environment.Organization.Models.Generator, _environment.Organization.Models.BeliefWeightLevel);
_environment.WhitePages.MetaNetwork.Beliefs.AddBelief(belief2);
_environment.WhitePages.MetaNetwork.Belief.AddBelief(belief2);
_agentKnowledge = new AgentKnowledge(_knowledge.Id, new float[] {1}, 0, -1, 0);
expertise.Add(_agentKnowledge);
_environment.WhitePages.MetaNetwork.Knowledge.Add(_agent.AgentId, expertise);
Expand Down Expand Up @@ -265,7 +265,7 @@ private Belief SetBeliefs()
{
_agent.Cognitive.KnowledgeAndBeliefs.HasBelief = true;
var belief = new Belief(1, "1", 1, RandomGenerator.RandomBinary, BeliefWeightLevel.RandomWeight);
_environment.WhitePages.MetaNetwork.Beliefs.AddBelief(belief);
_environment.WhitePages.MetaNetwork.Belief.AddBelief(belief);
_agent.BeliefsModel.AddBelief(belief.Id, BeliefLevel.NeitherAgreeNorDisagree);
_agent.BeliefsModel.InitializeBeliefs(true);
_agent.InfluenceModel.Influentialness = 1;
Expand Down Expand Up @@ -529,7 +529,7 @@ public void ReplyTest()
// Belief
_agent.Cognitive.MessageContent.CanSendBeliefs = true;
var belief = SetBeliefs();
_environment.WhitePages.MetaNetwork.Beliefs.GetAgentBelief<AgentBelief>(_agent.AgentId, belief.Id).BeliefBits.SetBit(0, 1);
_environment.WhitePages.MetaNetwork.AgentBelief.GetAgentBelief<AgentBelief>(_agent.AgentId, belief.Id).BeliefBits.SetBit(0, 1);

_agent.Reply(message);

Expand Down Expand Up @@ -562,7 +562,7 @@ public void ReplyDelayedTest()
// Belief
_agent.Cognitive.MessageContent.CanSendBeliefs = true;
var belief = SetBeliefs();
_environment.WhitePages.MetaNetwork.Beliefs.GetAgentBelief<AgentBelief>(_agent.AgentId, belief.Id).BeliefBits.SetBit(0, 1);
_environment.WhitePages.MetaNetwork.AgentBelief.GetAgentBelief<AgentBelief>(_agent.AgentId, belief.Id).BeliefBits.SetBit(0, 1);
_agent.ReplyDelayed(message, 0);

Assert.AreEqual(1, _agent.MessageProcessor.NumberSentPerPeriod);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,16 @@

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Symu.Classes.Agents;
using Symu.Classes.Agents.Models;
using Symu.Classes.Agents.Models.CognitiveModels;
using Symu.Classes.Organization;
using Symu.Classes.Task;
using Symu.Common;
using Symu.Common.Classes;
using Symu.Common.Interfaces.Agent;
using Symu.Common.Interfaces.Entity;
using Symu.DNA;
using Symu.DNA.Knowledges;
using Symu.Messaging.Templates;
using Symu.Repository.Entity;
using Symu.Repository.Networks;

#endregion

Expand Down Expand Up @@ -63,9 +59,9 @@ public void Initialize()
_beliefBitsNonNeutral = _belief.InitializeBits(models.Generator, BeliefLevel.NeitherAgreeNorDisagree);
_beliefBitsNeutral = _belief.InitializeBits(models.Generator, BeliefLevel.NoBelief);

_network.Beliefs.AddBelief(_belief);
_network.Belief.AddBelief(_belief);
_agentBelief = new AgentBelief(_belief.Id, BeliefLevel.NeitherAgreeNorDisagree);
_network.Beliefs.Add(_agentId, _agentBelief);
_network.AgentBelief.Add(_agentId, _agentBelief);

_taskBits.SetMandatory(new byte[] {0});
_taskBits.SetRequired(new byte[] {0});
Expand All @@ -81,7 +77,7 @@ public void AddBeliefsTest()
var agentKnowledge = new AgentKnowledge(2, new float[] {0}, 0, -1, 0);
_expertise.Add(agentKnowledge);
_beliefsModel.AddBeliefs(_expertise);
Assert.IsFalse(_network.Beliefs.Exists(_agentId, agentKnowledge.KnowledgeId));
Assert.IsFalse(_network.AgentBelief.Exists(_agentId, agentKnowledge.KnowledgeId));
}

/// <summary>
Expand All @@ -94,8 +90,8 @@ public void AddBeliefsTest1()
_expertise.Add(agentKnowledge);
_cognitiveArchitecture.KnowledgeAndBeliefs.HasBelief = true;
_beliefsModel.AddBeliefs(_expertise);
Assert.IsTrue(_network.Beliefs.Exists(_agentId));
Assert.AreEqual(2, _network.Beliefs.GetAgentBeliefs(_agentId).Count);
Assert.IsTrue(_network.AgentBelief.Exists(_agentId));
Assert.AreEqual(2, _network.AgentBelief.GetAgentBeliefs(_agentId).Count);
}

/// <summary>
Expand All @@ -106,7 +102,7 @@ public void InitializeBeliefTest()
{
_cognitiveArchitecture.KnowledgeAndBeliefs.HasInitialBelief = false;
_beliefsModel.InitializeBeliefs();
Assert.IsTrue(_network.Beliefs.Exists(_agentId));
Assert.IsTrue(_network.AgentBelief.Exists(_agentId));
}

/// <summary>
Expand All @@ -119,7 +115,7 @@ public void InitializeBeliefTest1()

_beliefsModel.AddBelief(_belief.Id, BeliefLevel.NeitherAgreeNorDisagree);
_beliefsModel.InitializeBeliefs();
var agentBelief = _network.Beliefs.GetAgentBelief<AgentBelief>(_agentId, _belief.Id);
var agentBelief = _network.AgentBelief.GetAgentBelief<AgentBelief>(_agentId, _belief.Id);
Assert.IsNotNull(agentBelief);
Assert.IsNotNull(agentBelief.BeliefBits);
}
Expand Down Expand Up @@ -226,7 +222,7 @@ public void GetFilteredBeliefToSendTest3()
public void GetFilteredBeliefToSendTest4()
{
_beliefsModel.InitializeBeliefs(false);
_network.Beliefs.GetAgentBelief<AgentBelief>(_agentId, _belief.Id).BeliefBits
_network.AgentBelief.GetAgentBelief<AgentBelief>(_agentId, _belief.Id).BeliefBits
.SetBit(0, 1);
_cognitiveArchitecture.MessageContent.CanSendBeliefs = true;
_cognitiveArchitecture.MessageContent.MinimumBeliefToSendPerBit = 0;
Expand Down

0 comments on commit 9e0eee2

Please sign in to comment.