Metody reprezentacji wiedzy – cz. 4. Andrzej Macioł.

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
POWIAT MYŚLENICKI Tytuł Projektu: Poprawa płynności ruchu w centrum Myślenic poprzez przebudowę skrzyżowań dróg powiatowych K 1935 i K 1967na rondo.
Systemy Sztucznej Inteligencji
Ludwik Antal - Numeryczna analiza pól elektromagnetycznych –W10
REGUŁOWO-MODELOWE SKORUPOWE SYSTEMY EKSPERTOWE Część 1
Sun altitude Made by: Patryk Cichy Patryk Cichy Mateusz Dąbrowicz Mateusz Dąbrowicz Mariusz Król Mariusz Król Mariusz Dyrda Mariusz Dyrda Group leader:
VI Rachunek predykatów
Logiki (nie)klasyczne
XPath XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
XPath. XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
11 XML a SGML. Standardy pokrewne.. 22 SGML a XML – różnice Deklaracja SGML: konfiguracja wyglądu znaczników, ich maksymalnej długości, itp., definicja.
XSL Extensible Stylesheet Language 6 listopada 2003.
XPath. XSL – część 1..
KONKURS WIEDZY O SZTUCE
XPath, XSLT, (and XSL:FO)
Ministerstwo Gospodarki Poland'sexperience Waldemar Pawlak Deputy Prime Minister, Minister of Economy March 2010.
Metody Sztucznej Inteligencji w Sterowaniu 2009/2010 Metoda propagacji wstecznej Dr hab. inż. Kazimierz Duzinkiewicz, Katedra Inżynierii Systemów Sterowania.
Laboratoria z „wstęp do programowania”
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Rozdział XI -Kredyt ratalny
SZTUCZNA INTELIGENCJA ARTIFICIAL INTELLIGENCE
KOMPUTEROWE WSPOMAGANIE PRAC BADAWCZYCH FORTRAN 90/95 – cz II Adam FIC INSTYTUT TECHNIKI CIEPLEJ.
Jak wypadliśmy na maturze z matematyki w 2010 roku?
ENERGETYKA POLSKA WYNIKI I WSKAŹNIKI FINANSOWE ELEKTROCIEPŁOWNI ZA 2005 ROK W PORÓWNANIACH Z WYNIKAMI I WSKAŹNIKAMI UŚREDNIONYMI SEKTORA I PODSEKTORA.
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Podstawy C# Grupa .NET PO.
Algorytmy i struktury danych
Leszek Wojtasiak Wicemarszałek Województwa Wielkopolskiego Budowa Wielkopolskiej Sieci Szerokopasmowej.
Automatyczne dereferencje w języku SBQL
Programowanie w logice
KALENDARZ 2011r. Autor: Alicja Chałupka klasa III a.
Co to jest sukces? Proste wytłumaczenie
Wnioskowanie w systemach sztucznych
Metody reprezentacji wiedzy – cz. 2.
XML – eXtensible Markup Language
PROPOZYCJE MEXX JESIEŃ NOWA KOLEKCJA Ceny od 40zł.
C# Platforma .NET CZ.3 Kuba Ostrowski.
Instrukcja warunkowa i wyboru
Wnioskowanie w stylu Takagi - Sugeno.
Debata „20-lecie rynku finansowo-kapitałowego w Polsce”
MOiPP Wykład 3 Matlab Przykłady prostych metod obliczeniowych.
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
EGZAMINU GIMNAZJALNEGO 2013
EcoCondens Kompakt BBK 7-22 E.
EcoCondens BBS 2,9-28 E.
WYNIKI EGZAMINU MATURALNEGO W ZESPOLE SZKÓŁ TECHNICZNYCH
PRZYGOTOWALI Bartosz Pawlik Daniel Sawa Marcin Turbiński.
Testogranie TESTOGRANIE Bogdana Berezy.
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
Dr hab. Renata Babińska- Górecka
Wnioskowanie w systemach sztucznych
Generowanie kodu pośredniego
Zagadnienia AI wykład 6.
Kalendarz 2020.
Elementy geometryczne i relacje
Strategia pomiaru.
Drzewo dokumentu html.
Les meilleures photos de L'année 2005 D'après NBC A life for two, full of tenderness, obtains happiness as they get closer to heaven. Życie we dwoje,
Adresowanie elementów struktury dokumentów - XPath.
Rozdział IV Wyrażenia proceduralne algorytmów Grzegorz Gacek Patryk Gajewski.
Wstęp do programowania Wykład 10 Programowanie w logice.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
KNW K Konwencjonalne oraz N Niekonwencjonalne metody W Wnioskowania.
13. FAMILY LIFE Życie rodzinne. Family members Członkowie rodziny This is me My father George My mother Jane My grandmother HelenMy grandfather John My.
Prolog Tutorial Introduction
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Kurs języka C++ – wykład 13 ( )
Patryk Kłys Aleksandra dąbrowska
Wykonali: Jakub Gutkowski, Klaudia Belka, Damian Koncewicz
Zapis prezentacji:

Metody reprezentacji wiedzy – cz. 4. Andrzej Macioł

Prolog Inference Engine

Dialog

Prolog Wykorzystano materiały z „Programowanie w logice. Prolog” c 2007–2009 by P. Fulmanski (ostatnia modyfikacja: 18 maja 2009) -

Proste fakty Spółka A jest rentowna, spółka B jest rentowna …. jest_rentowna(spolka_A). jest_rentowna(spolka_B). jest_rentowna(spolka_C). spolka_A(jest_rentowna). spolka_B(jest_rentowna). spolka_C(jest_rentowna). predykat stała

Weryfikacja prostych faktów 1 ?- jest_rentowna(spolka_A). true. 2 ?- spolka_A(jest_rentowna). true. 3 ?- jest_rentowna(spolka_X). false.

Zmienne w zapytaniach 4 ?- jest_rentowna(Ktore_spolki). Ktore_spolki = spolka_A ; Ktore_spolki = spolka_B ; Ktore_spolki = spolka_C. 5 ?- spolka_A(Jaka_jest). Jaka_jest = jest_rentowna. 6 ?- spolka_B(Jaka_jest). Jaka_jest = jest_rentowna. Zmienna

Więcej predykatów jest_rentowna(spolka_A). jest_rentowna(spolka_B). jest_rentowna(spolka_C). jest_nierentowna(spolka_D). jest_nierentowna(spolka_E). spolka_A(jest_rentowna). spolka_B(jest_rentowna). spolka_C(jest_rentowna). spolka_D(jest_nierentowna). spolka_E(jest_nierentowna).

Nowe zapytanie 1 ?- jest_nierentowna(Ktore_spolki). Ktore_spolki = spolka_D ; Ktore_spolki = spolka_E.

Predykat dwuargumentowy rentownosc(spolka_A, jest_rentowna). rentownosc(spolka_B, jest_rentowna). rentownosc(spolka_C, jest_rentowna). rentownosc(spolka_D, jest_nierentowna). rentownosc(spolka_E, jest_nierentowna). spolka_A(rentownosc, jest_rentowna). spolka_B(rentownosc, jest_rentowna). spolka_C(rentownosc, jest_rentowna). spolka_D(rentownosc, jest_nierentowna). spolka_E(rentownosc, jest_nierentowna).

Predykat dwuargumentowy 2 ?- rentownosc(KtoraSpolka,JakaJest). KtoraSpolka = spolka_A, JakaJest = jest_rentowna ; KtoraSpolka = spolka_B, JakaJest = jest_rentowna ; KtoraSpolka = spolka_C, JakaJest = jest_rentowna ; KtoraSpolka = spolka_D, JakaJest = jest_nierentowna ; KtoraSpolka = spolka_E, JakaJest = jest_nierentowna.

Predykat dwuargumentowy 3 ?- spolka_A(CoOceniamy,JakiWynik). CoOceniamy = rentownosc, JakiWynik = jest_rentowna. 4 ?- spolka_A(rentownosc,JakiWynik). JakiWynik = jest_rentowna. 6 ?- spolka_A(CoOceniamy,jest_rentowna). CoOceniamy = rentownosc.

Dodajemy fakty zadluzenie(spolka_A, brak). zadluzenie(spolka_B, przecietne). zadluzenie(spolka_C, wysokie). zadluzenie(spolka_D, brak). zadluzenie(spolka_E, brak). spolka_A(zadluzenie, brak). spolka_B(zadluzenie, przecietne). spolka_C(zadluzenie, wysokie). spolka_D(zadluzenie, brak). spolka_E(zadluzenie, brak).

Wnioskujemy 1 ?- spolka_A(zadluzenie, JakieJestZadluzenie). JakieJestZadluzenie = brak. 2 ?- spolka_A(Atrybut, Wartosc). Atrybut = rentownosc, Wartosc = jest_rentowna ; Atrybut = zadluzenie, Wartosc = brak. 4 ?- zadluzenie(Spolka,brak). Spolka = spolka_A ; Spolka = spolka_D ; Spolka = spolka_E.

Wnioskujemy 3 ?- zadluzenie(Spolka,JakieJestZadluzenie). Spolka = spolka_A, JakieJestZadluzenie = brak ; Spolka = spolka_B, JakieJestZadluzenie = przecietne ; Spolka = spolka_C, JakieJestZadluzenie = wysokie ; Spolka = spolka_D, JakieJestZadluzenie = brak ; Spolka = spolka_E, JakieJestZadluzenie = brak.

Predykat, w którym argumentami są predykaty kredyt(zadluzenie(spolka_A,brak), rentownosc(spolka_A, jest_rentowna)). 1 ?- kredyt(JakieJestZadluzenie, JakaJestRentownosc). JakieJestZadluzenie = zadluzenie(spolka_A, brak), JakaJestRentownosc = rentownosc(spolka_A, jest_rentowna).

Reguły zdolnosc_kredytowa_OK(Spolka):- zadluzenie(Spolka,brak), rentownosc(Spolka,jest_rentowna). IF AND 1 ?- zdolnosc_kredytowa_OK(spolka_A). true. 2 ?- zdolnosc_kredytowa_OK(ZdolnoscKredyto waMaja). ZdolnoscKredytowaMaja = spolka_A ; false.

Dodatkowa reguła zdolnosc_kredytowa_OK(Spolka):- zadluzenie(Spolka, przecietne), rentownosc(Spolka,jest_rentowna). 1 ?- zdolnosc_kredytowa_OK(ZdolnoscKredytowaMaja). ZdolnoscKredytowaMaja = spolka_A ; ZdolnoscKredytowaMaja = spolka_B. 2 ?- zdolnosc_kredytowa_OK(spolka_C). false. 3 ?- zdolnosc_kredytowa_OK(spolka_B). true.

Zastosowanie predykatu dwuargumentowego zdolnosc_kredytowa(Spolka,ok):- zadluzenie(Spolka,brak), rentownosc(Spolka,jest_rentowna). zdolnosc_kredytowa(Spolka,ok):- zadluzenie(Spolka, przecietne), rentownosc(Spolka,jest_rentowna). zdolnosc_kredytowa(Spolka,warunkowo):- zadluzenie(Spolka,brak), rentownosc(Spolka,jest_nierentowna).

Wnioskowanie 2 ?- zdolnosc_kredytowa(Spolka, Ocena). Spolka = spolka_A, Ocena = ok ; Spolka = spolka_B, Ocena = ok ; Spolka = spolka_D, Ocena = warunkowo ; Spolka = spolka_E, Ocena = warunkowo.

Wnioskowanie 3 ?- zdolnosc_kredytowa(Spolka, ok). Spolka = spolka_A ; Spolka = spolka_B. 4 ?- zdolnosc_kredytowa(Spolka, warunkowo). Spolka = spolka_D ; Spolka = spolka_E. 5 ?- zdolnosc_kredytowa(spolka_A, Ocena). Ocena = ok ; false. 6 ?- zdolnosc_kredytowa(spolka_C, Ocena). false.

Nowe fakty i reguły obroty_mln(spolka_A, 0.1). obroty_mln(spolka_B, 1.5). obroty_mln(spolka_C, 2). obroty_mln(spolka_D, 5). obroty_mln(spolka_E, 12). zdolnosc_kredytowa(Spolka,ok):- zadluzenie(Spolka, przecietne), rentownosc(Spolka,jest_rentowna), obroty_mln(Spolka,X), X>1, X<3.

Wnioskowanie 8 ?- zdolnosc_kredytowa(X,Y). X = spolka_B, Y = ok. 9 ?- zdolnosc_kredytowa(Spolka,ok). Spolka = spolka_B.

Prolog – baza danych

Studenci - przedmioty jest_na_liscie('Jan Kot', 'TSI'). jest_na_liscie('Ala Osa', 'TSI'). jest_na_liscie('Adam Pies', 'TSI'). jest_na_liscie('Jan Słoń', 'TSI'). jest_na_liscie('Ewa Mysz', 'TSI'). jest_na_liscie('Jan Kot', 'BD'). jest_na_liscie('Ala Osa', 'BD'). jest_na_liscie('Adam Pies', 'BD'). jest_na_liscie('Jan Słoń', 'BD').

Prowadzący zjęcia egzaminuje('Andrzej Macioł', 'TSI'). egzaminuje('Jurek Duda', 'BD').

Reguła - zapisy zapisy(Prowadzacy,Przedmiot,Student):- jest_na_liscie(Student,Przedmiot), egzaminuje(Prowadzacy,Przedmiot).

Pełne listy zapisów 8 ?- zapisy(Prowadzacy,Przedmiot,Student). Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Jan Kot' ; Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Ala Osa' ; Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Adam Pies' ; Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Jan Słoń' ; Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Ewa Mysz' ……………..

Pytania szczegółowe 9 ?- zapisy(Prowadzacy,Przedmiot, 'Ala Osa'). Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI' ; N Prowadzacy = 'Jurek Duda', Przedmiot = 'BD'. 10 ?- zapisy(_,'TSI',Student). Student = 'Jan Kot' ; Student = 'Ala Osa' ; Student = 'Adam Pies' ; Student = 'Jan Słoń' ; Student = 'Ewa Mysz' wszystko jedno co

Dodatkowe dane egzamin(' ', 'Jan Kot', 'TSI', 3.0). egzamin(' ', 'Ala Osa', 'TSI', 3.5). egzamin(' ', 'Adam Pies', 'TSI', 4.0). egzamin(' ', 'Jan Słoń', 'TSI', 2.0). egzamin(' ', 'Ewa Mysz', 'TSI', 5.0). egzamin(' ', 'Jan Słoń', 'TSI', 3.0). egzamin(' ', 'Jan Kot', 'BD', 5.0). egzamin(' ', 'Ala Osa', 'BD', 4.0). egzamin(' ', 'Adam Pies', 'BD', 3.0). egzamin(' ', 'Jan Słoń', 'BD', 3.5).

Reguły – wyniki egzaminu uzyskal_ocene(Student, Przedmiot, Prowadzacy, Data, Ocena):- egzaminuje(Prowadzacy, Przedmiot), egzamin(Data, Student, Przedmiot, Ocena).

Pełny przegląd 7 ?- uzyskal_ocene(Student,Przedmiot,Prowadzacy,Data,Ocena). Student = 'Jan Kot', Przedmiot = 'TSI', Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 3.0 ; Student = 'Ala Osa', Przedmiot = 'TSI', Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 3.5 ; Student = 'Adam Pies', Przedmiot = 'TSI', Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 4.0 ………..

Pytania szczególowe 1 ?- uzyskal_ocene('Adam Pies', 'TSI',_,Data,Ocena). Data = ' ', Ocena = 4.0 ; false. 2 ?- uzyskal_ocene('Ewa Mysz', 'TSI', Prowadzacy,Data,Ocena). Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = ?- uzyskal_ocene('Jan Słoń', 'TSI', Prowadzacy,Data,Ocena). Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 2.0 ; Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 3.0 ;

Związki między obiektami Wykorzystano źródła: sw.edu.au/~cs9414/Labs/family.pl.solution.html /~cs9414/Labs/lab.html

Rodzice - dzieci % parent(Parent, Child) parent(albert, jim). parent(albert, peter). parent(jim, brian). parent(john, darren). parent(peter, lee). parent(peter, sandra). parent(peter, james). parent(peter, kate). parent(peter, kyle). parent(brian, jenny). parent(irene, jim). parent(irene, peter). parent(pat, brian). parent(pat, darren). parent(amanda, jenny ).

Płeć % female(Person) female(irene). female(pat). female(lee). female(sandra). female(jenny). female(amanda). female(kate). % male(Person) male(albert). male(jim). male(peter). male(brian). male(john). male(darren). male(james). male(kyle ).

Rok urodzenia % yearOfBirth(Person, Year). % yearOfBirth(irene, 1923). yearOfBirth(pat, 1954). yearOfBirth(lee, 1970). yearOfBirth(sandra, 1973). yearOfBirth(jenny, 1996). yearOfBirth(amanda, 1979). yearOfBirth(albert, 1926). yearOfBirth(jim, 1949). yearOfBirth(peter, 1945). yearOfBirth(brian, 1974). yearOfBirth(john, 1955). yearOfBirth(darren, 1976). yearOfBirth(james, 1969). yearOfBirth(kate, 1975). yearOfBirth(kyle, 1976).

Szukamy dziadków i babć % grandparent(Grandparent, Grandchild) % means Grandparent is a grandparent of Grandchild % grandparent(Grandparent, Grandchild) :- parent(Grandparent, Child), parent(Child, Grandchild).

Wyniki 3 ?- grandparent(Grandparent, Grandchild). Grandparent = albert, Grandchild = brian ; Grandparent = albert, Grandchild = lee ; Grandparent = albert, Grandchild = sandra ; Grandparent = albert, Grandchild = james ; Grandparent = albert, Grandchild = kate ; Grandparent = albert, Grandchild = kyle ; Grandparent = jim, Grandchild = jenny; ……………..

Kto jest starszy? % older(A,B) % means A is older than B % older(A,B) :- yearOfBirth(A, Y1), yearOfBirth(B, Y2), Y2 > Y1.

Wyniki 5 ?- older(A,B). A = irene, B = pat ; A = irene, B = lee ; A = irene, B = sandra ; A = irene, B = jenny ; ……….. A = kate, B = kyle ; A = kyle, B = jenny ; A = kyle, B = amanda ; false.

Rodzeństwo % siblings(A,B) % means A and B are siblings % siblings(A,B) :- parent(X, A), % A & B share a common parent parent(X,B), % A \== B. % A is different from B

Wyniki 6 ?- siblings(A,B). A = jim, B = peter ; A = peter, B = jim ; A = lee, B = sandra ; A = lee, B = james ; A = lee, 7 ?- siblings(peter,B). B = jim ; false.

Starsi bracia % olderBrother(A,B) % means A is an older brother of B % olderBrother(A,B) :- siblings(A, B), male(A), older(A, B).

Wyniki 8 ?- olderBrother(A,B). A = peter, B = jim ; A = james, B = lee ; A = james, B = sandra ; A = james, B = kate ; A = james, B = kyle ; A = peter, B = jim ; A = brian, B = darren ; false.

Potomkowie % descendant(Person, Descendant) % means Descendant is a descendant of Person. % descendant(Person, Descendant) :- parent(Person, Descendant). descendant(Person, Descendant) :- parent(Person, Child), descendant(Child, Descendant).

Wyniki 9 ?- descendant(Person, Descendant). Person = albert, Descendant = jim ; Person = albert, Descendant = peter ; Person = jim, Descendant = brian ; Person = john, Descendant = darren ; Person = peter, Descendant = lee ; …………….. Person = irene, Descendant = kate ; Person = irene, Descendant = kyle ; Person = pat, Descendant = jenny ; false.

Przodkowie % ancestor(Person, Ancestor) % means Ancestor is an ancestor of Person. % % This is functionally equivalent to descendant(Ancestor, Person). % ancestor(Person, Ancestor) :- parent(Ancestor, Person). ancestor(Person, Ancestor) :- parent(Parent, Person), ancestor(Parent, Ancestor).

Wyniki 10 ?- ancestor(jenny, Ancestor). Ancestor = brian ; Ancestor = amanda ; Ancestor = jim ; Ancestor = pat ; Ancestor = albert ; Ancestor = irene ; false.

Sieć powiązań własnościowych Nazwa córki Udział matki

Baza wiedzy i fakty jest_spolka_zalezna(Matka,Zalezna):- jest_spolka_matka(Matka,Zalezna). jest_spolka_zalezna(Matka,Zalezna):- jest_spolka_matka(Matka,Corka), jest_spolka_zalezna(Corka,Zalezna). jest_spolka_matka(Matka,Corka):- udzial(Matka,Corka,X), X>50. udzial(ambergold,spolkaA,55). udzial(ambergold,spolkaB,60). udzial(spolkaA,spolkaC,90). udzial(spolkaA,spolkaD,60). udzial(spolkaC,spolkaE,75). udzial(spolkaC,spolkaF,51). udzial(spolkaB,spolkaG,23). udzial(spolkaB,spolkaH,71 ).

Wyniki 20 ?- jest_spolka_zalezna(Matka,Corka). Matka = ambergold, Corka = spolkaA ; Matka = ambergold, Corka = spolkaB ; Matka = spolkaA, Corka = spolkaC ; Matka = spolkaA, Corka = spolkaD ; Matka = spolkaC, Corka = spolkaE ; Matka = spolkaC, Corka = spolkaF ; Matka = spolkaB, Corka = spolkaH ; Matka = ambergold, Corka = spolkaC ; Matka = ambergold, Corka = spolkaD ; Matka = ambergold, Corka = spolkaE ; Matka = ambergold, Corka = spolkaF ; Matka = ambergold, Corka = spolkaH ; Matka = spolkaA, Corka = spolkaE ; Matka = spolkaA, Corka = spolkaF ; false.

Wyniki szczegółowe 21 ?- jest_spolka_zalezna(ambergold,Cor ka). Corka = spolkaA ; Corka = spolkaB ; Corka = spolkaC ; Corka = spolkaD ; Corka = spolkaE ; Corka = spolkaF ; Corka = spolkaH ; false.

Wyniki szczegółowe 22 ?- jest_spolka_zalezna(spolkaB,Corka). Corka = spolkaH ; false. 23 ?- jest_spolka_zalezna(Matka,spolkaE). Matka = spolkaC ; Matka = ambergold ; Matka = spolkaA ; false.