[[
✎ pl:miw:miw08_xtt_serialization
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Opis ====== Karol, Gorlach, <Karol.gorlach@gmail.com> Try to propose an effective encoding of XTT with UML and Java. ====== Spotkania ====== ===== 08.02.26 ===== ===== 080318 ===== ===== 080408 ===== * xtt w java... ===== 080422 ===== * opis alg dla javy i sql ===== 080527 ===== * sprawozdanie ====== Projekt ====== **realizacja tablic XTT w javie** Model tabic XTT zrealizowalem w jave za pomocą klas Reguł, w której sładowymi są: -atrybuty XTT tablicy-precondition atributes -assert atributes -decision atributes * napisany przez mnie kod dla przykładu termostatu: * kod jest dostępny {{:pl:miw:miw08_xtt_serialization:xtt5.java.txt|kopia}} **alternatywne rozwiązanie:** realizacja XTT za pomocą SQL. >Ze wzgledu na to że reprezentacja danych jest w tablicach, oraz wystepuja powiązania w łatwy sposób mozna zbudowac tablicę i powiązania miedzy nimi. Ponizej ilustruje szablon reliacji tablic w sql zrealizowany w DBdesigner dla przykładu który można znaleźć na stronie wiki: [[https://ai.ia.agh.edu.pl/wiki/_detail/hekate:xtt-structure-therm.png?id=hekate%3Ahekate_concepts&cache=cache|tabela xtt]] oto schemat: {{:pl:miw:miw08_xtt_serialization:termostat.png|termostat}} ====== Sprawozdanie ====== ==== data 080408 ==== Ogólna Forma reprezentacji reguł w XTT: {{:pl:miw:miw08_xtt_serialization:xtt1.jpg|:pl:miw:miw08_xtt_serialization:xtt1.jpg}} Kolumny są określone następująco: I-identyfikator reguły(numer elementu w tablicy) Ctx-(ang. Contex) opis reguły A1 ..An - warunki wstępne B1 ..Bn - warunki modyfikujące C1 ..Cn - warunek określany H1 ..Hn – warunki decyzyjne N- atrybut kontrolny określający nastepującą regułę E- atrybut kontrolny określający opcjonalną, inną regułę Aby określić rolę musimy podąć następujące parametry wejściowe: Roles={Info,Preconditions,Assert,Retract,Decision,Ctrl} Przypadek ogólny reguły-klasy w javie: <code java> import java.io.*; import java.lang.*; import java.util.*; class Regula{ Object precondition[]; Object precondition1[]; Object decision; Object asert; int CtrlN; int CtrlL; //konstruktory public Regula(int CtrlN,int CtrlL,Object precondition,Object precondition1,Object asert,Object decision) { if(precondition==null) { this.precondition=null; } else { this.precondition=new Object[1]; this.precondition[0]=precondition; } if(precondition1==null) { this.precondition1=null; } else { this.precondition1=new Object[1]; this.precondition1[0]=precondition1; } this.decision=decision; this.asert=asert; this.CtrlN=CtrlN; this.CtrlL=CtrlL; } public Regula(int CtrlN,int CtrlL,Object precondition[],Object precondition1[],Object asert,Object decision) { if(precondition==null) { this.precondition=null; } else { this.precondition=new Object[precondition.length]; System.arraycopy(precondition,0,this.precondition,0,precondition.length); } if(precondition1==null) { this.precondition1=null; } else { this.precondition1=new Object[precondition1.length]; System.arraycopy(precondition1,0,this.precondition1,0,precondition1.length); } this.decision=decision; this.asert=asert; this.CtrlN=CtrlN; this.CtrlL=CtrlL; } public Regula(int CtrlN,int CtrlL,Object precondition[],Object precondition1,Object asert,Object decision) { if(precondition==null) { this.precondition=null; } else { this.precondition=new Object[precondition.length]; System.arraycopy(precondition,0,this.precondition,0,precondition.length); } this.precondition1=new Object[1]; this.precondition1[0]=precondition1; this.decision=decision; this.asert=asert; this.CtrlN=CtrlN; this.CtrlL=CtrlL; } public Regula(int CtrlN,int CtrlL,Object precondition,Object precondition1[],Object asert,Object decision) { if(precondition1==null) { this.precondition1=null; } else { this.precondition1=new Object[precondition1.length]; System.arraycopy(precondition1,0,this.precondition1,0,precondition1.length); } if(precondition==null) { this.precondition=null; } else { this.precondition=new Object[1]; this.precondition=precondition1; } this.decision=decision; this.asert=asert; this.CtrlN=CtrlN; this.CtrlL=CtrlL; } // metody public Object Sprawdz(Object object){ for(int i=0;i<this.precondition.length;i++){ if(object==this.precondition[i]){ return this.asert; } } return null; } public Object Sprawdz(Object object,Object object1){ for(int i=0;i<this.precondition.length;i++){ if(object==this.precondition[i]){ for(int j=0;i<this.precondition1.length;j++){ if(object1==this.precondition1[j]){ return this.asert; } } } } return null; } public String toString(){ return "numer :"+this.CtrlN; } } </code> Dla przykładu termostatu tablica XTT wygląda tak: {{:pl:miw:miw08_xtt_serialization:xtt2.jpg|:pl:miw:miw08_xtt_serialization:xtt2.jpg}} napisany przezemnie kod w javie dla tablicy XTT za pomocą reguł- przykład termostatu <code> public class Termostat{ public static void main(String args[]){ // incjalizacja listy List<Regula> list= new ArrayList<Regula>(); // deklaracja atrybutow String dniprac[]={"monday","tuesday","wednesday","thurstday","friday"}; String dniwolne[]={"saturday","sunday"}; String winter[]={"december","january","february"}; String spring[]={"march","april","may"}; String summer[]={"june","july","august"}; String fall[]={"september","october","november"}; Integer before17[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; Integer ANY[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}; Integer after9[]={10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}; Integer in9and17[]={9,17}; // deklaracja regul list.add(new Regula(2,1,dniprac,null,"workday",null)); //regula1 list.add(new Regula(2,0,dniwolne,null,"weekend",null)); //regula2 list.add(new Regula(6,3,"workday",before17,"dbh",null));//regula3 list.add(new Regula(6,4,"workday",ANY,"ndbh",null)); //regula4 list.add(new Regula(6,5,"workday",after9,"ndbh",null)); //regula5 list.add(new Regula(6,2,"weekend",in9and17,"ndbh",null));//regula6 list.add(new Regula(12,7,winter,null,"winter",null)); //regula7 list.add(new Regula(14,8,spring,null,"spring",null)); //regula8 list.add(new Regula(16,9,summer,null,"summer",null)); //regula9 list.add(new Regula(10,6,fall,null,"fall",null)); //regula10 list.add(new Regula(0,11,"ndbh","summer",null,27)); //regula11 list.add(new Regula(0,12,"dbh","summer",null,24)); //regula12 list.add(new Regula(0,13,"ndbh","spring",null,15)); //regula13 list.add(new Regula(0,14,"dbh","spring",null,20)); //regula14 list.add(new Regula(0,15,"ndbh","winter",null,14)); //regula15 list.add(new Regula(0,16,"dbh","winter",null,18)); //regula16 list.add(new Regula(0,17,"ndbh","fall",null,16)); //regula17 list.add(new Regula(0,0,"dbh","fall",null,20)); //regula18 // przykladowe uzycie metody System.out.println(list.get(0).Sprawdz("tuesday")); System.out.println(list.get(17).Sprawdz("dbh","fall")); } </code> ==== data 080422 ==== Reprezentacja tablic xtt w języku SQL Należy na wstępie zbudować tablice reprezentujące wzajemne powiązania pomiędzy regułami w xtt: Zapis ten można interpretować w ten sposób że: -Tablice SQL reprezentują reguły w xtt -indeks tablicy (klucz) – są to warunki określające w tablicy xtt -klucze obce są to –warunki wstępne w tablicy xtt Dopiero po zbudowaniu wzajemnych zależności pomiędzy tablicami: wprowadzamy dane do tablic (reprezentacje reguł w xtt) Sposób tworzenia tablic xtt w Javie: Klasy reprezentują reguły, Każda reguła składa się z Atrybutów: - warunki wstępne np.: pojedyncze elementy lub zbiory elementów -warunków modyfikujących np.: za pomocą których możemy zmieniać warunki określające reguł -warunki określające -warunki decyzyjne Poszczególne reguły są umieszczone w tablicy, a więc każda regułę identyfikuje jednoznacznie położenie w tablicy. Istnieje możliwość odwoływania się z jednej reguły do drugiej, w ten sposób że każda reguła posiada pole określające inną regułę reprezentującą ten sam typ atrybutów , i warunków określających (np. poszukiwana reguła nie posiada szukanych przez nas atrybutów) Każda reguła zawiera również informacje o regule wyższego poziomu, lub niższego (pole klasy). Co wiąże się z poszukiwaniem warunków decyzyjnych. Do odwoływania się pomiędzy regułami służą metody (wykorzystujące informacje znajdującą się w polach obiektów-reguł ) ==== Inne przykłady zastosowania XTT ==== {{:pl:miw:miw08_xtt_serialization:diagram1.png|:pl:miw:miw08_xtt_serialization:diagram1.png}} ====== Materiały ====== [[hekate:hekate_concepts#xtt+]] ====== Literatura ====== * Antoni Ligęza,"Logical Foundations for Rule-Based System",Uczelniane Wydawnictwa Naukowo-dydaktyczne AGH Kraków 2005.
pl/miw/miw08_xtt_serialization.1211572408.txt.gz
· ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry