예제 #1
0
        private static KonfiguracjaGrupowania Konfiguracja_SA4CPrim_2007(Random maszynaLosujaca, int liczIteracji, int zasiegWzroku,
                                                                         IEnumerable <Mrowka> mrowki, IOdleglosc <Mrowka> miaraOdleglosci)
        {
            var bazowePrawdopAktywacji = 0.1;

            var przestrzen         = Przestrzen.StworzPrzestrzenDla(mrowki.Count());
            var sasiedztwo         = new Sasiedztwo(przestrzen, zasiegWzroku, zasiegWzroku);
            var czas               = new Czas(liczIteracji);
            var srednieDopasowania = new SrednieDopasowaniaMrowek();
            var presja             = new StalaPresja(2);
            var srednieOdleglosci  = new SrednieOdleglosciDlaAgentow(mrowki, miaraOdleglosci);

            return(new KonfiguracjaGrupowania()
            {
                MaszynaLosujaca = maszynaLosujaca,
                SrednieDopasowania = srednieDopasowania,
                Aktywator = new Aktywator(maszynaLosujaca, bazowePrawdopAktywacji, presja),
                LiczbaIteracji = liczIteracji,
                Przestrzen = przestrzen,
                Sasiedztwo = sasiedztwo,
                SrednieOdleglosci = srednieOdleglosci,
                Oceniacz = new Oceniacz(miaraOdleglosci, srednieOdleglosci, sasiedztwo),
                Czas = czas
            });
        }
예제 #2
0
        private static KonfiguracjaGrupowania Konfiguracja_A4C_2007(Random maszynaLosujaca, int liczIteracji, int zasiegWzroku,
                                                                    IEnumerable <Mrowka> mrowki, IOdleglosc <Mrowka> miaraOdleglosci)
        {
            var deltaT  = 50;
            var kAlfa   = 0.5;
            var kLambda = 1.0;
            var bazowePrawdopAktywacji = 0.1;

            var przestrzen         = Przestrzen.StworzPrzestrzenDla(mrowki.Count());
            var sasiedztwo         = new Sasiedztwo(przestrzen, zasiegWzroku, zasiegWzroku);
            var czas               = new Czas(liczIteracji);
            var srednieDopasowania = new SrednieDopasowaniaMrowek();
            var presja             = new PresjaZaleznaOdCzasu(czas, srednieDopasowania, kLambda);
            var srednieOdleglosci  = new SrednieOdleglosciOdCzasu(czas, srednieDopasowania, new KonfiguracjaSredniejOdlOdCzasu()
            {
                IleJednostekCzasuSpogladacWstecz           = deltaT,
                SposobOkreslaniaWartosciPrzedUaktywnieniem = new NajsredniejszaOdleglosc(mrowki, miaraOdleglosci),
                StopienWplywuRoznicySrednichNaWynikWDanejJednostceCzasu = kAlfa
            });

            return(new KonfiguracjaGrupowania()
            {
                MaszynaLosujaca = maszynaLosujaca,
                SrednieDopasowania = srednieDopasowania,
                Aktywator = new Aktywator(maszynaLosujaca, bazowePrawdopAktywacji, presja),
                LiczbaIteracji = liczIteracji,
                Przestrzen = przestrzen,
                Sasiedztwo = sasiedztwo,
                SrednieOdleglosci = srednieOdleglosci,
                Oceniacz = new Oceniacz(miaraOdleglosci, srednieOdleglosci, sasiedztwo),
                Czas = czas
            });
        }
예제 #3
0
        private static void KlasyfikujPoFakcie(Przestrzen przestrzen, IEnumerable <Mrowka> mrowki, int sX, int sY)
        {
            Sasiedztwo               sasiedztwo      = new Sasiedztwo(przestrzen, sX, sY);
            OkreslaczKlas            okreslacz       = new OkreslaczKlas(sasiedztwo);
            Dictionary <Mrowka, int> noweKlasyMrowek = new Dictionary <Mrowka, int>();

            for (int i = 0; i < 100; i++)
            {
                for (int x = 0; x < przestrzen.DlugoscBoku; x++)
                {
                    for (int y = 0; y < przestrzen.DlugoscBoku; y++)
                    {
                        var mrowka = przestrzen[y][x];
                        if (mrowka is Mrowka m)
                        {
                            var nowaKlasa = okreslacz.OkreslKlase(mrowka, (x, y));
                            noweKlasyMrowek[mrowka] = nowaKlasa;
                        }
                    }
                }

                foreach (var mrowkaIKlasa in noweKlasyMrowek)
                {
                    var mrowka = mrowkaIKlasa.Key;
                    var klasa  = mrowkaIKlasa.Value;
                    mrowka.Klasa = klasa;
                }
            }

            //MyCSetophylax.PrzestrzenZyciowa.Wyswietlanie.ReprezentacjaKlasaMrowki a = new MyCSetophylax.PrzestrzenZyciowa.Wyswietlanie.ReprezentacjaKlasaMrowki();
            //MyCSetophylax.PrzestrzenZyciowa.Wyswietlanie.WyswietlaczPrzestrzeni b = new MyCSetophylax.PrzestrzenZyciowa.Wyswietlanie.WyswietlaczPrzestrzeni(a);
            //b.Wyswietl(przestrzen);
        }
예제 #4
0
 public ZachlannyPrzemieszczacz(double szansaNaZachlannosc, IPrzemieszczacz alternatywnyPrzemieszczacz, IOceniacz oceniacz,
                                Przestrzen przestrzen, Sasiedztwo sasiedztwo, Random los)
 {
     this.szansaNaZachlannosc        = szansaNaZachlannosc;
     this.alternatywnyPrzemieszczacz = alternatywnyPrzemieszczacz;
     this.oceniacz   = oceniacz;
     this.przestrzen = przestrzen;
     this.sasiedztwo = sasiedztwo;
     this.los        = los;
 }
예제 #5
0
        public void Wyswietl(Przestrzen przestrzen)
        {
            var dlugoscBokuWPikselach = przestrzen.DlugoscBoku * DlugoscBokuPola;

            using (Bitmap bitmapa = new Bitmap(dlugoscBokuWPikselach, dlugoscBokuWPikselach))
                using (Graphics rysownik = Graphics.FromImage(bitmapa))
                {
                    rysownik.Clear(Color.White);

                    for (int y = 0; y < przestrzen.DlugoscBoku; y++)
                    {
                        for (int x = 0; x < przestrzen.DlugoscBoku; x++)
                        {
                            if (przestrzen[y][x] is Mrowka mrowka)
                            {
                                int posX = x * DlugoscBokuPola;
                                int posY = y * DlugoscBokuPola;
                                rysownik.FillRectangle(OkreslKolor(mrowka), posX, posY, DlugoscBokuPola, DlugoscBokuPola);
                                rysownik.DrawString(reprezentacjaPolaMrowki.Okresl(mrowka), CzcionkaTekstu, PedzelTekstu, posX, posY);
                            }
                        }
                    }

                    for (int y = 0; y < przestrzen.DlugoscBoku; y++)
                    {
                        rysownik.DrawLine(Pens.Black,
                                          new Point(0, y * DlugoscBokuPola),
                                          new Point(przestrzen.DlugoscBoku * DlugoscBokuPola, y * DlugoscBokuPola));
                    }
                    for (int x = 0; x < przestrzen.DlugoscBoku; x++)
                    {
                        rysownik.DrawLine(Pens.Black,
                                          new Point(x * DlugoscBokuPola, 0),
                                          new Point(x * DlugoscBokuPola, przestrzen.DlugoscBoku * DlugoscBokuPola));
                    }

                    rysownik.Flush();
                    bitmapa.Save(sciezkaDoZapisu);
                }
        }
예제 #6
0
        public void Wyswietl(Przestrzen przestrzen)
        {
            Console.ResetColor();
            Console.Write("   ");
            for (int i = 0; i < przestrzen.DlugoscBoku; i++)
            {
                Console.Write($"{i.ToString().PadLeft(5)}");
            }
            Console.WriteLine();

            for (int y = 0; y < przestrzen.DlugoscBoku; y++)
            {
                Console.Write($"{y.ToString().PadLeft(3)}");
                for (int x = 0; x < przestrzen.DlugoscBoku; x++)
                {
                    var zawartoscPola = przestrzen[y][x];
                    Console.Write($"|{reprezentacja.Okresl(zawartoscPola)}|");
                }
                Console.WriteLine();
            }
            Console.ResetColor();
        }
예제 #7
0
 public void Wyswietl(Przestrzen przestrzen)
 {
     // podstęp!
 }
예제 #8
0
 public LosowyPrzemieszczacz(Przestrzen przestrzen, Sasiedztwo sasiedztwo, Random los)
 {
     this.przestrzen = przestrzen;
     this.sasiedztwo = sasiedztwo;
     this.los        = los;
 }