Beispiel #1
0
        public void wypelnij_dane_z_bazy()
        {
            Algorytm    dane;
            ObslugaBazy obs_baz = new ObslugaBazy();

            dane = obs_baz.wyszukaj_zlecenia();
            symulowaneWyzarzanie       = obs_baz.wyszukaj_serwis_i_serwisantow();
            miejsca_zlecen             = dane.miejsca_zlecen;
            czas_zlecen                = dane.czas_zlecen;
            wspolrzedne_miejsca_zlecen = dane.wspolrzedne_miejsca_zlecen;
        }
Beispiel #2
0
        public bool save(double cmax)
        {
            if (symulowaneWyzarzanie.getBestTime() < 0)
            {
                return(false);
            }
            ObslugaBazy obs_baz = new ObslugaBazy();

            int[] route = symulowaneWyzarzanie.getBestRoute();
            obs_baz.zapiszHarmonogram(route, cmax);
            return(true);
        }
Beispiel #3
0
        public SA(int iloscSerwisow, int iloscSerwisantow, string miastoFirmy = "Łódź")
        {
            ObslugaBazy ob = new ObslugaBazy();

            _startPos         = ob.getWspolrzedne(miastoFirmy);
            _endPos           = _startPos;
            _bestTime         = -1;
            _T                = _Tmax;
            _iloscSerwisantow = iloscSerwisantow;
            _iloscSerwisow    = iloscSerwisow;
            _current          = new int[_iloscSerwisow + _iloscSerwisantow];
            _best             = new int[_iloscSerwisantow + _iloscSerwisow];
            _startPositionID  = new int[_iloscSerwisantow];
            _endPositionID    = new int[_iloscSerwisantow];

            int sredniaDlugosc               = (_iloscSerwisow + _iloscSerwisantow) / _iloscSerwisantow;
            int iloscDoUstalenia             = _iloscSerwisow;
            int iter                         = 0;
            int iloscBezrobotnychSerwisantow = _iloscSerwisantow;

            _startPositionID[0] = 0;
            while (iloscDoUstalenia > 0)
            {
                int copyIloscDoUstalenia = iloscDoUstalenia;

                for (int i = 0; i < copyIloscDoUstalenia / iloscBezrobotnychSerwisantow; i++)
                {
                    iloscDoUstalenia--;
                    _current[iter] = _iloscSerwisow - iloscDoUstalenia;
                    iter++;
                }
                _current[iter] = 0;
                if (iloscBezrobotnychSerwisantow > 0)
                {
                    _endPositionID[_iloscSerwisantow - iloscBezrobotnychSerwisantow] = iter;
                }
                iter++;
                if (iloscBezrobotnychSerwisantow > 1)
                {
                    _startPositionID[1 + _iloscSerwisantow - iloscBezrobotnychSerwisantow] = iter;
                }
                iloscBezrobotnychSerwisantow--;
            }
            for (int it = 0; it < _current.Length; it++)
            {
                _best[it] = _current[it];
            }

            _endPositionID[_iloscSerwisantow - 1] = iter - 1;
        }