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(); }
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ć); }
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); }