private void DownPropagate(Goal parent, AgentAssignment assignment) { if (assignment.InSystems == null) assignment.InSystems = new HashSet<AlternativeSystem> (); IEnumerable<AlternativeSystem> systems_to_add; if (assignment.SystemReference != null) { systems_to_add = parent.InSystems.Where (a => a.Equals(assignment.SystemReference)); } else { systems_to_add = parent.InSystems; } foreach (var s in systems_to_add) { assignment.InSystems.Add (s); } foreach (var agent in assignment.Agents()) { if (agent.InSystems == null) agent.InSystems = new HashSet<AlternativeSystem> (); foreach (var a in systems_to_add) { agent.InSystems.Add (a); } } }
public void ExportAssignment(Goal g, AgentAssignment assignement) { var tempGUID = Guid.NewGuid().ToString(); writer.WriteLine (@"""{0}""[shape=circle,width=.1,fixedsize=true,label=""""];", tempGUID); writer.WriteLine (@"""{0}"" -> ""{1}"" [arrowtail=onormal, label="" {2}""];", g.Identifier, tempGUID, g.InSystems.SetEquals(model.RootSystems()) ? "" : string.Join (", ", assignement.InSystems.Select (x => x.FriendlyName))); foreach (var agent in assignement.Agents()) { writer.WriteLine (@"""{0}"" -> ""{1}"" [arrowtail=none];", tempGUID, agent.Identifier); } }