public Najczestszy_atrybut F_utworz_najczesciej_wystepujaca_wartos_danego_atrybutu(string[] kolumna_wartosc_atrybutu_danego_konceptu, int numer_atrybutu) { Najczestszy_atrybut n = new Najczestszy_atrybut(); n.nr_atrybutu = numer_atrybutu; int czestosc = 0; var slownik = new Dictionary <string, int>(); slownik = F_czestosc(kolumna_wartosc_atrybutu_danego_konceptu); foreach (var kvp in slownik) { if (kvp.Value > czestosc) { czestosc = kvp.Value; n.czestosc = kvp.Value; n.wartosc = kvp.Key; } } return(n); }
public Form2(string[][] System_decyzyjny) { InitializeComponent(); Regula r = new Regula(); Najczestszy_atrybut n = new Najczestszy_atrybut(); var Lista_regul = new List <Regula>(); var Lista_atrybutow_z_wartoscia_i_czestoscia = new List <Najczestszy_atrybut>(); var Lista_konceptow = new List <string>(); var Lista_obiektow_danego_konceptu = new List <int>();//jeden koncept(wszystko na jednym potem następne) var Lista_obiektow_niepokrytych = new List <int>(); var Lista_obiektow_spelniajacych_regule_w_danej_chwili = new List <int>(); var Lista_dostepnych_atrybutow = new List <int>(); Lista_konceptow = r.F_lista_konceptow(System_decyzyjny);//lista unikalnych konceptow for (int i = 0; i < Lista_konceptow.Count; i++) { Lista_obiektow_danego_konceptu = r.F_wyciagnij_numery_obiektow_konceptu(System_decyzyjny, Lista_konceptow[i]);//mamy liste zawierajaca numery obiektow danego konceptu Lista_obiektow_niepokrytych = Lista_obiektow_danego_konceptu; poczatek2: Lista_dostepnych_atrybutow = n.F_dostepne_atrybuty(System_decyzyjny); if (Lista_obiektow_niepokrytych.Count == 0) { goto zmienkoncept; } for (int j = 0; j < System_decyzyjny[0].Length - 1; j++)//po kolumnach { string[] kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu = n.F_utworz_kolumne_konceptu_danego_argumentu(System_decyzyjny, Lista_obiektow_niepokrytych, Lista_dostepnych_atrybutow[j]); n = n.F_utworz_najczesciej_wystepujaca_wartos_danego_atrybutu(kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu, Lista_dostepnych_atrybutow[j]); Lista_atrybutow_z_wartoscia_i_czestoscia.Add(n); //Lista zawierajaca atrybuty , ich wartość i czestosci maxymalne } poczatek: var Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_ = new int[4]; Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_ = r.F_max_czestosc_wartosc_numer_kolumny(Lista_atrybutow_z_wartoscia_i_czestoscia); //znajduje najczesciej wystepujacy elemnet i pobiera informacje ktory to atrybut , jego wartosc i czestosc if (r.deskryptory.Count == 0) //jezeli nie istnieje zaden deskryptor to { r = r.Stworz_regule(Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[2], Convert.ToString(Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[1]), Lista_konceptow[i]); //tworze regułe } else //jezeli istnieje deskryptor to { r.deskryptory.Add(Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[2], Convert.ToString(Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[1])); } if (r.F_czy_regula_nie_sprzeczna(System_decyzyjny))//sprawdzam czy regula nie sprzeczna { Lista_obiektow_spelniajacych_regule_w_danej_chwili = r.F_ktore_obiekty_spelniaja_regule(System_decyzyjny); for (int ii = 0; ii < Lista_obiektow_niepokrytych.Count; ii++) { if (Lista_obiektow_spelniajacych_regule_w_danej_chwili.Contains(Lista_obiektow_niepokrytych[ii])) //jezeli lista obiektow spelniajacyh regule nie zawiera obiektu który ma lista obiektow danego konceptu to { Lista_obiektow_niepokrytych.RemoveAt(ii); //dodajemy obiekt który nie spelnia reguly do listy niepokrytych obiektow // Lista_obiektow_danego_konceptu.Remove(Lista_obiektow_danego_konceptu[ii]);//usuwamy z lsity obiektow danego konceptu obiekt nie spełniajacy reguły } } // for(int k=0;k<) r.support = 0; for (int x = 0; x < Lista_obiektow_spelniajacych_regule_w_danej_chwili.Count; x++) { r.support++; Lista_obiektow_niepokrytych.Remove(Lista_obiektow_spelniajacych_regule_w_danej_chwili[x]); } Lista_regul.Add(r); r = new Regula(); Lista_atrybutow_z_wartoscia_i_czestoscia = new List <Najczestszy_atrybut>(); //Lista_obiektow_danego_konceptu.Clear(); // r.deskryptory.Clear(); //Lista_obiektow_danego_konceptu = Lista_obiektow_niepokrytych; goto poczatek2; } else { //musimy usunac obiekt niespełniający regułe V //takze usunienty obiekt dodac do listy obiektow niepokrytych V //wygenerowac nowa liste najczesciej_wystepujaca_wartos_danego_atrybutu ponieważ usuwamyz rozważan obiekt niespełniajacy regułe V // usunac atrybut uzyty do deksryptora V // Lista_obiektow_spelniajacych_regule_w_danej_chwili.Clear(); Lista_obiektow_spelniajacych_regule_w_danej_chwili = r.F_ktore_obiekty_spelniaja_regule(System_decyzyjny); for (int jj = 0; jj < Lista_atrybutow_z_wartoscia_i_czestoscia.Count; jj++) { int nr_atrybutu = Lista_atrybutow_z_wartoscia_i_czestoscia[jj].nr_atrybutu; int poprrzedni_atrybut = Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[2]; if (nr_atrybutu == poprrzedni_atrybut) { //Lista_dostepnych_atrybutow.Add(Lista_atrybutow_z_wartoscia_i_czestoscia[jj]); Lista_dostepnych_atrybutow.RemoveAt(jj); //Lista_atrybutow_z_wartoscia_i_czestoscia.RemoveAt(jj); //usuwa z listy argument nie spełniający reguły } //przekaz w arg } Lista_atrybutow_z_wartoscia_i_czestoscia.Clear(); //czyscze liste przed wygenerowanie nowej for (int j = 0; j < Lista_dostepnych_atrybutow.Count - 1; j++) //petla po ilosci obiektow danego konceptu { string[] kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu = n.F_utworz_kolumne_konceptu_danego_argumentu(System_decyzyjny, Lista_obiektow_spelniajacych_regule_w_danej_chwili, Lista_dostepnych_atrybutow[j]); n = n.F_utworz_najczesciej_wystepujaca_wartos_danego_atrybutu(kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu, Lista_dostepnych_atrybutow[j]); Lista_atrybutow_z_wartoscia_i_czestoscia.Add(n); //Lista zawierajaca atrybuty , ich wartość i czestosci maxymalne } if (Lista_dostepnych_atrybutow.Count == 1) { string[] kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu = n.F_utworz_kolumne_konceptu_danego_argumentu(System_decyzyjny, Lista_obiektow_spelniajacych_regule_w_danej_chwili, Lista_dostepnych_atrybutow[0]); n = n.F_utworz_najczesciej_wystepujaca_wartos_danego_atrybutu(kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu, Lista_dostepnych_atrybutow[0]); Lista_atrybutow_z_wartoscia_i_czestoscia.Add(n); } goto poczatek; } zmienkoncept: { Lista_atrybutow_z_wartoscia_i_czestoscia.Clear();//czyszczę listę przed zmiana konceptu } } foreach (var kvp in Lista_regul) { rtbGlowne.Text += string.Format(kvp.ToString()) + Environment.NewLine; } }