Методы искусственного интеллекта для синтеза проектных решений. Подольский В.Е - 39 стр.

UptoLike

1. ЕСЛИ средакислота И концентрацияменее 70%
ТО средаразбавленная кислота
2.
ЕСЛИ средакислота И концентрацияболее 70%
ТО средаконцентрированная кислота
3.
ЕСЛИ средаразбавленная кислота
ТО материал ванныхромоникелевая сталь
4.
ЕСЛИ средаконцентрированная кислота
ТО материал ванныуглеродистая сталь
Требуется определить материал ванны при различных входных данных.
Программа на языке Пролог может иметь вид:
domains
A=symbol
D=symbol
predicates
is(A,A,D).
sreda(A,D,D).
conc(A,D,D).
mater(A,D,D).
ask_sreda(A).
view(D).
run.
database
fact_s(A).
fact_c(A).
goal
run.
clauses
is(“сернистая кислота“, “кислота“, L) :-
L=[“\n сернистая кислота = кислота“].
is(“азотная кислота “, “кислота“, L) :-
L=[“\n азотная кислота = кислота“].
sreda(“разбавленная кислота“,L,L2) :-
ask_sreda(X), is(X,_,L), ask_conc(C), conc(“менее 70%“,L,L1),
S=”\n среда=разбавленная кислота т.к.“,
S1=”\n среда=кислота“,S2=”\n И концентрация= менее 70%“,
L2=[S,S1,S2|L].
sreda(“концентрированная кислота“, L,L2) :-
fact_s(X), is(X,_,L), conc(“более 70%“,L,L1),
S=”\nсреда=концентрированная кислота т.к. “,
S1=”\nсреда=кислота“,S2=”\n И концентрация= более 70%“,
L2=[S,S1,S2|L].
ask_sreda(X) :-
write(“\n среда? “), readln(X), asserta(fact_s(X)).
ask_conc(C) :-
write(“\n концентрация? “), readln(С), asserta(fact_с(X)).
conc(C,L,L1) :-
fact_c(C), S=”\nконцентрация=“,
S1=C, S2=”\n т.к. было задано“, L1=[S,S1,S2|L].
mater(“хромоникелевая сталь“,L2,L3) :-
sreda(“разбавленная кислота“,_,L2), write(“\n Получено решение“),
S=”\nматериал ванны= хромоникелевая сталь“,
S1=”\nт.к. среда = разбавленная кислота“, L3=[S,S1|L2].
mater(“углеродистая сталь“,L2,L3):-
sreda(“концентрированная кислота“,_,L2),
write(“\n “), S=”\n материал ванны = углеродистая сталь“,
S1=”\n т.к. среда = концентрированная кислота“, L3=[S,S1|L2].
run :-
clearwindow, mater(_,_,L3), view(L3).
view([]).
view([S|L] :-
write(S), view(L).