Skip to content

Commit

Permalink
Refactoring AgentState
Browse files Browse the repository at this point in the history
  • Loading branch information
lmorisse committed Aug 17, 2020
1 parent e9dbb1f commit e7e35f1
Show file tree
Hide file tree
Showing 39 changed files with 167 additions and 174 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public override void SetAgents()
agentIds.Add(actor.Id);
}

WhitePages.Network.NetworkLinks.AddLinks(agentIds);
WhitePages.MetaNetwork.NetworkLinks.AddLinks(agentIds);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ public void NoRiskAversionTest()
public void NoWeightTest()
{
_environment.Organization.Murphies.IncompleteBelief.MandatoryRatio = 1;
_environment.WhitePages.Network.NetworkBeliefs.BeliefWeightLevel = BeliefWeightLevel.NoWeight;
_environment.WhitePages.MetaNetwork.NetworkBeliefs.BeliefWeightLevel = BeliefWeightLevel.NoWeight;
_simulation.Process();
CheckNoChange();
var tasksDoneRatio = _environment.Schedule.Step * _environment.WorkersCount < Constants.Tolerance
Expand All @@ -259,7 +259,7 @@ public void FullWeightTest()
_environment.WorkerTemplate.Cognitive.InternalCharacteristics.RiskAversionLevel =
GenericLevel.Complete;
_environment.Organization.Murphies.IncompleteBelief.ThresholdForReacting = 1;
_environment.WhitePages.Network.NetworkBeliefs.BeliefWeightLevel = BeliefWeightLevel.FullWeight;
_environment.WhitePages.MetaNetwork.NetworkBeliefs.BeliefWeightLevel = BeliefWeightLevel.FullWeight;
_simulation.Process();
CheckNoChange();
var tasksDoneRatio = _environment.Schedule.Step * _environment.WorkersCount < Constants.Tolerance
Expand All @@ -281,7 +281,7 @@ public void FullWeightTest1()
_environment.WorkerTemplate.Cognitive.InternalCharacteristics.RiskAversionLevel =
GenericLevel.None;
_environment.Organization.Murphies.IncompleteBelief.ThresholdForReacting = 1;
_environment.WhitePages.Network.NetworkBeliefs.BeliefWeightLevel = BeliefWeightLevel.FullWeight;
_environment.WhitePages.MetaNetwork.NetworkBeliefs.BeliefWeightLevel = BeliefWeightLevel.FullWeight;
_simulation.Process();
CheckNoChange();
var tasksDoneRatio = _environment.Schedule.Step * _environment.WorkersCount < Constants.Tolerance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public override void SetAgents()
{
GroupId = group.Id
};
WhitePages.Network.AddMemberToGroup(actor.Id, 100, group.Id);
WhitePages.MetaNetwork.AddMemberToGroup(actor.Id, 100, group.Id, false);
//Beliefs are added with knowledge
SetKnowledge(actor, Organization.Knowledges, i);
SetActivity(actor.Id, _activities, i, group.Id);
Expand All @@ -91,18 +91,18 @@ private void SetKnowledge(CognitiveAgent actor, IReadOnlyList<Knowledge> knowled
{
case 0:
// same Knowledge for all
WhitePages.Network.NetworkKnowledges.Add(actor.Id, knowledges[0].Id, KnowledgeLevel,
WhitePages.MetaNetwork.NetworkKnowledges.Add(actor.Id, knowledges[0].Id, KnowledgeLevel,
actor.Cognitive.InternalCharacteristics);
break;
case 1:
// Knowledge is by group
WhitePages.Network.NetworkKnowledges.Add(actor.Id, knowledges[i].Id, KnowledgeLevel,
WhitePages.MetaNetwork.NetworkKnowledges.Add(actor.Id, knowledges[i].Id, KnowledgeLevel,
actor.Cognitive.InternalCharacteristics);
break;
case 2:
// Knowledge is randomly defined for agentId
var index = DiscreteUniform.Sample(0, GroupsCount - 1);
WhitePages.Network.NetworkKnowledges.Add(actor.Id, knowledges[index].Id, KnowledgeLevel,
WhitePages.MetaNetwork.NetworkKnowledges.Add(actor.Id, knowledges[index].Id, KnowledgeLevel,
actor.Cognitive.InternalCharacteristics);
break;
}
Expand All @@ -114,16 +114,16 @@ private void SetActivity(AgentId agentId, IReadOnlyList<string> activities, int
{
case 0:
// same activity for all
WhitePages.Network.NetworkActivities.AddActivity(agentId, activities[0], groupId);
WhitePages.MetaNetwork.NetworkActivities.AddActivity(agentId, activities[0], groupId);
break;
case 1:
// Activity is by group
WhitePages.Network.NetworkActivities.AddActivity(agentId, activities[i], groupId);
WhitePages.MetaNetwork.NetworkActivities.AddActivity(agentId, activities[i], groupId);
break;
case 2:
// Activity is randomly defined for agentId
var index = DiscreteUniform.Sample(0, GroupsCount - 1);
WhitePages.Network.NetworkActivities.AddActivity(agentId, activities[index], groupId);
WhitePages.MetaNetwork.NetworkActivities.AddActivity(agentId, activities[index], groupId);
break;
}
}
Expand Down
16 changes: 8 additions & 8 deletions Symu examples/SymuGroupAndInteractionTests/IntegrationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@ public void KnowledgeSphereCount(int groupsCount)
_organization.Templates.Human.Cognitive.InteractionPatterns.MaxNumberOfNewInteractions = 1;
_environment.Knowledge = 1;
_simulation.Process();
var links = _environment.WhitePages.Network.NetworkLinks.Count;
var links = _environment.WhitePages.MetaNetwork.NetworkLinks.Count;
var triads = _environment.IterationResult.OrganizationFlexibility.Triads.Last().ActualNumber;
_simulation.Process();
Assert.AreEqual(links, _environment.WhitePages.Network.NetworkLinks.Count);
Assert.AreEqual(links, _environment.WhitePages.MetaNetwork.NetworkLinks.Count);
Assert.AreEqual(triads, _environment.IterationResult.OrganizationFlexibility.Triads.Last().ActualNumber);
}

Expand Down Expand Up @@ -144,12 +144,12 @@ public void LinksCountTest(int workers, float links, float triads, float sphere)
[TestMethod]
public void TriadsTest5()
{
SetInteractionPatterns(InteractionStrategy.Homophily);
SetInteractionPatterns(InteractionStrategy.Knowledge);
_environment.GroupsCount = 1;
_environment.WorkersCount = 3;
_organization.Models.InteractionSphere.RandomlyGeneratedSphere = true;
_organization.Models.InteractionSphere.MinSphereDensity = 0;
_organization.Models.InteractionSphere.MaxSphereDensity = 0;
_organization.Models.InteractionSphere.MinSphereDensity = 1;
_organization.Models.InteractionSphere.MaxSphereDensity = 1;
_simulation.Process();
Assert.AreEqual(100F, _environment.IterationResult.OrganizationFlexibility.Triads.Last().Density);
}
Expand All @@ -165,17 +165,17 @@ public void CoworkersCountTest()
_environment.Knowledge = 1;
SetInteractionPatterns(InteractionStrategy.Knowledge);
_simulation.Process();
var links = _environment.WhitePages.Network.NetworkLinks.Count;
var links = _environment.WhitePages.MetaNetwork.NetworkLinks.Count;
var triads = _environment.IterationResult.OrganizationFlexibility.Triads.Last().ActualNumber;
// results should be a multiple of groups count, because interaction sphere can't changes
_environment.GroupsCount = 2;
_simulation.Process();
Assert.AreEqual(links * _environment.GroupsCount, _environment.WhitePages.Network.NetworkLinks.Count);
Assert.AreEqual(links * _environment.GroupsCount, _environment.WhitePages.MetaNetwork.NetworkLinks.Count);
Assert.AreEqual(triads * _environment.GroupsCount,
_environment.IterationResult.OrganizationFlexibility.Triads.Last().ActualNumber);
_environment.GroupsCount = 3;
_simulation.Process();
Assert.AreEqual(links * _environment.GroupsCount, _environment.WhitePages.Network.NetworkLinks.Count);
Assert.AreEqual(links * _environment.GroupsCount, _environment.WhitePages.MetaNetwork.NetworkLinks.Count);
Assert.AreEqual(triads * _environment.GroupsCount,
_environment.IterationResult.OrganizationFlexibility.Triads.Last().ActualNumber);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class ExampleEnvironment : SymuEnvironment
public ExpertAgent ExpertAgent { get; private set; }
public Knowledge Knowledge { get; set; }
public KnowledgeLevel KnowledgeLevel { get; set; }
public Database Wiki => WhitePages.Network.NetworkDatabases.Repository.List.First();
public Database Wiki => WhitePages.MetaNetwork.NetworkDatabases.Repository.List.First();

public override void SetOrganization(OrganizationEntity organization)
{
Expand Down Expand Up @@ -82,7 +82,7 @@ public override void SetAgents()
DoesNotLearnAgent = new LearnAgent(Organization.NextEntityIndex(), this, Organization.Templates.Human);
ExpertAgent = new ExpertAgent(Organization.NextEntityIndex(), this, Organization.Templates.Human);
// Active link between expert and LearnByAskingAgent to be able to exchange information
WhitePages.Network.NetworkLinks.AddLink(LearnByAskingAgent.Id, ExpertAgent.Id);
WhitePages.MetaNetwork.NetworkLinks.AddLink(LearnByAskingAgent.Id, ExpertAgent.Id);
}
}
}
6 changes: 3 additions & 3 deletions Symu examples/SymuLearnAndForget/Classes/LearnAgent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public class LearnAgent : CognitiveAgent
public LearnAgent(ushort agentKey, SymuEnvironment environment, CognitiveArchitectureTemplate template) : base(
new AgentId(agentKey, ClassKey), environment, template)
{
Wiki = Environment.WhitePages.Network.NetworkDatabases.Repository.List.First();
Wiki = Environment.WhitePages.MetaNetwork.NetworkDatabases.Repository.List.First();
Knowledge = GetKnowledge();
}

Expand Down Expand Up @@ -88,8 +88,8 @@ protected virtual void AfterSetTaskDone(object sender, TaskEventArgs e)

private Knowledge GetKnowledge()
{
var knowledgeId = Environment.WhitePages.Network.NetworkKnowledges.Repository.List.First().Id;
return Environment.WhitePages.Network.NetworkKnowledges.GetKnowledge(knowledgeId);
var knowledgeId = Environment.WhitePages.MetaNetwork.NetworkKnowledges.Repository.List.First().Id;
return Environment.WhitePages.MetaNetwork.NetworkKnowledges.GetKnowledge(knowledgeId);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ public override void SetAgents()
GroupId = group.Id
};
CommunicationTemplate communication = new EmailTemplate();
WhitePages.Network.AddEmail(actor.Id, communication);
WhitePages.Network.AddMemberToGroup(actor.Id, 100, group.Id);
WhitePages.MetaNetwork.AddEmail(actor.Id, communication);
WhitePages.MetaNetwork.AddMemberToGroup(actor.Id, 100, group.Id, false);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ public override void SetAgents()
GroupId = group.Id
};
CommunicationTemplate communication = new EmailTemplate();
WhitePages.Network.AddEmail(actor.Id, communication);
WhitePages.Network.AddMemberToGroup(actor.Id, 100, group.Id);
WhitePages.MetaNetwork.AddEmail(actor.Id, communication);
WhitePages.MetaNetwork.AddMemberToGroup(actor.Id, 100, group.Id, false);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ private PersonAgent AddPersonAgent()
GroupId = _groupId
};
CommunicationTemplate communication = new EmailTemplate();
WhitePages.Network.AddEmail(actor.Id, communication);
WhitePages.Network.AddMemberToGroup(actor.Id, 100, _groupId);
WhitePages.MetaNetwork.AddEmail(actor.Id, communication);
WhitePages.MetaNetwork.AddMemberToGroup(actor.Id, 100, _groupId, false);
return actor;
}

Expand All @@ -96,7 +96,7 @@ public void KnowledgeEvent(object sender, EventArgs e)
{
// knowledge length of 10 is arbitrary in this example
var knowledge = new Knowledge(KnowledgeCount, KnowledgeCount.ToString(), 10);
WhitePages.Network.AddKnowledge(knowledge);
WhitePages.MetaNetwork.AddKnowledge(knowledge);

foreach (var person in WhitePages.FilteredCognitiveAgentsByClassKey(PersonAgent.ClassKey))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public bool AcceptNewInteraction(AgentId senderId)
return true;
}

if (Environment.WhitePages.Network.NetworkLinks.HasActiveLink(Id, senderId))
if (Environment.WhitePages.MetaNetwork.NetworkLinks.HasActiveLink(Id, senderId))
{
return true;
}
Expand Down Expand Up @@ -143,7 +143,7 @@ public bool AcceptNewInteraction(AgentId senderId)
if (Environment.Organization.Models.InteractionSphere.SphereUpdateOverTime)
{
// Message.Sender is now part of agent interaction sphere
Environment.WhitePages.Network.NetworkLinks.AddLink(Id, senderId);
Environment.WhitePages.MetaNetwork.NetworkLinks.AddLink(Id, senderId);
}

return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,7 @@ public void CheckBlockerIncompleteBelief(SymuTask task, ushort knowledgeId)
byte mandatoryIndex = 0;
byte requiredIndex = 0;

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

var belief = Environment.WhitePages.Network.NetworkBeliefs.GetBelief(knowledgeId);
var belief = Environment.WhitePages.MetaNetwork.NetworkBeliefs.GetBelief(knowledgeId);
MurphyIncompleteBelief.CheckRiskAversion(belief, taskBits, BeliefsModel.Beliefs, ref mandatoryScore,
ref mandatoryIndex, -Cognitive.InternalCharacteristics.RiskAversionValue());
if (!(mandatoryScore <= -Cognitive.InternalCharacteristics.RiskAversionValue()))
Expand Down
20 changes: 10 additions & 10 deletions Symu source code/Symu/Classes/Agents/CognitiveAgent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@ protected CognitiveAgent(AgentId agentId, SymuEnvironment environment, Cognitive
/// <summary>
/// If agent has an email, get the email database of the agent
/// </summary>
protected Database Email => Environment.WhitePages.Network.NetworkDatabases.GetDatabase(Id.Key);
protected Database Email => Environment.WhitePages.MetaNetwork.NetworkDatabases.GetDatabase(Id.Key);

/// <summary>
/// If agent has an email
/// </summary>
protected bool HasEmail => Environment.WhitePages.Network.NetworkDatabases.Exists(Id, Id.Key);
protected bool HasEmail => Environment.WhitePages.MetaNetwork.NetworkDatabases.Exists(Id, Id.Key);

//TODO => all the models should be included in the cognitive architecture
/// <summary>
Expand Down Expand Up @@ -175,7 +175,7 @@ public IEnumerable<AgentId> GetAgentIdsForNewInteractions()
return new List<AgentId>();
}

var agentIds = Environment.WhitePages.Network.InteractionSphere.GetAgentIdsForNewInteractions(Id,
var agentIds = Environment.WhitePages.MetaNetwork.InteractionSphere.GetAgentIdsForNewInteractions(Id,
Cognitive.InteractionPatterns.NextInteractionStrategy()).ToList();
return FilterAgentIdsToInteract(agentIds);
}
Expand All @@ -187,7 +187,7 @@ public IEnumerable<AgentId> GetAgentIdsForNewInteractions()
/// </summary>
public IEnumerable<AgentId> GetAgentIdsForInteractions(InteractionStrategy interactionStrategy)
{
return Environment.WhitePages.Network.InteractionSphere
return Environment.WhitePages.MetaNetwork.InteractionSphere
.GetAgentIdsForInteractions(Id, interactionStrategy, Cognitive.InteractionPatterns).ToList();
}

Expand Down Expand Up @@ -228,16 +228,16 @@ protected override void InitializeModels()
base.InitializeModels();
// Initialize agent models
LearningModel = new LearningModel(Id, Environment.Organization.Models,
Environment.WhitePages.Network.NetworkKnowledges, Cognitive);
Environment.WhitePages.MetaNetwork.NetworkKnowledges, Cognitive);
ForgettingModel = new ForgettingModel(Id, Environment.Organization.Models,
Cognitive, Environment.WhitePages.Network.NetworkKnowledges);
Cognitive, Environment.WhitePages.MetaNetwork.NetworkKnowledges);
InfluenceModel = new InfluenceModel(Id, Environment.Organization.Models.Influence,
Cognitive.InternalCharacteristics, Environment.WhitePages.Network);
Cognitive.InternalCharacteristics, Environment.WhitePages.MetaNetwork);
BeliefsModel = new BeliefsModel(Id, Environment.Organization.Models.Beliefs, Cognitive,
Environment.WhitePages.Network);
Environment.WhitePages.MetaNetwork);
KnowledgeModel = new KnowledgeModel(Id, Environment.Organization.Models.Knowledge, Cognitive,
Environment.WhitePages.Network);
ActivityModel = new ActivityModel(Id, Cognitive, Environment.WhitePages.Network);
Environment.WhitePages.MetaNetwork);
ActivityModel = new ActivityModel(Id, Cognitive, Environment.WhitePages.MetaNetwork);
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public class ActivityModel
/// <param name="agentId"></param>
/// <param name="cognitiveArchitecture"></param>
/// <param name="network"></param>
public ActivityModel(AgentId agentId, CognitiveArchitecture cognitiveArchitecture, Network network)
public ActivityModel(AgentId agentId, CognitiveArchitecture cognitiveArchitecture, MetaNetwork network)
{
if (cognitiveArchitecture == null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public class BeliefsModel
/// <param name="cognitiveArchitecture"></param>
/// <param name="network"></param>
public BeliefsModel(AgentId agentId, ModelEntity entity, CognitiveArchitecture cognitiveArchitecture,
Network network)
MetaNetwork network)
{
if (entity is null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public class InfluenceModel
/// <param name="internalCharacteristics"></param>
/// <param name="network"></param>
public InfluenceModel(AgentId agentAgentId, ModelEntity entity, InternalCharacteristics internalCharacteristics,
Network network)
MetaNetwork network)
{
if (entity is null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class KnowledgeModel
/// <param name="cognitiveArchitecture"></param>
/// <param name="network"></param>
public KnowledgeModel(AgentId agentId, ModelEntity entity, CognitiveArchitecture cognitiveArchitecture,
Network network)
MetaNetwork network)
{
if (entity is null)
{
Expand Down

0 comments on commit e7e35f1

Please sign in to comment.