Ejemplo n.º 1
0
        private void button5_Click(object sender, EventArgs e)
        {
            List <WynikNeuroneowej> wk = new List <WynikNeuroneowej>();
            Random r = new Random();

            int Długość    = 0;
            int IlośćPetli = 0;
            int Najlepsza  = 0; try

            {
                Długość    = Convert.ToInt32(textBox3.Text);
                IlośćPetli = Convert.ToInt32(textBox4.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show("źle wpisane dane " + ex.Message);
                return;
            }
            listBox1.Items.Clear();
            t = new Thread(new ThreadStart(() =>
            {
                for (int i = 0; i < IlośćPetli; i++)
                {
                    SieciRywalizujące <string> tb = StwórzSieć();

                    for (int j = 0; j < Długość; j++)
                    {
                        TabelaUcząca rt = ZbiórUczący[r.Next(ZbiórUczący.Count)];
                        tb.Ucz(rt.Nazwa, rt.WejścieFloat);
                    }
                    int IlośćPoprawnych = 0;
                    foreach (var item in ZbiórUczący)
                    {
                        if (tb.PobierzWartośc(item.WejścieFloat) == item.Nazwa)
                        {
                            IlośćPoprawnych++;
                        }
                    }
                    wk.Add(new WynikNeuroneowej()
                    {
                        Poprawne = IlośćPoprawnych
                    });
                    if (Najlepsza < IlośćPoprawnych)
                    {
                        tb.Zapisz(Loto.StałeGlobalne.NazwaPlikuRywalizującejSieci + "uczenie", Zapis);
                        Najlepsza = IlośćPoprawnych;
                        Console.WriteLine(IlośćPoprawnych);
                        listBox1.Invoke(new TR(() => { listBox1.Items.Add(IlośćPoprawnych.ToString()); }));
                    }
                }

                this.Invoke(new TR(() => { this.Text = WynikNeuroneowej.Drukuj(wk); }));
            }));
            t.Start();
        }
Ejemplo n.º 2
0
        private SieciRywalizujące <string> StwórzSieć()
        {
            SieciRywalizujące <string> sieć = new SieciRywalizujące <string>(Convert.ToInt32(textBox5.Text), 64);

            sieć.WspółczynikUczenia                = Convert.ToSingle(textBox1.Text);
            sieć.WspółczynikUczeniaSąsiada         = Convert.ToSingle(textBox2.Text);
            sieć.IlośćPorównywanychPrzedZwróceniem = Convert.ToInt32(textBox6.Text);
            foreach (var item in s)
            {
                sieć.Dodaj(item);
            }
            return(sieć);
        }
Ejemplo n.º 3
0
        private List <List <Odcinek> > ZnajdźSiedźSąsiedztwa(List <List <Osoba> > listaOsób, int IlośćUczeń, out bool[,] Mapa, Size WIelkość)
        {
            List <List <Odcinek> > LlzoZW = new List <List <Odcinek> >();
            int L = 0;
            Dictionary <List <Osoba>, int>    Dz   = new Dictionary <List <Osoba>, int>();
            SieciRywalizujące <List <Osoba> > Siec = new SieciRywalizujące <List <Osoba> >(2, 2);

            foreach (var item in listaOsób)
            {
                Dz.Add(item, ++L);
                Siec.Dodaj(item);
            }
            for (int i = 0; i < IlośćUczeń; i++)
            {
                foreach (var item in listaOsób)
                {
                    foreach (var item2 in item)
                    {
                        Siec.Ucz(item, item2.TablicaUcząca);
                    }
                }
            }

            int   Wn  = WIelkość.Width - 1;
            int   Hn  = WIelkość.Height - 1;
            float Skx = 1f / Wn;
            float Sky = 1f / Hn;

            int[,] tb  = new int[WIelkość.Width, WIelkość.Height];
            bool[,] zw = new bool[WIelkość.Width, WIelkość.Height];
            for (int i = 0; i < WIelkość.Width; i++)
            {
                for (int j = 0; j < WIelkość.Height; j++)
                {
                    tb[i, j] = Dz[Siec.PobierzWartośc(new float[] { Skx *i, Sky *j })];
                }
            }
            for (int i = 1; i < Wn; i++)
            {
                for (int j = 1; j < Hn; j++)
                {
                    if (!(tb[i, j] == tb[i, j - 1] && tb[i, j] == tb[i, j + 1] && tb[i, j] == tb[i + 1, j] && tb[i, j] == tb[i - 1, j]))
                    {
                        zw[i, j] = true;
                    }
                }
            }


            Mapa = zw;
            foreach (var item in Siec.DzienikObiektów.Values)
            {
                List <Odcinek> Lo = new List <Odcinek>();
                LlzoZW.Add(Lo);
                for (int i = 1; i < item.Mapy.Length; i++)
                {
                    Lo.Add(new Odcinek()
                    {
                        A = new PointF(item.Mapy[i - 1][0], item.Mapy[i - 1][1]), B = new PointF(item.Mapy[i][0], item.Mapy[i][1])
                    });
                }
            }
            return(LlzoZW);
        }