Esempio n. 1
0
 /// <summary>
 /// Rekursive Überprüfung auf Zyklen indem der überprüft wird ob der Index eines beliebigen Nachfolgers bereits besucht wurde.
 /// Andernfalls wird der Nachfolger einem Klon der Liste hinzugefügt und mit diesem weitergerechnet.
 /// </summary>
 /// <param name="v">Aktuell zu überprüfendes Vorgang-Objekt.</param>
 /// <param name="list">Liste der bereits überprüften Vorgänge.</param>
 /// <returns>true falls ein Zyklus vorliegt, false falls nicht.</returns>
 private Boolean HasZyklus(Vorgang v, List <int> list)
 {
     foreach (var n in v.Nachfolger(Repo))
     {
         if (list.IndexOf(n.Id) > -1)
         {
             return(true);
         }
         var temp = new List <int>(list);
         temp.Add(n.Id);
         return(HasZyklus(n, temp));
     }
     return(false);
 }
Esempio n. 2
0
 /// <summary>
 /// Weist dem Vorgang SEZ = FEZ zu falls dieser ein Endvorgang ist. Andernfalls wird die kleinste späteste Anfangszeit aller Nachfolger für diesen Wert verwendet.
 /// Setzt die früheste Endzeit aus der Dauer und der frühesten Anfangszeit zusammen.
 /// </summary>
 /// <param name="v">Zu verarbeitender Vorgang.</param>
 private void KalkRueckwaerts(Vorgang v)
 {
     if (v.isEnd)
     {
         v.SEZ = v.FEZ;
     }
     else
     {
         v.SEZ = v.Nachfolger(Repo).OrderBy(o => o.SAZ).ToList().First().SAZ;
     }
     v.SAZ = v.SEZ - v.Dauer;
     foreach (var vo in v.Vorgaenger(Repo))
     {
         KalkRueckwaerts(vo);
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Weist dem Vorgang FAZ = 0 zu falls dieser ein Startvorgang ist. Andernfalls wird die größte früheste Endzeit aller Vorgänger für diesen Wert verwendet.
 /// Setzt die früheste Endzeit aus der Dauer und der frühesten Anfangszeit zusammen.
 /// </summary>
 /// <param name="v">Zu verarbeitender Vorgang.</param>
 private void KalkVorwaerts(Vorgang v)
 {
     if (v.isStart)
     {
         v.FAZ = 0;
     }
     else
     {
         v.FAZ = v.Vorgaenger(Repo).OrderByDescending(o => o.FEZ).ToList().First().FEZ;
     }
     v.FEZ = v.FAZ + v.Dauer;
     foreach (var n in v.Nachfolger(Repo))
     {
         KalkVorwaerts(n);
     }
 }