budyn
Administrator
Dołączył: 28 Mar 2007
Posty: 26
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Przechlewo
|
Wysłany: Pon 15:17, 19 Lis 2007 Temat postu: Sztuczna inteligencja i systemy ekspertowe, CLIPS, delta |
|
|
Kod: |
(defrule R1
?x<-(initial-fact)
=>
(retract ?x)
(printout t "Podaj a: ")
(bind ?a (read))
(printout t "Podaj b: ")
(bind ?b (read))
(printout t "Podaj c: ")
(bind ?c (read))
(assert (a ?a))
(assert (b ?b))
(assert (c ?c))
)
(defrule R2
?x<-(a ?a)
?y<-(b ?b)
?z<-(c ?c)
=>
(bind ?delta (- (** ?b 2)(* 4 ?a ?c)))
(assert (delta ?delta))
(printout t "Delta: " ?delta crlf)
)
(defrule R3
(delta ?delta)
?x<-(a ?a)
?y<-(b ?b)
?z<-(c ?c)
(test (> ?delta 0))
=>
(bind ?x1 (/ (+ (- 0 ?b)(sqrt ?b))(* 2 ?a)))
(bind ?x2 (/ (- (- 0 ?b)(sqrt ?b))(* 2 ?a)))
(retract ?x ?y ?z)
(assert (x1 ?x1))
(assert (x2 ?x2))
(printout t "x1: " ?x1 " x2: " ?x2 crlf)
)
(defrule R4
(delta ?delta)
?x<-(a ?a)
?y<-(b ?b)
?z<-(c ?c)
(test (= ?delta 0))
=>
(bind ?x12 (/(- 0 ?b)(* 2 ?a)))
(retract ?x ?y ?z)
(assert (x12 ?x12))
(printout t "x12: " ?x12 crlf)
)
(defrule R5
(delta ?delta)
?x<-(a ?a)
?y<-(b ?b)
?z<-(c ?c)
(test (< ?delta 0))
=>
(retract ?x ?y ?z)
(printout t "Brak rozwiazan rzeczywistych " crlf)
)
|
Post został pochwalony 0 razy
|
|
n0bi
bit
Dołączył: 29 Mar 2007
Posty: 10
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Człuchów
|
Wysłany: Pon 18:06, 19 Lis 2007 Temat postu: |
|
|
thx budyn za wstawke...
A tu ponizej kod do piewszego zadania:
Kod: |
A=zeros(5,181);
for i = 1:181
x=i-1;
A(1,i)=x;
//------------ term A
if x>=0 & x<=40
a=(40-x)/40;
else a=0;
end
//------------- term B
if x>=20 & x<=40
b=(x-20)/20;
elseif x>=40 & x<=60
b=1;
elseif x>=60 & x<=90
b=(90-x)/30;
else b=0;
end
//--------------- term C
if x>=70 & x<=100
c=(x-70)/30;
elseif x>=100 & x<=130
c=(130-x)/30;
else c=0;
end
//---------------- term D
if x>=110 & x<=140
d=(x-110)/30;
elseif x>=140 & x<=180
d=1;
else d=0;
end
//---------------------
A(2,i) = a;
A(3,i) = b;
A(4,i) = c;
A(5,i) = d;
end
plot(A(1,:),A(2,:),'r');
mtlb_hold on;
plot(A(1,:),A(3,:),'b');
mtlb_hold on;
plot(A(1,:),A(4,:),'r');
mtlb_hold on;
plot(A(1,:),A(5,:),'r');
mtlb_hold on;
mtlb_axis([0 220 0 1.2]);
xlabel('wzrost [cm]');
ylabel('u(wzrost)');
|
Post został pochwalony 0 razy
|
|