Esempio n. 1
0
        //musze wziac kazda pielegniarke z dnia i sprawdzic czy pracuje one jeszcze w tym samym dniu
        public override bool HC2EachDayOnlyOneShiftForNurse()
        {
            NurseNavigator.clearChromosomeStatements(); //zeruje zeby pobierało od początku Chromosoma te pielegniarki
            NurseClass checkedNurse = NurseNavigator.getNextNurseFromChromosome(chromosomeVectorReference);

            while (checkedNurse != null)
            {
                if (CheckThatIsOnlyOneNurseOnDay(checkedNurse, NurseNavigator.CurrentWeek, NurseNavigator.CurrentDay) == false)//jesli zwroci false to pielegniarki sie powatrzaja w danym dniu wiec przerywam sprawdzanie
                {
                    return(false);
                }
                checkedNurse = NurseNavigator.getNextNurseFromChromosome(chromosomeVectorReference);
            }
            return(true);
        }
Esempio n. 2
0
        public NurseClass getRandomNurseFromPoolAndRemoveNurse()
        {
            Random rnd = new Random();
            sbyte  indexOfRandomNurse;

            if (listOfNurses.Count > 2)
            {
                indexOfRandomNurse = (sbyte)(rnd.Next(1, listOfNurses.Count) - 1);
            }
            else
            {
                indexOfRandomNurse = 0;
            }

            NurseClass selectedNurse = listOfNurses[indexOfRandomNurse];

            listOfNurses.RemoveAt(indexOfRandomNurse);
            return(selectedNurse);
        }
Esempio n. 3
0
        /// <summary>
        /// Zwraca true jesli jest tylko jedna pielegniarka w danym dniu
        /// </summary>
        private bool CheckThatIsOnlyOneNurseOnDay(NurseClass checkedNurse, sbyte week, sbyte day)
        {
            //tu musze sprawdzic czy jest tylko jedna w danym dniu
            int duplicateNursesCounter = 0; //pielegniarki ktore sie powatrzaja

            //wybieram wszystkie pielegnairki z danego dnia i sprawdzam z podana w paramatrze

            for (sbyte shift = 0; shift < 4; shift++)
            {
                for (int nurse = 0; nurse < chromosomeVectorReference[week][day][shift].Length; nurse++)
                {
                    if (chromosomeVectorReference[week][day][shift][nurse].ID == checkedNurse.ID)
                    {
                        duplicateNursesCounter++;
                    }
                }
            }

            if (duplicateNursesCounter > 1)
            {
                return(false);                             //jesli wiecej niz jedna
            }
            return(true);                                  //jesli jedna
        }