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

📄 ex1.pro

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

      process(Query):-
          inference(Query,Cf),Cf>=20,
          write("Your Question ",Query," has been proved.",Cf).
      process(Query):-
          write("Your question ",Query," can not be proved.").
 
      inference(Query,Cf):-
          fact1(Query,Cf).
      inference(Query,Cf):-
          rule(No,Query,Cond_list,Cf1),!,
          get_first(Cond_list,Cond),
          inference(Cond,Cf21),
          delete(Query,Cond_list,New_list),
          process_facts(New_list,Cf22),!,
          nl,write(Cf21),nl,write(Cf22),   
          mincf(Cf21,Cf22,Cf2),nl,write(Cf2),nl,
          Cf=Cf1*Cf2/100,write(Cf).
  inference(Query,Cf):-
          check_fact(Query,Cf).

       process_facts([],100).  /* no more facts left */
       process_facts(Cond_list,Cf):-
          get_first(Cond_list,Prop),
          check_fact(Prop,Cf1),
          delete(Prop,Cond_list,New_list),
          process_facts(New_list,Cf2),
          mincf(Cf1,Cf2,Cf).

       check_fact(Fact,Cf):-
                             not(fact1(Fact,_)),!,
                             write(Fact),   
                             getresponse(Cf),
                             assert(fact1(Fact,Cf)).
       check_fact(Fact,Cf):-
                             fact1(Fact,Cf).

       getresponse(R):-readint(Ask),
                    %  check_ans(Ask,Rep),!,
                       R=ASK;
                       nl,write("Try another answer please"),nl,
                       getresponse(R).
       check_ans(yes,y).
       check_ans(y,y).
       check_ans(n,n).
       check_ans(no,n).
       
       get_first([H|_],H).
       
       delete(_,[],[]).
       delete(H,[H|T],T):-!.
       delete(Token,[H|T],[H|R]):-!,
                          delete(Token,T,R).

       start:-                   
             makewindow(1,2,3,"window 1 ",3,6,20,60),
             retractall(fact1(_,_)),
             consult("fact1.dba"),
             write(" input data "),
             readln(NAME), 
             process(is(Name,two_star)),
             save("fact1.dba").
       mincf(N1,N2,N2):-N1>N2,!.
       mincf(N1,_,N1).   

  goal
       start.
       
       

⌨️ 快捷键说明

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