Exemple #1
0
        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();
        }
Exemple #2
0
        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]);
                }
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }