Wojskowa Akademia Techniczna
Laboratorium
Sztuczna Inteligencja
Prowadzący: mgr inż. Mariusz Chmielewsk
i
Wykonał: Rafał Wawryniuk
Grupa: I8Y2S1
Pierwsza część laboratoriów polegała na zapoznaniu się z Prologiem, jest to język programowania logicznego - program w Prologu to opis reguły wnioskowania oraz celu do którego zmierzamy, a rola komputera polega na odpowiednim zastosowaniu reguł aby znaleźć rozwiązanie. Pisząc programy w Prologu definiujemy bazę faktów i reguł, na tak przygotowanym programie możemy wykonywać zapytania do bazy.
Na laboratoriach pisaliśmy dwa programy, pierwszy tworzący drzewo genealogiczne naszej rodziny, a drugi zawierający przepis na ciasto ( szarlotkę ). Kolejno dla wyżej wspomnianych programów bazy faktów i reguł wyglądają następująco:
% DRZEWO GENEALOGICZNE
% Definicja bazy faktów
kobieta(teresa).
kobieta(ewa).
kobieta(marzena).
kobieta(zofia).
kobieta(malgorzata).
kobieta(maria).
kobieta(patrycja).
kobieta(karolina).
man(rafal).
man(zbigniew).
man(stanislaw).
man(marek).
man(mauro).
man(ryszard).
man(mateusz).
% Definicja predykatów
rodzic(zbigniew,rafal).
rodzic(teresa,rafal).
rodzic(zbigniew,marzena).
rodzic(teresa,marzena).
rodzic(stanislaw,zbigniew).
rodzic(zofia,zbigniew).
rodzic(marek,teresa).
rodzic(maria,teresa).
rodzic(marek,ewa).
rodzic(maria,ewa).
rodzic(marek,ryszard).
rodzic(maria,ryszard).
rodzic(ryszard,karolina).
rodzic(malgorzata,karolina).
rodzic(ryszard,mateusz).
rodzic(malgorzata,mateusz).
rodzic(ewa,patrycja).
rodzic(mauro,patrycja).
% Definicja bazy reguł
mama(Rodzic,Dziecko):-rodzic(Rodzic,Dziecko),
kobieta(Rodzic).
tata(Rodzic,Dziecko):-rodzic(Rodzic,Dziecko),
man(Rodzic).
syn(Rodzic,Dziecko):-rodzic(Rodzic,Dziecko),
man(Dziecko).
corka(Rodzic,Dziecko):-rodzic(Rodzic,Dziecko),
kobieta(Dziecko).
dziadek(Dziadek,Wnuk):-rodzic(Dziadek,Rodzic),
rodzic(Rodzic,Wnuk),
man(Dziadek).
babcia(Babcia,Wnuk):-rodzic(Babcia,Rodzic),
rodzic(Rodzic,Wnuk),
kobieta(Babcia).
malzenstwo(Osoba1,Osoba2):-rodzic(Osoba1,Dziecko),
rodzic(Osoba2,Dziecko),
Osoba1\=Osoba2.
brat_rodzony(Brat1,Brat2):-mama(Mama,Brat1),
mama(Mama,Brat2),
tata(Tata,Brat1),
tata(Tata,Brat2),
(man(Brat1);man(Brat2)),
Brat1\=Brat2.
siostra_rodzona(Siostra1,Siostra2):-mama(Mama,Siostra1),
mama(Mama,Siostra2),
tata(Tata,Siostra1),
tata(Tata,Siostra2),
(kobieta(Siostra1);kobieta(Siostra2)),
Siostra1\=Siostra2.
% stryj (rodzony) = brat ojca
stryj(Stryj,Bratanek):-brat_rodzony(Stryj,Tata),
tata(Tata,Bratanek).
% ciota (ojczysta) = siostra ojca
ciocia(Ciocia,Bratanek):-siostra_rodzona(Ciocia,Mama),
mama(Mama,Bratanek).
% wuj (rodzony) = brat matki
wuj(Wuj,Siostrzeniec):-brat_rodzony(Wuj,Mama),
mama(Mama,Siostrzeniec).
% ciota (macierzysta) = siostra matki
ciota(Ciota,Siostrzeniec):-siostra_rodzona(Ciota,Mama),
mama(Mama,Siostrzeniec).
% stryjna = żona brata ojca
stryjna(Zona,Wujek):-malzenstwo(Zona,Wujek),
kobieta(Zona).
% wujna = żona brata matki
wujna(Zona,Wujek):-malzenstwo(Zona,Wujek),
kobieta(Zona).
kuzynka(Kuzynka,Kuzyn):-rodzic(Ciocia,Kuzynka),
ciocia(Ciocia,Kuzyn),
kobieta(Kuzynka).
kuzyn(Kuzyn1,Kuzyn2):-rodzic(Ciocia,Kuzyn1),
ciocia(Ciocia,Kuzyn2),
man(Kuzyn1).
% PRZEPIS NA SZARLOTKE
% Definicja bazy faktów
produkt(jablka).
produkt(cukier).
produkt(maka).
produkt(cynamon).
produkt(jajka).
% Definicja predykatu
mus_jablkowy(jablka,cukier).
% Definicja bazy reguł
szarlotka(Produkt1, Produkt2, Produkt3, Produkt4, Produkt5):-produkt(Produkt1),
produkt(Produkt2),
produkt(Produkt3),
produkt(Produkt4),
produkt(Produkt5),
Produkt1\=Produkt2,
Produkt1\=Produkt3,
Produkt1\=Produkt4,
Produkt1\=Produkt5,
Produkt2\=Produkt3,
Produkt2\=Produkt4,
Produkt2\=Produkt5,
Produkt3\=Produkt4,
Produkt3\=Produkt5,
Produkt4\=Produkt5,
(mus_jablkowy(Produkt1, Produkt2);
mus_jablkowy(Produkt1, Produkt3);
mus_jablkowy(Produkt1, Produkt3);
mus_jablkowy(Produkt1, Produkt4);
mus_jablkowy(Produkt1, Produkt5);
mus_jablkowy(Produkt2, Produkt3);
mus_jablkowy(Produkt2, Produkt4);
mus_jablkowy(Produkt2, Produkt5);
mus_jablkowy(Produkt3, Produkt4);
mus_jablkowy(Produkt3, Produkt5);
mus_jablkowy(Produkt4, Produkt5)).
W wyżej przedstawionych programach pojawiło się słowo predykat, jest to w Prologu podstawowa jednostka, składa się z nagłówka i argumentów, na przykładzie drzewa genealogicznego : rodzic(zbigniew,rafal).We wspomnianym przykładzie rolę nagłówka pełni rodzic, a zbigniew i rafal to argumenty. Predykaty mogą zostać użyte do wyrażenia pewnych faktów o świecie, które są znane programowi, znaczenie im nadaje programista, ponieważ mogą mieć różne interpretacje. Przytoczony przykład możemy interpretować:
- zbigniew jest rodzicem rafala
- rodzicem zbigniewa jest rafal.
Dla Prologa nie ma znaczenia co oznaczają dane stwierdzenia, ponieważ on tylko manipuluje symbolami w oparciu o bazę reguł, oznacza to, że dla nas dowolny jest sposób zapisu predykatu, ale jedynym ograniczeniem jest konsekwentne przestrzeganie danej kolejności w całości implementowanego programu.
Druga część laboratoriów polegała na zapoznaniu się z Protégé – edytorem ontologii. Zadanie jakie otrzymaliśmy do wykonania to zbudowanie ontologii samochodów, czyli podział ich na:
- Cabrio Hard Top,
- Cabrio Soft Top,
- Pickup,
- Coupe,
- Kombi,
- Sedan ,
- Hatchback.
Klasy na podstawie których dodawany samochód jest do odpowiedniej kategorii to :
- Ilość drzwi,
- Ruchoma karoseria,
- Pojemność bagażnika,
- Ilość miejsc.
Rozwiązanie obu zadań jest umieszczone na płycie CD dołączonej jako załącznik do sprawozdania.