基于产生式的动物识别系统(只需简单的数组以及if-else语句)

基于产生式的动物识别系统(只需简单的数组以及if-else语句)

建立一个动物识别系统的规则库,用以识别虎、豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁等7种动物。
为了识别这些动物,可以根据动物识别的特征,建立包含下述规则的规则库:

R1:if 动物 有毛发 then 动物是 哺乳动物
R2:if 动物 有奶 then 动物是 哺乳动物
R3:if 动物 有羽毛 then 动物 是鸟
R4:if 动物 会飞 and 会生蛋 then 动物是鸟
R5:if 动物 吃肉 then 动物是 食肉动物
R6:if 动物 有犀利牙齿 and 有爪 and 眼向前方 then 动物是 食肉动物
R7:if 动物是 哺乳动物 and 有蹄 then 动物是 有蹄类动物
R8:if 动物是 哺乳动物 and 反刍 then 动物是 有蹄类动物

R9:if 动物是 哺乳动物 and 是 食肉动物 and 有黄褐色 and 有暗斑点 then 动物是 豹
R10:if 动物是 哺乳动物 and 是 食肉动物 and 有黄褐色 and 有黑色条纹 then 动物是 虎
R11:if 动物是 有蹄类动物 and 有长脖子and 有长腿 and 有暗斑点 then 动物是 长颈鹿
R12:if 动物是 有蹄类动物 and 有黑色条纹 then 动物是 斑马
R13:if 动物是 鸟 and 不会飞 and 有长脖子 and 有长腿 and 有黑白二色 then 动物是 鸵鸟
R14:if 动物是 鸟 and不会飞 and 会游泳 and 有黑白二色 then 动物是 企鹅
R15:if 动物是 鸟 and 善飞 then 动物是信天翁

人工智能基础课老师布置的作业,对于显示界面没有要求,只要输入满足的特征值能输出对应的动物即可。

废话不多说,直接上代码,使用Java编写,用C/C++也一样,只需要稍微改下输入输出这样的基本语法即可。

package top.alphatx.ai;  //这是包名,别忘了改
import java.util.Scanner;

public class ExerTwo {
   

	public static void main(String[] args) {
   
		
		int[] base = new int[24];  /* 数组base用来存放24个特征值,为0表示不满足该特征,为1表示满足。Java中此处int类型默认为0,如果使用其他默认不为0的语言需要添加代码(例如for循环)给数组每个值赋初始值为0 */
		int[] temp = new int[99];  //数组temp用来存放输入的值,作为base数组的下标
		
		System.out.println("-----特征代表值-----\n");
		System.out.println("b0:毛;b1:奶;b2:羽毛;b3:飞;b4:吃肉;b5:犬齿;b6:下蛋;b7:有爪;b8:眼盯前方;b9:有蹄;b10:反刍;\nb11:黄褐色;"
				         + "b12:暗斑点;b13:黑色条纹;b14:长脖子;b15:长腿;b16:黑白二色;b17:会游泳;b18:不会飞;b19:善飞;\n"
				         + "b20:哺乳动物;b21:鸟;b22:食肉动物;b23:有蹄动物");      
		
		System.out.println("\n请输入特征值的个数:");
		Scanner sc = new Scanner
  • 15
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
基于产生规则的动物识别系统可以通过编写一系列规则来实现。这种方法是一种基于规则的人工智能方法,它可以通过一系列规则来推断出动物的类型。 以下是一个简单的基于产生规则的动物识别系统的代码示例: ``` // 定义产生规则 rule "Bird Rule" when $animal : Animal(wings == true, feathers == true, layEggs == true) then $animal.setType("Bird"); end rule "Mammal Rule" when $animal : Animal(hair == true, feedMilk == true) then $animal.setType("Mammal"); end rule "Fish Rule" when $animal : Animal(livesInWater == true, breathesWater == true) then $animal.setType("Fish"); end // 执行规则 KieServices kieServices = KieServices.Factory.get(); KieContainer kContainer = kieServices.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession("ksession-rules"); Animal animal = new Animal(true, true, true, false, false, false, false, false, false); kSession.insert(animal); kSession.fireAllRules(); System.out.println("This animal is a " + animal.getType()); ``` 在这个示例中,我们定义了三条产生规则,用于识别鸟类、哺乳动物和鱼类。然后,我们通过Drools规则引擎来执行这些规则,将一个Animal对象插入到规则中,最后输出结果。 要注意的是,这个示例只是一个简单的示例,实际应用中要根据具体情况编写更复杂的规则和逻辑。同时,要注意规则的顺序,因为规则的执行顺序可能会影响最终的输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值