资源简介

首先说一句抱歉,因为这个资源是考试结束后上传的,所以报告弄丢了,但是代码还在,而且经过TA验收,可以正常运行,这个实验是关于贝叶斯网络的问题。 实验内容: 参照课程第五部分讲授的贝叶斯网络完成,给定事件和事件之间的关系,并且给出每个事件的CPT图,根据贝叶斯公式根据上述条件求出目标概率,编写程序实现基于贝叶斯网络的推理。在这里用到的贝叶斯算法是建立在有向无环图和CPT表的技术上实现的。

资源截图

代码片段和文件信息

package bayes;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
public class Lab3class {

public static void main(String[] args)  {
ArrayList arrayList = new ArrayList<>();//人名列表
ArrayList arrayList2 = new ArrayList<>();//问题列表
double [] P;
File f1f2;
System.out.println(“请输入文件名称\n“);
f1 = new File(“carnetwork.txt“);
        f2 = new File(“carqueries.txt“);
        Note cpt = geteverycpt(f1arrayList);
        arrayList2 = getquestion(f2);
        double[] pro;//存全概率
        pro = allpro(cpt);
//        for(int i = 0;i < Math.pow(2 cpt.count);i++){
//         System.out.println(pro[i]);
//        }
        for(int i=0;i < arrayList2.size();i++){
         P=getPT(arrayList2.get(i) cptarrayListpro);
         System.out.println(“P(“+arrayList2.get(i)+“) = \n : “+P[0]+“ : “+P[1]);
        }
}
/*
 *查询概率并输出
 */
public static double[] getPT(String questionNote cptArrayList arrayListdouble[] pro){
String[] strings=question.split(“ \\| “);
double[] answer=new double[2];
int count=arrayList.indexOf(strings[0]);//前面的Note序号
if(cpt.q[count]==0){
answer[0]=cpt.t[0][0][count];
answer[1]=cpt.t[0][1][count];
}
else{
String[] strings2=strings[1].split(“ “);
String[] strings3;
int sum=0;
int[] count2=new int[strings2.length];//条件Note序号
int [] TF=new int[strings2.length];//存储是t还是f
for(int i=0;i strings3=strings2[i].split(“=“);
count2[i]=arrayList.indexOf(strings3[0]);
if(strings3[1].contains(“true“)){
TF[i]=1;
}
else{
TF[0]=0;
}
}
double[] p1=compute(pro count2 TF countcpt);
double[] p2=compute(pro count2 TF -1cpt);
answer[0]=p1[0]/p2[0];
answer[1]=p1[1]/p2[0];
//System.out.println(answer[0]+“ “+answer[1]);
}
return answer;
}
    /*
     * 处理问题文本并返回问题
     */
public static ArrayList getquestion(File file){
ArrayList arrayList=new ArrayList<>();
 BufferedReader bfr1;
 try {
bfr1=new BufferedReader(new FileReader(file));
String string;
while((string=bfr1.readLine())!=null){
String[] strings=string.split(“P\\(“);
if (strings.length == 0) {
continue;
}
    for(int i=1;i      arrayList.add(strings[i].substring(0(strings[i].length()-1)));  
    }
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println(“未找到文件!\n“);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(“read不了\n“);
}
 
      return arrayList;
     }
     /*
      * 处理贝叶斯网络文本并返回概率表
      */
public static Note  geteverycpt(File fileArrayList arrayList){
      int count;//变量个数
      Note xinxi=new Note();
      BufferedReader bfr1;
       try {
     //读取

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-04 10:18  lab3\
     文件         232  2018-11-04 09:24  lab3\.classpath
     文件         380  2018-11-04 09:24  lab3\.project
     目录           0  2018-11-04 09:25  lab3\bin\
     目录           0  2018-11-04 09:32  lab3\bin\bayes\
     文件        8569  2018-11-04 11:30  lab3\bin\bayes\Lab3class.class
     文件         530  2018-11-04 09:33  lab3\bin\bayes\Note.class
     文件         216  2013-07-15 12:44  lab3\burglarnetwork.txt
     文件         180  2013-07-15 12:44  lab3\burglarqueries.txt
     文件         962  2018-11-04 10:20  lab3\carnetwork.txt
     文件         172  2018-11-04 11:10  lab3\carqueries.txt
     目录           0  2018-11-04 09:25  lab3\src\
     目录           0  2018-11-04 10:18  lab3\src\bayes\
     文件         216  2013-07-15 12:44  lab3\src\bayes\burglarnetwork.txt
     文件         180  2013-07-15 12:44  lab3\src\bayes\burglarqueries.txt
     文件        8734  2018-11-04 11:30  lab3\src\bayes\Lab3class.java
     文件         281  2018-11-04 09:33  lab3\src\bayes\Note.java
     文件         162  2018-10-28 08:40  lab3\~$智能——实验大纲3.docx
     文件       66430  2018-10-16 11:38  lab3\人工智能——实验大纲3.docx

评论

共有 条评论