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