예제 #1
0
 private void Form1_Load(object sender, EventArgs e)
 {
     // wczytujemy fakty
     this._fakty = Repozytorium.CzytajFakty();
     // listę faktów zmieniamy na tablicę
     Fakty[] tablicaFaktow = (Fakty[])this._fakty.ToArray(typeof(Fakty));
     // wypisujemy fakty (textBox2 musi mieć własność "Multiline" = true
     for (int i = 0; i < Repozytorium.LiczbaFaktow; i++)
     {
         textBox2.Text += tablicaFaktow[i].Id.ToString() + " - ";
         textBox2.Text += tablicaFaktow[i].Fact;
         textBox2.Text += " - log: " + tablicaFaktow[i].Log + "\r\n\r\n";
     }
     // wczytujemy reguły
     this._reguly = Repozytorium.CzytajReguly();
     // wypisujemy reguły
     foreach (Reguly reg in _reguly)
     {
         textBox1.Text += "Rule:" + reg.Runo.ToString() + "\r\n" + " IF" + "\r\n";
         for (int j = 0; j < reg.Preno; j++)
         {
             textBox1.Text += "    " + tablicaFaktow[reg.Precondition[j]].Fact + "\r\n";
         }
         textBox1.Text += "THEN " + "\r\n    " + tablicaFaktow[reg.Conc].Fact + "\r\n\r\n";
     }
 }
예제 #2
0
        private void Wnioskowanie_Load(object sender, EventArgs e)
        {
            // wczytujemy fakty
            this._fakty = Repozytorium.CzytajFakty();
            // listę faktów zmieniamy na tablicę
            // wczytujemy reguły
            this._reguly  = Repozytorium.CzytajReguly();
            tablicaFaktow = (Fakty[])_fakty.ToArray(typeof(Fakty));
            Boolean nowe = true;

            // działamy póty, póki pojawiają się nowe fakty
            while (nowe)
            {
                ArrayList NoweFakty = new ArrayList();

                // w tej wersji nie będzie nowych faktów
                nowe = false;

                foreach (Reguly regula in _reguly)
                {
                    Fakty konkluzja = tablicaFaktow[regula.Conc];
                    int   wniosek   = 0;
                    if (konkluzja.Log != 1)
                    {
                        wniosek       = Wnioskuj(regula);
                        konkluzja.Log = wniosek;
                    }

                    if (wniosek == 1)
                    {
                        nowe = true;
                        NoweFakty.Add(konkluzja);
                    }
                    tablicaFaktow[regula.Conc] = konkluzja;
                    //Repozytorium.Zapisz(konkluzja.Id, konkluzja.Log);
                }

                wypisz_fakty(NoweFakty);
            }
        }