private void AddPERTTask() { bool checkName = true; foreach (var t in PERTTaskList) { if (t.Name == Name) { checkName = false; } } if (Name != null && Name.Length > 0 && Optimistic_a > 0 && Pessimistic_b > 0 && MostLikely_m > 0 && checkName == true) { PERTTask perttask = new PERTTask(Name, Optimistic_a, Pessimistic_b, MostLikely_m, new List <PERTTask>()); PERTTaskList.Add(perttask); } else { ErrorMessage er = new ErrorMessage("The name exists or cost < 1!"); er.ShowDialog(); } setVariable(); }
private void setPostTask() { for (int i = 0; i < _PERTTaskList.Count(); i++) { if (_PERTTaskList[i].PreTask.Count() == 0) { continue; } for (int j = 0; j < _PERTTaskList[i].PreTask.Count(); j++) { PERTTask tmp = _PERTTaskList[i].PreTask[j]; tmp.PostTask.Add(_PERTTaskList[i]); } } }
private NetworkDiagramItem setLastNetworkDiagramItem(List <NetworkDiagramItem> listItem) { int maxCS = PERTTaskResult.Max(x => x.CS); PERTTask tmpPertTask = PERTTaskResult.Where(x => x.CS == maxCS).FirstOrDefault(); NetworkDiagramItem lastItem = new NetworkDiagramItem { DisplayedText = "End", Content = "End" }; lastItem.Effort = TimeSpan.Zero; lastItem.EarlyStart = StartProject.AddDays(maxCS); lastItem.EarlyFinish = StartProject.AddDays(maxCS); lastItem.LateStart = StartProject.AddDays(maxCS); lastItem.LateFinish = StartProject.AddDays(maxCS); lastItem.Slack = TimeSpan.Zero; listItem.Add(lastItem); return(lastItem); }
private void RemovePERTTask(object name) { string tmpName = name.ToString(); PERTTask findPERTTask = PERTTaskList.Where(x => x.Name == tmpName).FirstOrDefault(); foreach (var t in PERTTaskList) { foreach (var preT in t.PreTask.ToList()) { if (preT.Name == findPERTTask.Name) { t.PreTask.Remove(findPERTTask); } } } PERTTaskList.Remove(findPERTTask); setVariable(); }
private void initializePertTaskList() { PERTTask A = new PERTTask("A", 1, 2, 3, new List <PERTTask> { }); PERTTask B = new PERTTask("B", 2, 3, 4, new List <PERTTask> { }); PERTTask C = new PERTTask("C", 1, 2, 3, new List <PERTTask> { A }); PERTTask D = new PERTTask("D", 1, 2, 3, new List <PERTTask> { A }); PERTTask E = new PERTTask("E", 3, 4, 5, new List <PERTTask> { B }); PERTTask F = new PERTTask("F", 2, 4, 6, new List <PERTTask> { D, E }); PERTTask G = new PERTTask("G", 1, 3, 5, new List <PERTTask> { C }); PERTTask H = new PERTTask("H", 3, 5, 7, new List <PERTTask> { C }); PERTTask I = new PERTTask("I", 5, 7, 9, new List <PERTTask> { F, H }); _PERTTaskList.Add(A); _PERTTaskList.Add(B); _PERTTaskList.Add(C); _PERTTaskList.Add(D); _PERTTaskList.Add(E); _PERTTaskList.Add(F); _PERTTaskList.Add(G); _PERTTaskList.Add(H); _PERTTaskList.Add(I); }
public List <PERTTask> criticalPath(List <PERTTask> tasks) { PERTTask tt = new PERTTask(); tt.setExpectedTime(tasks); tt.setStandardDeviation(tasks); tt.setVariance(tasks); List <PERTTask> calc = new List <PERTTask>(); List <PERTTask> tmpTaskList = new List <PERTTask>(tasks); while (tmpTaskList.Count() != 0) { bool error = false; foreach (PERTTask task in tmpTaskList.ToList()) { bool tmp = check(calc, task.PostTask); if (tmp) { int critical = 0; foreach (PERTTask t in task.PostTask) { if (t.CS > critical) { critical = t.CS; } } task.CS = critical + task.Expected_t; calc.Add(task); tmpTaskList.Remove(task); error = true; } } if (!error) { ErrorMessage er = new ErrorMessage("Cyclic dependency!"); er.ShowDialog(); return(new List <PERTTask>()); } } tt.setMC(tasks); List <PERTTask> initialNodes = tt.getInitTask(tasks); tt.calcESAndEF(initialNodes); //ustawienie slack i CC foreach (var task in calc) { tt.setCC(task); tt.setSlack(task); } calc = calc.OrderBy(x => x.Name).ToList(); return(calc); }