⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex5.pro

📁 prolog,人工智能推理程序,运行环境prolog
💻 PRO
字号:
trace
/* Expert System Shell */
include"resort.pro"
predicates
      inference(data_type,integer)
      getresponse(integer)
      get_first(data_list,data_type,data_list)
      process(data_type)
      inferencel(data_list,integer)
      list_maximum(integer,intelist)
      list_max(integer,integer,intelist)
      empty(intelist)
      mincf(integer,integer,integer)
      start
      
database
      fact1(data_type,integer)
      
clauses 

      process(Query):-
          inference(Query,Cf),
          write("Your Question ",Query," has been proved Cf= ",Cf).
      process(Query):-
          write("Your question ",Query," can not be proved.").

      inference(Query,Cf):-
          fact1(Query,Cf),!.
      inference(Query,Cf):-
          not(rule(_,Query,_,_)),!,
          write(Query),
          getresponse(Cf),
          assert(fact1(Query,Cf)).
      inference(Query,Cf):-
          findall(Cf1,rule(_,Query,_,Cf1),L),
          list_maximum(Cf1,L),
          rule(_,Query,Cond_list,Cf1),
          inferencel(Cond_list,Cf2),
          Cf=Cf1*Cf2/100,Cf>=20.
                    

       inferencel([],100):-!.  
       inferencel(Cond_list,Cf):-
          get_first(Cond_list,Cond,New_list),
          inference(Cond,Cf1),
          Cf1>=20,
          inferencel(New_list,Cf2),
          mincf(Cf1,Cf2,Cf).

       getresponse(R):-readint(Ask),
                       Ask>=0,Ask<=100,!,
                       R=ASK;
                       nl,write("Try another answer please"),nl,
                       getresponse(R).
       
       get_first([H|T],H,T).
       list_maximum(Max,[H|T]):-
            list_max(Max,H,T).
            
       list_max(S,S,[]).
       list_max(Max,S,[H|T]):-
             H>=S,list_max(Max,H,T).
       list_max(Max,S,[H|T]):-
             H<=S,list_max(Max,S,T).
             
       empty([]).
       
       mincf(N1,N2,N2):-N1>N2,!.
       mincf(N1,_,N1).       

       start:-                   
             makewindow(1,2,3," Expert System ",3,6,20,70),
             retractall(fact1(_,_)),
             consult("fact1.dba"),
             write(" What is your query ? "),
             readln(NAME), 
             process(is(Name,two_star)),
             save("fact1.dba").

  goal
       start.
       
       
       
       
       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -