人工智能动物识别系统python_人工智能基础实践课代码(一) 产生式推理(动物识别系统)+极大极小值(一字棋)+ 遗传算法...

29467079bd35e3c3fa2d2c1510674a21.png

1、实验目的

理解和掌握产生式系统的推理方法,能够用选定的编程语言实现推理机。

2、实验内容和要求

(1)以实验1的动物识别系统的规则库和综合数据库为基础;

(2)用选定的编程语言开发一个推理机,该推理机能利用实验1的规则库和综合数据库进行推理。

834e0bca1cfb407521e027c1d801501c.pngafbc5f10dc5e4f3ac07a1fdbaffb43b4.png

3d214ab9981599054570785c1e17e453.png

话不多说,直接上代码

C++版本
运行截图0dc5943cbde2a24f47d5aacf8bdb645f.png

  #include  #include  #include  #include  #include     using namespace std;     const int fact_num = 31;      //知识库中的知识:31种知识  const int rule_num = 15;      //知识库中的规则:15条规则  const int rule_volume = 4;    //规则中每个结果最多有4个前提条件  const int object_range_begin = 25;  //从第25个知识开始  const int object_range_end = 31;    //到第31个知识为目标结论  const int object_middle_begin = 21;     //中间结果起始位置      string fact[fact_num] =                 {
        "有毛发","产奶","有羽毛","会飞","会下蛋",    "吃肉","有犬齿","有爪","眼盯前方","有蹄",    "反刍","黄褐色","有斑点","有黑色条纹","长脖",    "长腿","不会飞","会游泳","黑白二色","善飞",    "哺乳类","鸟类","食肉类","蹄类","金钱豹",    "虎","长颈鹿","斑马","鸵鸟","企鹅","信天翁"  };     int rule_prerequisite[rule_num][rule_volume] =        {
        {
    1,0,0,0},    {
    2,0,0,0},    {
    3,0,0,0},    {
    4,5,0,0},    {
    21,6,0,0},    {
    7,8,9,0},    {
    21,10,0,0},    {
    21,11,0,0},    {
    23,12,13,0},    {
    23,12,14,0},    {
    24,15,16,13},    {
    24,14,0,0},    {
    22,15,16,4},    {
    22,18,19,4},    {
    22,20,0,0}  };     int rule_result[rule_num] =  {
        21,    21,    22,    22,    23,    23,    24,    24,    25,    26,    27,    28,    29,    30,    31  };     bool backward_reasoning(int num,int message[]) ;  bool inference(int num,int message[])         //迭代推理机{
        int ii, ij, ik,im,in;    int hit_num = 0;          //输入前提也规则前提重合数    int prerequisite_num;     //规则前提数    int *message_c;           //迭代前提    int num_c;                //迭代前提数量    for (ik = 0; ik < num; ik++)     //剪枝函数    {
          if (message[ik] >= object_range_begin&&message[ik] <= object_range_end)      {
            cout << "归并信息:" << fact[message[ik] - 1] << endl;        cout << "推理成功!" << endl<<endl;        system("pause");        exit(0);      }    }    for (ii = 0; ii < rule_num; ii++)   //遍历规则匹配    {
          prerequisite_num = 0;      hit_num = 0;      for (ij = 0; ij < rule_volume; ij++)   //计算规则集前提数      {
            if (rule_prerequisite[ii][ij] == 0)        {
              break;        }        prerequisite_num++;      }      for (ij = 0; ij < prerequisite_num; ij++)      {
            for (ik = 0; ik < num; ik++)        {
              if (rule_prerequisite[ii][ij] == message[ik])          {
                hit_num++;          }        }      }      if (hit_num == prerequisite_num)  //满足某个规则集全部前提      {
            bool flag;        for (ik = 0; ik < num; ik++)        {
              if (message[ik] == rule_result[ii])          {
                break;          }        }        if (ik == num)        {
              num_c=num - hit_num+1;          flag = true;        }        else        {
              num_c = num - hit_num;          flag = false;        }        message_c = new int[num_c];        in = 0;        for (ik = 0; ik < num; ik++)        {
              for (im = 0; im < hit_num; im++)          {
                if (rule_prerequisite[ii][im] == message[ik])            {
                  break;            }          }          if (im < hit_num)          {
                continue;          }          message_c[in++] = message[ik];        }        if (flag == true)        {
              message_c[in] = rule_result[ii];        }        cout << "推导信息:";        for
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值