public Regula Stworz_regule(int argument, string wartosc, string decyzja) { Regula r = new Regula(); r.decyzja = decyzja; r.deskryptory.Add(argument, wartosc); return(r); }
private void btnStart_Click(object sender, EventArgs e) { // Tablica z wczytanymi danymi dostępna poniżej // this.systemDecyzyjny; // // Przykład konwersji string to double string sLiczbaDouble = "1.5"; double dsLiczbaDouble = StringToDouble(sLiczbaDouble); // Przykład konwersji string to int string sLiczbaInt = "1"; int iLiczbaInt = StringToInt(sLiczbaInt); /****************** Miejsce na rozwiązanie *********************************/ List <Regula> reguly = new List <Regula>(); List <int> maska1 = new List <int>(); foreach (var m in maska(systemDecyzyjny)) { maska1.Add(m); } //int tmp = 0; if (maska1.Count() != 0) { for (int rzad = 1; rzad < systemDecyzyjny[0].Length - 1; rzad++) { int tmp = 0; int t = 0; foreach (var obiekt in systemDecyzyjny) { foreach (Combination combo in new Combination(systemDecyzyjny[0].Length - 1, rzad).GetRows()) { Regula regula = new Regula(obiekt, combo.ToArray()); if (maska1.Contains(tmp)) { if (regula.czyRegulaSprzeczna(systemDecyzyjny)) { reguly.Add(regula); regula.SupportReguly(systemDecyzyjny); maska1 = regula.generujPokjrycie(systemDecyzyjny, maska1); break; } } } tmp++; } } } foreach (var reg in reguly) { wynik.Text += reg.ToString() + Environment.NewLine; } /****************** Koniec miejsca na rozwiązanie ********************************/ }
public bool CzyRegulaNieSprzeczna(Regula r, string[][] obiekty) { foreach (var ob in obiekty) { if (r.CzyObiektSpelniaRegule(ob) && ob.Last() != r.decyzja) { return(false); } } return(true); }
// public bool CzyRegulaZawieraReguleInnegoRzedu(List<Regula> lista, Regula r1) /// { // foreach (var desk in lista) // { // if (!r1.deskryptory.ContainsKey(desk.Key) || r1.deskryptory[desk.Key] != desk.Value) // return false; // } // return true; // } public static bool CzyRegulaZawieraReguleZListy(List <Regula> lista, Regula r) { for (int i = 0; i < lista.Count; i++) { if (!lista.Contains(r)) { return(false); } } return(true); }
public bool CzyRegulaZawieraInnaRegule(Regula r2) { foreach (var desk in r2.deskryptory) { if (!this.deskryptory.ContainsKey(desk.Key) || this.deskryptory[desk.Key] != desk.Value) { return(false); } } return(true); }
public Regula utwurzregule(string[] obiekt, int[] kombinacja)//odniesienie do klasy { Regula r = new Regula(); r.decyzja = obiekt.Last(); for (int i = 0; i < kombinacja.Length; i++) { int nrAtrybutu = kombinacja[i]; r.deskryptory.Add(nrAtrybutu, obiekt[nrAtrybutu]); } return(r); }
private void btnStart_Click(object sender, EventArgs e) { // Tablica z wczytanymi danymi dostępna poniżej // this.systemDecyzyjny; // // Przykład konwersji string to double string sLiczbaDouble = "1.5"; double dsLiczbaDouble = StringToDouble(sLiczbaDouble); // Przykład konwersji string to int string sLiczbaInt = "1"; int iLiczbaInt = StringToInt(sLiczbaInt); /****************** Miejsce na rozwiązanie *********************************/ List <Regula> reguly = new List <Regula>(); int[] kombinacja; for (int rzad = 1; rzad < systemDecyzyjny[0].Length - 1; rzad++) { int pom = 0; foreach (var macierz in macierzNieodruznialnosci(systemDecyzyjny)) { foreach (Combination combo in new Combination(systemDecyzyjny[0].Length - 1, rzad).GetRows()) { kombinacja = combo.ToArray(); if (!czyKombinacjaWWierszu(macierz, kombinacja)) { Regula regula = new Regula(obiekt(pom), kombinacja); if (!regula.czyRegulaZawieraReguleZListy(reguly)) { regula.SupportReguly(systemDecyzyjny); reguly.Add(regula); } } } pom++; } } //wyswietl(reguly); foreach (var reg in reguly) { wynik.Text += reg.ToString(); } /****************** Koniec miejsca na rozwiązanie ********************************/ }
public List <int> KtoreObiektySpelniajaRegule(string[][] obiekty, Regula r) { var lista = new List <int>(); int pom = 0; foreach (var ob in obiekty) { pom++; if ((CzyObiektSpelniaRegule(ob) == true) && (ob.Last() == r.decyzja)) { lista.Add(pom); } } return(lista); }
public Form2(string[][] systemDecyzyjny) { InitializeComponent(); var Lista = new List <Regula>(); int[][][] macierz = Regula.MacierzNieodroznialnosci(systemDecyzyjny); //Tworze macierz nieordóżnialności for (int j = 1; j < systemDecyzyjny[0].Length - 1; j++) //pętla po rzędach aka covering { for (int i = 0; i < macierz[0].Length; i++) //pętla po obiektach { int[][] wiersz = Regula.Fdwuwymiarowywiersz(macierz, i); //wyciagamy wiersz i z macierzy nieodwracalnosci string[] obiekt = Regula.Fwiersz(systemDecyzyjny, i); //wyciagamy obiekt i foreach (Combination combo in new Combination(obiekt.Length - 1, j).GetRows()) { if ((Regula.CzyZawieraWWierszu(wiersz, combo.ToArray())) == (false))//sprawdzamy czy dana kombinacja zawiera sie w wierszu jezeli nie to { string[] wiersz_prawdziwy = Regula.Fwiersz(systemDecyzyjny, i); Regula r = new Regula(wiersz_prawdziwy, combo.ToArray()); //tworze regule if (Lista.Count == 0) //jezeli lista jest pusta to { r.support = r.Fsupport(systemDecyzyjny); //lcize support rtbGlowne.Text += r.ToString() + Environment.NewLine; //wypisuje Lista.Add(r); //dodaje regule do listy } else { int pomocnicza = 0; foreach (var kvp in Lista) { if (r.CzyRegulaZawieraInnaRegule(kvp) == false) //sprawdzam czy regula zaweira sie w liscie reguł (pomocnicza mówi mi czy reguła nie zawiera sie w kazdym elemencie listy czytaj wszystkei reguly) { pomocnicza++; //wiadomo bardzo wazna zmienna } } if (pomocnicza == Lista.Count) //jesli pomocnicza ma taka sama wartosc co wielkosc listy regul to oznacza ze moge użyć tej reguły { r.support = r.Fsupport(systemDecyzyjny); //licze support rtbGlowne.Text += r.ToString() + Environment.NewLine; //wypisuje Lista.Add(r); //dodaje do listy } } } } } } }
public Form2(string[][] systemDecyzyjny) { InitializeComponent(); Regula r = new Regula(); Najczestszy n = new Najczestszy(); var Lista_Regul = new List <Regula>(); var Lista_najczejsciej_wystepujacyh_argumentow = new List <Najczestszy>(); var Lista_unikalnych_decyzji = new List <string>(); var Lista_obiektow_konceptu = new List <int>();//jeden koncept(wszystko na jednym potem następne) var Lista_obiektow_niepokrytych = new List <int>(); var Lista_obiektow_spelniajacych_regula_w_danej_chwili = new List <int>(); Lista_unikalnych_decyzji = r.Flistakonceptow(systemDecyzyjny); //lista unikalnych konceptow for (int i = 0; i < Lista_unikalnych_decyzji.Count; i++) //ilosc unikalnych deczyjii { Lista_obiektow_konceptu = r.Fwyciagnij_numery_obiektow_konceptu(systemDecyzyjny, Lista_unikalnych_decyzji[i]); //mamy liste zawierajaca numery obiektow danego konceptu poczatek: if (Lista_obiektow_konceptu.Count == 0) { goto zmienkoncept; } for (int j = 0; j < Lista_obiektow_konceptu.Count; j++)//OBIEKTY { string[] kolumna_konceptu = n.Kolumna_konceptu(systemDecyzyjny, Lista_obiektow_konceptu, j); n = n.Futwurz_najczesciej_wystepujaca_wartos_w_danej_kolumnie(kolumna_konceptu, j); Lista_najczejsciej_wystepujacyh_argumentow.Add(n); //lista najczeszcziej wystepujacyhc argumentow i ich wartosci //Lista unikalnych decyzjii //Lista zawierajaca numery obiektow na ktore patrzymy } var Tab_Czestosc_Wartosc_NumerKol = new int[3]; Tab_Czestosc_Wartosc_NumerKol = r.Max_Czestosc_Wartosc_NumerKol(Lista_najczejsciej_wystepujacyh_argumentow);//wiem ile wiem jakie i ktory argument r = r.stworzregule(Tab_Czestosc_Wartosc_NumerKol[2], Convert.ToString(Tab_Czestosc_Wartosc_NumerKol[1]), Lista_unikalnych_decyzji[i]); Lista_Regul.Add(r); // var Lista_Obiektow_spelniajacych_regule = new List<int>(); Lista_obiektow_spelniajacych_regula_w_danej_chwili = r.KtoreObiektySpelniajaRegule(systemDecyzyjny, r);//tylko te z danego konceptu //goto Start; //for(int k=0;k<Lista_obiektow_spelniajacych_regula_w_danej_chwili.Count;k++) Start: if (r.CzyRegulaNieSprzeczna(r, systemDecyzyjny) == true) { Lista_Regul.Add(r); for (int x = 0; x < Lista_obiektow_spelniajacych_regula_w_danej_chwili.Count; x++) { Lista_obiektow_konceptu.Remove(Lista_obiektow_spelniajacych_regula_w_danej_chwili[x]); } goto poczatek; } else { Lista_najczejsciej_wystepujacyh_argumentow.Clear();//czyszczę listę przed zmiana konceptu for (int j = 0; j < Lista_obiektow_spelniajacych_regula_w_danej_chwili.Count - 1; j++) { string[] kolumna_konceptu = n.Kolumna_konceptu(systemDecyzyjny, Lista_obiektow_spelniajacych_regula_w_danej_chwili, j); n = n.Futwurz_najczesciej_wystepujaca_wartos_w_danej_kolumnie(kolumna_konceptu, j); Lista_najczejsciej_wystepujacyh_argumentow.Add(n); } Tab_Czestosc_Wartosc_NumerKol = r.Max_Czestosc_Wartosc_NumerKol(Lista_najczejsciej_wystepujacyh_argumentow);//wiem ile wiem jakie i ktory argument r.deskryptory.Add(Tab_Czestosc_Wartosc_NumerKol[2], Convert.ToString(Tab_Czestosc_Wartosc_NumerKol[1])); // r = r.stworzregule(Tab_Czestosc_Wartosc_NumerKol[2], Convert.ToString(Tab_Czestosc_Wartosc_NumerKol[1]), Lista_unikalnych_decyzji[i]); // var Lista_Obiektow_spelniajacych_regule = new List<int>(); Lista_obiektow_spelniajacych_regula_w_danej_chwili = r.KtoreObiektySpelniajaRegule(systemDecyzyjny, r);//tylko te z danego konceptu goto Start; } zmienkoncept: { Lista_najczejsciej_wystepujacyh_argumentow.Clear();//czyszczę listę przed zmiana konceptu } } }
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; } }
private void btnStart_Click(object sender, EventArgs e) { // Tablica z wczytanymi danymi dostępna poniżej // this.systemDecyzyjny; // // Przykład konwersji string to double string sLiczbaDouble = "1.5"; double dsLiczbaDouble = StringToDouble(sLiczbaDouble); // Przykład konwersji string to int string sLiczbaInt = "1"; int iLiczbaInt = StringToInt(sLiczbaInt); /****************** Miejsce na rozwiązanie *********************************/ //string wynik = String.Join(",", koceptFinal(koncept(systemDecyzyjny, "1"), systemDecyzyjny)); Deskryptor desk = new Deskryptor(); Dictionary <string, int> slownik = new Dictionary <string, int>(); List <Regula> reguly = new List <Regula>(); List <Deskryptor> pDeskryptory = new List <Deskryptor>(); string[][] test; foreach (var decyzje in fUnkialnosc(fKolumna(systemDecyzyjny, ostatni))) { List <int> maska1 = new List <int>(); List <int> maska2 = new List <int>(); foreach (var m in maska(konceptFinall(decyzje))) { maska1.Add(m); } string[][] tb; do { pDeskryptory.Clear(); if (maska1.Count() != konceptFinall(decyzje).Count()) { tb = konceptBezPok(konceptFinall(decyzje), maska1); desk = fMaxCalosc(konceptBezPok(konceptFinall(decyzje), maska1), pDeskryptory); } else { desk = fMaxCalosc(konceptFinall(decyzje), pDeskryptory); } Regula r = new Regula(decyzje, desk); do { if (!r.czyRegulaSprzeczna(systemDecyzyjny)) { pDeskryptory.Add(desk); desk = fMaxCalosc(konceptPoPokryciu(konceptFinall(decyzje), maska2), pDeskryptory); r = dodajDeskryptor(r, desk); maska2.Clear(); foreach (var m in maska(konceptFinall(decyzje))) { maska2.Add(m); } maska2 = r.generujPokjrycie(konceptFinall(decyzje), maska2); if (r.czyRegulaSprzeczna(systemDecyzyjny)) { r.SupportReguly(systemDecyzyjny); reguly.Add(r); maska1 = r.generujPokjrycie(konceptFinall(decyzje), maska1); } } else { r.SupportReguly(systemDecyzyjny); reguly.Add(r); maska1 = r.generujPokjrycie(konceptFinall(decyzje), maska1); } } while (!r.czyRegulaSprzeczna(systemDecyzyjny)); } while (maska1.Count() != 0); } foreach (var reg in reguly) { wynik.Text += reg.ToString(); } /****************** Koniec miejsca na rozwiązanie ********************************/ }
public Regula dodajDeskryptor(Regula regula, Deskryptor desk) { regula.deskryptor.Add(desk); return(regula); }