示例#1
0
 private void PopulateDgv(List <Gejala> rule, Individu terbaik)
 {
     for (int i = 0; i < rule.Count; i++)
     {
         double[] nilaiDensity = terbaik.find(rule[i].GetKodeGejala());
         this.beliefDgv.Rows.Add(rule[i].GetKodeGejala(), nilaiDensity[0], nilaiDensity[1], nilaiDensity[2]);
     }
 }
示例#2
0
文件: CrossOver.cs 项目: wlwtvr/Po
        private List <Gejala> Cross(Individu a, Individu b, Individu alpha)
        {
            List <Gejala> hasilKross = new List <Gejala>();

            for (int i = 0; i < rule.Count; i++)
            {
                Gejala   g        = new Gejala();
                double[] aDen     = a.find(rule[i].GetKodeGejala());
                double[] bDen     = b.find(rule[i].GetKodeGejala());
                double[] alphaden = alpha.find(rule[i].GetKodeGejala());
                double[] hasil    = new double[3];
                for (int j = 0; j < 3; j++)
                {
                    hasil[j] = aDen[j] + alphaden[j] * (bDen[j] - aDen[j]);
                }

                g.SetKodeGejala(rule[i].GetKodeGejala());
                g.SetPenyakit(hasil);

                hasilKross.Add(g);
            }

            return(hasilKross);
        }
示例#3
0
        public DempsterShafer(Individu individu, List <Kasus> data)
        {
            this.individu = individu;
            this.data     = data;

            for (int i = 0; i < data.Count; i++)
            {
                Console.Write("Kasus " + (i + 1) + " | ");
                string[]            gejala   = data[i].GetGejala();
                int                 jumlahM  = (gejala.Length * 2) - 1;
                List <List <Mass> > Masses   = new List <List <Mass> >();
                int                 mCounter = 0;

                for (int j = 0; j < gejala.Length; j++)
                {
                    double[] nilaiGejala = individu.find(gejala[j]);
                    double   max         = GetMaximumDensity(nilaiGejala); // max jadi nilai m
                    if (max == 1)
                    {
                        Mass m = new Mass();
                        m.SetPenyakit(GetKodePenyakit(nilaiGejala));
                        m.SetDensity(max);

                        string[] indikasi = data[i].GetDiagnosa();

                        int ada = 0;
                        foreach (string idk in indikasi)
                        {
                            if (m.GetPenyakit().Contains(idk))
                            {
                                ada++;
                            }
                        }
                        if (ada != 0)
                        {
                            counter++;
                        }
                        break;
                    }
                    //Console.WriteLine(gejala[j] + " " + max);
                    List <string> sTheta = new List <string>()
                    {
                        "theta"
                    };
                    if (j == 0)   // gejala pertama
                    {
                        List <Mass> M = new List <Mass>();

                        Mass m = new Mass();
                        m.SetPenyakit(GetKodePenyakit(nilaiGejala));
                        m.SetDensity(max);
                        M.Add(m);

                        Mass mTheta = new Mass();
                        mTheta.SetPenyakit(sTheta);
                        mTheta.SetDensity(GetTheta(max));

                        M.Add(mTheta);

                        Masses.Add(M); // m1
                        //mCounter = 0;
                    }
                    else     // gejala ke-2 dst
                    //Console.WriteLine("Gejala ke- " + gejala[j]);

                    {
                        List <Mass> M = new List <Mass>();

                        Mass m = new Mass();
                        m.SetPenyakit(GetKodePenyakit(nilaiGejala));
                        m.SetDensity(max);
                        M.Add(m);

                        //DebugString(m.GetPenyakit());

                        Mass mTheta = new Mass();
                        mTheta.SetPenyakit(sTheta);
                        mTheta.SetDensity(GetTheta(max));

                        M.Add(mTheta);

                        Masses.Add(M);
                        mCounter++;

                        List <Mass> matriksKombinasi = new List <Mass>();

                        matriksKombinasi = CombineMass(Masses[mCounter - 1], Masses[mCounter]);
                        List <Mass> mBaru = GetMassBaru(matriksKombinasi);

                        Masses.Add(mBaru);
                        mCounter++;
                        //Console.WriteLine(mCounter + " " + mBaru[mBaru.Count-1].GetDensity());
                    }
                }
                // ambil dari m yang terakhir, nilai yg terbesar
                // bandingkan diagnosa pakar dg hasil (intersect)
                // count+1 kalo ada;

                mFinal = Masses[mCounter];
                int    indeksMaks = 0;
                double terbesar   = 0;

                for (int x = 0; x < mFinal.Count; x++)
                {
                    if (terbesar < mFinal[x].GetDensity())
                    {
                        terbesar   = mFinal[x].GetDensity();
                        indeksMaks = x;
                    }
                }

                List <string> d = mFinal[indeksMaks].GetPenyakit();

                DebugString(d);
                Console.Write(" | Nilai Belief : " + terbesar);
                Console.WriteLine();

                string[] indi = data[i].GetDiagnosa();
                int      a    = 0;
                foreach (string idk in indi)
                {
                    if (d.Contains(idk))
                    {
                        a++;
                    }
                }
                if (a != 0)
                {
                    counter++;
                }
                //Console.WriteLine();
            }
        }
示例#4
0
        public DempsterShafer(Individu individu, List<Kasus> data)
        {
            this.individu = individu;
            this.data = data;

            for (int i = 0; i < data.Count; i++)
            {
                Console.Write("Kasus " + (i + 1) + " | ");
                string[] gejala = data[i].GetGejala();
                int jumlahM = (gejala.Length*2)-1;
                List<List<Mass>> Masses = new List<List<Mass>>();
                int mCounter = 0;

                for (int j = 0; j < gejala.Length; j++)
                {
                    double[] nilaiGejala = individu.find(gejala[j]);
                    double max = GetMaximumDensity(nilaiGejala); // max jadi nilai m  
                    if (max == 1)
                    {
                        Mass m = new Mass();
                        m.SetPenyakit(GetKodePenyakit(nilaiGejala));
                        m.SetDensity(max);

                        string[] indikasi = data[i].GetDiagnosa();

                        int ada = 0;
                        foreach (string idk in indikasi)
                        {
                            if (m.GetPenyakit().Contains(idk))
                            {
                                ada++;
                            }
                        }
                        if (ada != 0)
                        {
                            counter++;
                        }
                        break;
                    }
                    //Console.WriteLine(gejala[j] + " " + max);
                    List<string> sTheta = new List<string>() { "theta" };
                    if (j == 0) { // gejala pertama 
                        List<Mass> M = new List<Mass>();

                        Mass m = new Mass();
                        m.SetPenyakit(GetKodePenyakit(nilaiGejala));
                        m.SetDensity(max);
                        M.Add(m);
                        
                        Mass mTheta = new Mass();
                        mTheta.SetPenyakit(sTheta);
                        mTheta.SetDensity(GetTheta(max));

                        M.Add(mTheta);

                        Masses.Add(M); // m1
                        //mCounter = 0;
                    } else { // gejala ke-2 dst
                        //Console.WriteLine("Gejala ke- " + gejala[j]);

                        List<Mass> M = new List<Mass>();

                        Mass m = new Mass();
                        m.SetPenyakit(GetKodePenyakit(nilaiGejala));
                        m.SetDensity(max);
                        M.Add(m);

                        //DebugString(m.GetPenyakit());

                        Mass mTheta = new Mass();
                        mTheta.SetPenyakit(sTheta);
                        mTheta.SetDensity(GetTheta(max));

                        M.Add(mTheta);

                        Masses.Add(M);
                        mCounter++;

                        List<Mass> matriksKombinasi = new List<Mass>();

                        matriksKombinasi = CombineMass(Masses[mCounter - 1], Masses[mCounter]);
                        List<Mass> mBaru = GetMassBaru(matriksKombinasi);

                        Masses.Add(mBaru);
                        mCounter++;
                        //Console.WriteLine(mCounter + " " + mBaru[mBaru.Count-1].GetDensity());
                        
                    }
                    
                }
                // ambil dari m yang terakhir, nilai yg terbesar
                // bandingkan diagnosa pakar dg hasil (intersect)
                // count+1 kalo ada;

                mFinal = Masses[mCounter];
                int indeksMaks = 0;
                double terbesar = 0;
                                
                for (int x = 0; x < mFinal.Count; x++)
                {
                    if (terbesar < mFinal[x].GetDensity())
                    {
                        terbesar = mFinal[x].GetDensity();
                        indeksMaks = x;
                    }
                }

                List<string> d = mFinal[indeksMaks].GetPenyakit();

                DebugString(d);
                Console.Write(" | Nilai Belief : " + terbesar);
                Console.WriteLine();

                string[] indi = data[i].GetDiagnosa();
                int a = 0;
                foreach (string idk in indi)
                {
                    if (d.Contains(idk))
                    {
                        a++;
                    }
                }
                if (a != 0)
                {
                    counter++;
                }
                //Console.WriteLine();
            }
        }
示例#5
0
 private void PopulateDgv(List<Gejala> rule, Individu terbaik)
 {
     for (int i = 0; i < rule.Count; i++)
     {
         double[] nilaiDensity = terbaik.find(rule[i].GetKodeGejala());
         this.beliefDgv.Rows.Add(rule[i].GetKodeGejala(), nilaiDensity[0], nilaiDensity[1], nilaiDensity[2]);
     }
 }
示例#6
0
        private List<Gejala> Cross(Individu a, Individu b, Individu alpha)
        {
            List<Gejala> hasilKross = new List<Gejala>();
            for (int i = 0; i < rule.Count; i++)
            {
                Gejala g = new Gejala();
                double[] aDen = a.find(rule[i].GetKodeGejala());
                double[] bDen = b.find(rule[i].GetKodeGejala());
                double[] alphaden = alpha.find(rule[i].GetKodeGejala());
                double[] hasil = new double[3];
                for (int j = 0; j < 3; j++)
                {
                    hasil[j] = aDen[j] + alphaden[j] * (bDen[j] - aDen[j]);
                }

                g.SetKodeGejala(rule[i].GetKodeGejala());
                g.SetPenyakit(hasil);

                hasilKross.Add(g);
            }

            return hasilKross;
        }