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);
                }
            }
        }
Beispiel #2
0
        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);

            }
        }