Skip to content

Commit

Permalink
Add MessageResult
Browse files Browse the repository at this point in the history
  • Loading branch information
lmorisse committed Jun 3, 2020
1 parent 4d12219 commit 5ef13aa
Show file tree
Hide file tree
Showing 14 changed files with 262 additions and 120 deletions.
76 changes: 40 additions & 36 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,43 @@

## Unreleased

## 0.7.0 [](https://github.com/lmorisse/symu/compare/v0.7.0..v0.6.0)
* Renaming namespaces by [lmorisse](https://github.com/lmorisse)
* Update SymuForm, IterationResult for multiple iterations by [lmorisse](https://github.com/lmorisse)
* Add new project example: [SymuScenariosAndEvents](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuScenariosAndEvents) by [lmorisse](https://github.com/lmorisse)
* Add new project test: [SymuScenariosAndEventsTests](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuScenariosAndEventsTests) by [lmorisse](https://github.com/lmorisse)


## 0.6.0 [](https://github.com/lmorisse/symu/compare/v0.6.0..v0.5.0)
* Add MurphyIncompleteInformation by [lmorisse](https://github.com/lmorisse)
* Renaming SimulationEngine (SymuEngine), TimeStep (Schedule) by [lmorisse](https://github.com/lmorisse)
* Refactoring Murphies by [lmorisse](https://github.com/lmorisse)
* Add Agent.TimeSpent by [lmorisse](https://github.com/lmorisse)
* Add new project example: [SymuMurphiesAndBlockers](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuMurphiesAndBlockers) by [lmorisse](https://github.com/lmorisse)
* Add new project test: [SymuMurphiesAndBlockersTests](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuMurphiesAndBlockersTests) by [lmorisse](https://github.com/lmorisse)

## 0.5.0 [](https://github.com/lmorisse/symu/compare/v0.5.0..v0.4.0)
* Add new models : knowledge, Beliefs, Influence by [lmorisse](https://github.com/lmorisse)
* Add SymuTask.SetKnowledgesBits by [lmorisse](https://github.com/lmorisse)
* Refactoring NetworkBeliefs by [lmorisse](https://github.com/lmorisse)
* Add new project example: [SymuGroupAndInteraction](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuBeliefsAndInfluence) by [lmorisse](https://github.com/lmorisse)
* Add new project test: [SymuGroupAndInteractionTests](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuBeliefsAndInfluenceTests) by [lmorisse](https://github.com/lmorisse)

## 0.4.0 [](https://github.com/lmorisse/symu/compare/v0.4.0..v0.3.0)
* Add new project example: [SymuGroupAndInteraction](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuGroupAndInteraction) by [lmorisse](https://github.com/lmorisse)
* Add new project test: [SymuGroupAndInteractionTests](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuGroupAndInteractionTests) by [lmorisse](https://github.com/lmorisse)
* SymuEngine - add InteractionSphereModel by [lmorisse](https://github.com/lmorisse)
* SymuEngine - update InteractionPatterns by [lmorisse](https://github.com/lmorisse)

## 0.3.0 [](https://github.com/lmorisse/symu/compare/v0.3.0..v0.2.0)
* Add new project example: [SymuMessageAndTask](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuMessageAndTask) by [lmorisse](https://github.com/lmorisse)
* Add new project test: [SymuMessageAndTaskTest](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuMessageAndTaskTests) by [lmorisse](https://github.com/lmorisse)
* SymuEngine - delete EnvironmentEntity => OrganizationModels by [lmorisse](https://github.com/lmorisse)

## 0.2.0 [](https://github.com/lmorisse/symu/compare/v0.2.0..v0.1.0)
* Add new project example: [SymuLearnAndForget](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuLearnAndForget) by [lmorisse](https://github.com/lmorisse)
* Add new project test: [SymuLearnAndForgetTest](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuLearnAndForgetTests) by [lmorisse](https://github.com/lmorisse)
* Refactoring BlockerCollection, BlockerResults and TasksResults by [lmorisse](https://github.com/lmorisse)
* Add MessageResults by [lmorisse](https://github.com/lmorisse)


## 0.7.0 [](https://github.com/lmorisse/symu/compare/v0.7.0..v0.6.0) by [lmorisse](https://github.com/lmorisse)
* Renaming namespaces
* Update SymuForm, IterationResult for multiple iterations
* Add new project example: [SymuScenariosAndEvents](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuScenariosAndEvents)
* Add new project test: [SymuScenariosAndEventsTests](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuScenariosAndEventsTests)


## 0.6.0 [](https://github.com/lmorisse/symu/compare/v0.6.0..v0.5.0) by [lmorisse](https://github.com/lmorisse)
* Add MurphyIncompleteInformation
* Renaming SimulationEngine (SymuEngine), TimeStep (Schedule)
* Refactoring Murphies
* Add Agent.TimeSpent
* Add new project example: [SymuMurphiesAndBlockers](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuMurphiesAndBlockers)
* Add new project test: [SymuMurphiesAndBlockersTests](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuMurphiesAndBlockersTests)

## 0.5.0 [](https://github.com/lmorisse/symu/compare/v0.5.0..v0.4.0) by [lmorisse](https://github.com/lmorisse)
* Add new models : knowledge, Beliefs, Influence
* Add SymuTask.SetKnowledgesBits
* Refactoring NetworkBeliefs
* Add new project example: [SymuGroupAndInteraction](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuBeliefsAndInfluence)
* Add new project test: [SymuGroupAndInteractionTests](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuBeliefsAndInfluenceTests)

## 0.4.0 [](https://github.com/lmorisse/symu/compare/v0.4.0..v0.3.0) by [lmorisse](https://github.com/lmorisse)
* Add new project example: [SymuGroupAndInteraction](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuGroupAndInteraction)
* Add new project test: [SymuGroupAndInteractionTests](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuGroupAndInteractionTests)
* SymuEngine - add InteractionSphereModel
* SymuEngine - update InteractionPatterns

## 0.3.0 [](https://github.com/lmorisse/symu/compare/v0.3.0..v0.2.0) by [lmorisse](https://github.com/lmorisse)
* Add new project example: [SymuMessageAndTask](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuMessageAndTask)
* Add new project test: [SymuMessageAndTaskTest](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuMessageAndTaskTests)
* SymuEngine - delete EnvironmentEntity => OrganizationModels

## 0.2.0 [](https://github.com/lmorisse/symu/compare/v0.2.0..v0.1.0) by [lmorisse](https://github.com/lmorisse)
* Add new project example: [SymuLearnAndForget](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuLearnAndForget)
* Add new project test: [SymuLearnAndForgetTest](https://github.com/lmorisse/Symu/tree/master/Symu%20examples/SymuLearnAndForgetTests)
2 changes: 1 addition & 1 deletion Symu examples/SymuGroupAndInteraction/Home.cs
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ public override void DisplayStep()

private void UpDateMessages()
{
WriteTextSafe(lblMessagesSent, _environment.Messages.SentMessagesCount.ToString());
WriteTextSafe(lblMessagesSent, _environment.Messages.Result.SentMessagesCount.ToString());
var notAcceptedMessages = _environment.WhitePages.AllAgents()
.Sum(agent => agent.MessageProcessor.NotAcceptedMessages.Count);
WriteTextSafe(NotAcceptedMessages, notAcceptedMessages.ToString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public void NoGroupsOneMemberTest(int agentCount)
_environment.WorkersCount = (byte) agentCount;
_symu.Process();
Assert.AreEqual(0F, GetNotAcceptedMessages());
Assert.AreEqual(0F, _environment.Messages.SentMessagesCount);
Assert.AreEqual(0F, _environment.Messages.Result.SentMessagesCount);
Assert.AreEqual(0F, _environment.IterationResult.OrganizationFlexibility.Links.Last().Density);
Assert.AreEqual(0F, _environment.IterationResult.OrganizationFlexibility.Triads.Last().Density);
Assert.AreEqual(0F, _environment.IterationResult.OrganizationFlexibility.Sphere.Last().Density);
Expand Down
2 changes: 1 addition & 1 deletion Symu examples/SymuMessageAndTask/Home.cs
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ public override void DisplayStep()

private void UpDateMessages()
{
WriteTextSafe(lblMessagesSent, _environment.Messages.SentMessagesCount.ToString());
WriteTextSafe(lblMessagesSent, _environment.Messages.Result.SentMessagesCount.ToString());
}

private void UpdateAgents()
Expand Down
8 changes: 4 additions & 4 deletions Symu examples/SymuMessageAndTaskTests/IntegrationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ public void LimitMessageTest()
_organization.Templates.Human.Cognitive.InteractionCharacteristics.LimitMessagesPerPeriod = true;
_organization.Templates.Human.Cognitive.InteractionCharacteristics.MaximumMessagesPerPeriod = 0;
_symu.Process();
Assert.AreEqual(0, (int) _environment.Messages.SentMessagesCount);
Assert.AreEqual(0, (int) _environment.Messages.Result.SentMessagesCount);
Assert.AreEqual(0, _environment.IterationResult.Tasks.Total);
}

Expand All @@ -217,7 +217,7 @@ public void LimitMessageTest1()
_organization.Templates.Human.Cognitive.TasksAndPerformance.CanPerformTask = true;
_organization.Templates.Human.Cognitive.TasksAndPerformance.CanPerformTaskOnWeekEnds = true;
_symu.Process();
Assert.AreEqual(_environment.WorkersCount * NumberOfSteps, (int) _environment.Messages.SentMessagesCount);
Assert.AreEqual(_environment.WorkersCount * NumberOfSteps, (int) _environment.Messages.Result.SentMessagesCount);
Assert.AreEqual(0, _environment.IterationResult.Tasks.Total);
}

Expand All @@ -236,7 +236,7 @@ public void LimitMessageTest2()
_organization.Templates.Email.CostToSendLevel = GenericLevel.None;
_symu.Process();
Assert.AreEqual(2 * _environment.WorkersCount * NumberOfSteps,
(int) _environment.Messages.SentMessagesCount);
(int) _environment.Messages.Result.SentMessagesCount);
Assert.AreEqual(_environment.WorkersCount * NumberOfSteps, _environment.IterationResult.Tasks.Total);
}

Expand All @@ -257,7 +257,7 @@ public void LimitMessageTest3()
_organization.Templates.Email.CostToSendLevel = GenericLevel.None;
_symu.Process();
Assert.AreEqual(2 * _environment.WorkersCount * NumberOfSteps,
(int) _environment.Messages.SentMessagesCount);
(int) _environment.Messages.Result.SentMessagesCount);
Assert.AreEqual(_environment.WorkersCount * NumberOfSteps, _environment.IterationResult.Tasks.Total);
}

Expand Down
2 changes: 1 addition & 1 deletion Symu examples/SymuScenariosAndEvents/Home.cs
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ public override void DisplayStep()
DisplayButtons();
WriteTextSafe(TimeStep, _environment.Schedule.Step.ToString());
WriteTextSafe(TasksDone, _environment.IterationResult.Tasks.Done.ToString());
WriteTextSafe(MessagesSent, _environment.Messages.SentMessagesCount.ToString());
WriteTextSafe(MessagesSent, _environment.Messages.Result.SentMessagesCount.ToString());
}

public override void DisplayIteration()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public MessageBasedScenario(SymuEnvironment environment) : base(null, environmen
public override void PreStep()
{
base.PreStep();
if (NumberOfMessages != NoLimit && Environment.Messages.SentMessagesCount >= NumberOfMessages - 1)
if (NumberOfMessages != NoLimit && Environment.Messages.Result.SentMessagesCount >= NumberOfMessages - 1)
{
State = AgentState.Stopping;
}
Expand Down
68 changes: 12 additions & 56 deletions Symu source code/Symu/Messaging/Tracker/MessagesTracker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
using Symu.Classes.Agents;
using Symu.Messaging.Delayed;
using Symu.Messaging.Messages;
using Symu.Results.Blocker;

#endregion

Expand All @@ -37,45 +38,7 @@ public class MessagesTracker
/// </summary>
public DelayedMessages DelayedMessages { get; } = new DelayedMessages();

/// <summary>
/// Give the count of the messages sent including lost messages
/// </summary>
public uint SentMessagesCount { get; private set; }

/// <summary>
/// Give the count of the messages sent by email
/// </summary>
public uint SentMessagesByEmail { get; private set; }

/// <summary>
/// Give the count of the messages sent by platform
/// </summary>
public uint SentMessagesByPlatform { get; private set; }

/// <summary>
/// Give the count of the messages sent by IRC
/// </summary>
public uint SentMessagesByIrc { get; private set; }

/// <summary>
/// Give the count of the messages sent by Meeting
/// </summary>
public uint SentMessagesByMeeting { get; private set; }

/// <summary>
/// Give the count of the messages sent by face2Face
/// </summary>
public uint SentMessagesByFaceToFace { get; private set; }

/// <summary>
/// Give the count of the messages sent by phone
/// </summary>
public uint SentMessagesByPhone { get; private set; }

/// <summary>
/// Give the count of the messages with the state Lost
/// </summary>
public ushort LostMessagesCount { get; set; }
public MessageResult Result { get; } = new MessageResult();

public bool Debug { get; set; } = true;

Expand Down Expand Up @@ -106,7 +69,7 @@ public class MessagesTracker
/// Check that there is no lost messages and no waiting messages
/// </summary>
/// <returns></returns>
public bool CheckMessages => LostMessagesCount == 0 && _waitingMessagesCount == 0;
public bool CheckMessages => Result.LostMessagesCount == 0 && _waitingMessagesCount == 0;

#region Lost MessagesManager

Expand All @@ -122,7 +85,7 @@ public void EnqueueLostMessage(Message message)
}

message.State = MessageState.Lost;
LostMessagesCount++;
Result.LostMessagesCount++;
if (Debug)
{
LostMessages.Add(message);
Expand Down Expand Up @@ -165,14 +128,7 @@ public void Clear()
LastSentMessages.Clear();
DelayedMessages.Clear();
_waitingMessagesCount = 0;
SentMessagesCount = 0;
SentMessagesByEmail = 0;
SentMessagesByPlatform = 0;
SentMessagesByIrc = 0;
SentMessagesByMeeting = 0;
SentMessagesByFaceToFace = 0;
SentMessagesByPhone = 0;
LostMessagesCount = 0;
Result.Clear();
LostMessages.Clear();
WaitingMessages.Clear();
}
Expand Down Expand Up @@ -204,26 +160,26 @@ public void EnQueueWaitingMessage(Message message, ushort step)
}

_waitingMessagesCount++;
SentMessagesCount++;
Result.SentMessagesCount++;
switch (message.Medium)
{
case CommunicationMediums.Irc:
SentMessagesByIrc++;
Result.SentMessagesByIrc++;
break;
case CommunicationMediums.Email:
SentMessagesByEmail++;
Result.SentMessagesByEmail++;
break;
case CommunicationMediums.Phone:
SentMessagesByPhone++;
Result.SentMessagesByPhone++;
break;
case CommunicationMediums.Meeting:
SentMessagesByMeeting++;
Result.SentMessagesByMeeting++;
break;
case CommunicationMediums.FaceToFace:
SentMessagesByFaceToFace++;
Result.SentMessagesByFaceToFace++;
break;
case CommunicationMediums.ViaAPlatform:
SentMessagesByPlatform++;
Result.SentMessagesByPlatform++;
break;
case CommunicationMediums.System:
break;
Expand Down
2 changes: 1 addition & 1 deletion Symu source code/Symu/Results/Blocker/BlockerResults.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
namespace Symu.Results.Blocker
{
/// <summary>
/// Manage the task blockers metrics for the symu
/// Manage the task blockers results for the simulation
/// </summary>
public class BlockerResults
{
Expand Down
7 changes: 7 additions & 0 deletions Symu source code/Symu/Results/IterationResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ public IterationResult(SymuEnvironment environment)
/// Get the Tasks model metrics
/// </summary>
public TaskResults Tasks { get; } = new TaskResults();
/// <summary>
/// Get the message model metrics
/// </summary>
public MessageResults Messages { get; } = new MessageResults();

public float Capacity { get; set; }

Expand All @@ -79,6 +83,7 @@ public virtual void Initialize()
OrganizationKnowledgeAndBelief.Clear();
Blockers.Clear();
Tasks.Clear();
Messages.Clear();
SpecificResults.Clear();
Iteration = 0;
Step = 0;
Expand All @@ -98,6 +103,7 @@ public void PostStep()
{
Tasks.SetResults(_environment);
Blockers.SetResults(_environment);
Messages.SetResults(_environment);
}

public IterationResult Clone()
Expand All @@ -108,6 +114,7 @@ public IterationResult Clone()
OrganizationKnowledgeAndBelief.CopyTo(clone.OrganizationKnowledgeAndBelief);
Blockers.CopyTo(clone.Blockers);
Tasks.CopyTo(clone.Tasks);
Messages.CopyTo(clone.Messages);
clone.Iteration = Iteration;
clone.Step = Step;
clone.Success = Success;
Expand Down
70 changes: 70 additions & 0 deletions Symu source code/Symu/Results/Messaging/MessageResult.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#region Licence

// Description: Symu - Symu
// Website: https://symu.org
// Copyright: (c) 2020 laurent morisseau
// License : the program is distributed under the terms of the GNU General Public License

#endregion

namespace Symu.Results.Blocker
{
public class MessageResult
{
/// <summary>
/// Give the count of the messages sent including lost messages
/// </summary>
public uint SentMessagesCount { get; set; }

/// <summary>
/// Give the count of the messages sent by email
/// </summary>
public uint SentMessagesByEmail { get; set; }

/// <summary>
/// Give the count of the messages sent by platform
/// </summary>
public uint SentMessagesByPlatform { get; set; }

/// <summary>
/// Give the count of the messages sent by IRC
/// </summary>
public uint SentMessagesByIrc { get; set; }

/// <summary>
/// Give the count of the messages sent by Meeting
/// </summary>
public uint SentMessagesByMeeting { get; set; }

/// <summary>
/// Give the count of the messages sent by face2Face
/// </summary>
public uint SentMessagesByFaceToFace { get; set; }

/// <summary>
/// Give the count of the messages sent by phone
/// </summary>
public uint SentMessagesByPhone { get; set; }

/// <summary>
/// Give the count of the messages with the state Lost
/// </summary>
public ushort LostMessagesCount { get; set; }

/// <summary>
/// Initialize properties
/// </summary>
public void Clear()
{

SentMessagesCount = 0;
SentMessagesByEmail = 0;
SentMessagesByPlatform = 0;
SentMessagesByIrc = 0;
SentMessagesByMeeting = 0;
SentMessagesByFaceToFace = 0;
SentMessagesByPhone = 0;
LostMessagesCount = 0;
}
}
}

0 comments on commit 5ef13aa

Please sign in to comment.