Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_xtt_serialization [2008/05/23 21:58]
miw
pl:miw:miw08_xtt_serialization [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 Karol, Gorlach, <​Karol.gorlach@gmail.com>​ Karol, Gorlach, <​Karol.gorlach@gmail.com>​
  
Linia 20: Linia 22:
 ===== 080527 ===== ===== 080527 =====
   * sprawozdanie   * sprawozdanie
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
 ====== Projekt ====== ====== Projekt ======
Linia 32: Linia 43:
 -decision atributes -decision atributes
  
-  * napisany przez mnie kod dla przykładu termostatu:+Poszczegule reguły czyli opiekty klasy Regula sa umieszczone w liście typu Regula ​
  
 +Przykłady implementacji:​
  
-  * kod jest dostępny ​  {{:​pl:​miw:​miw08_xtt_serialization:​xtt5.java.txt|kopia}}+  * napisany przez mnie kod dla przykładu termostatu:{{:​pl:​miw:​miw08_xtt_serialization:​Termostat.java.txt|Termostat.java}}
  
-**alternatywne rozwiązanie:**+  ​dla przykładu cen biletów dla wyciagu narciarskiego:{{:​pl:​miw:​miw08_xtt_serialization:​WyciagNarciarski.java.txt|WyciagNarciarski.java}} 
 + 
 + 
 +  ​dla przykładu cen biletów na pociag na określonej trasie:​{{:​pl:​miw:​miw08_xtt_serialization:​ 
 +rozkladpociagow.java.txt|RozkladPociagow.java}} 
 + 
 + 
 + 
 + 
 +====== Sprawozdanie ======
  
-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}} 
  
  
Linia 53: Linia 69:
  
  
-====== Sprawozdanie ====== 
  
  
Linia 62: Linia 77:
  
  
-==== data 080408 ​====+==== Sposób reprezentacji ​====
  
 Ogólna Forma reprezentacji reguł w XTT: Ogólna Forma reprezentacji reguł w XTT:
Linia 94: Linia 109:
  
 <code java> <code java>
-import java.io.*; 
-import java.lang.*;​ 
-import java.util.*;​ 
 class Regula{ class Regula{
 Object precondition[];​ Object precondition[];​
Linia 191: Linia 203:
  {  {
  this.precondition=new Object[1];  this.precondition=new Object[1];
- this.precondition=precondition1;+ this.precondition[0]=precondition;
  }  }
  this.decision=decision;​  this.decision=decision;​
Linia 203: Linia 215:
  for(int i=0;​i<​this.precondition.length;​i++){  for(int i=0;​i<​this.precondition.length;​i++){
  if(object==this.precondition[i]){  if(object==this.precondition[i]){
 +
 + if(this.asert!=null)
 + {
  return this.asert;  return this.asert;
 + }
 + else
 + {
 + return this.decision;​
 + }
 + }
 +
  }  }
- } 
 return null; return null;
 } }
Linia 213: Linia 234:
  for(int j=0;​i<​this.precondition1.length;​j++){  for(int j=0;​i<​this.precondition1.length;​j++){
  if(object1==this.precondition1[j]){  if(object1==this.precondition1[j]){
 + if(this.asert!=null)
 + {
  return this.asert;  return this.asert;
 + }
 + else
 + {
 + return this.decision;​
 + }
  }  }
  }  }
Linia 225: Linia 253:
 } }
 </​code>​ </​code>​
 +
 +====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ł )
 +
 +
 +
 +====Przykład Termostatu====
 +Termostat jest wzorcowym przykładem do prezentacji działania systemów regulowych, mozna go znaleźć na wiki:​[[hekate:​
 +hekate_concepts#​xtt+]]
 +
 +Diagram ARD+ termostatu:
 +{{:​pl:​miw:​miw08_xtt_serialization:​xtt-structure-therm.png|:​pl:​miw:​miw08_xtt_serialization:​xtt-structure-therm.png}}
  
 Dla przykładu termostatu tablica ​ XTT  wygląda tak: Dla przykładu termostatu tablica ​ XTT  wygląda tak:
  
-{{:​pl:​miw:​miw08_xtt_serialization:​xtt2.jpg|:​pl:​miw:​miw08_xtt_serialization:​xtt2.jpg}}+{{:​pl:​miw:​miw08_xtt_serialization:​tabela_termostat.png|:​pl:​miw:​miw08_xtt_serialization:​tabela_termostat.png}}
  
 napisany przezemnie kod w javie dla tablicy XTT za pomocą reguł- przykład termostatu napisany przezemnie kod w javie dla tablicy XTT za pomocą reguł- przykład termostatu
  
-<​code>​+<​code ​java>
 public class Termostat{ public class Termostat{
 public static void main(String args[]){ public static void main(String args[]){
Linia 266: Linia 319:
 list.add(new Regula(0,​16,"​dbh","​winter",​null,​18));​ //​regula16 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,​17,"​ndbh","​fall",​null,​16));​ //​regula17
-list.add(new Regula(0,​0,"​dbh","​fall",​null,​20));​ //​regula18+list.add(new Regula(0,​0,"​dbh","​fall",​null,​20));​         ​//regula18
 // przykladowe uzycie metody // przykladowe uzycie metody
 System.out.println(list.get(0).Sprawdz("​tuesday"​)); ​ System.out.println(list.get(0).Sprawdz("​tuesday"​)); ​
Linia 276: Linia 329:
  
  
-==== data 080422 ​====+ 
 + 
 + 
 + 
 + 
 + 
 +==== Inne przykłady zastosowania XTT ==== 
 + 
 +====Cennik biletów na wyciąg narciarski==== 
 + 
 +Buduję tablicę XTT dla problemu dotyczacego spisu cen biletów do wyciagu narciarskiego w różnych porach dnia, róznych dniach i porach roku. 
 + 
 +Oto diagram ARD+ który prezentuje wzajemne powiazania miedzy elementami dla szukanego problemu: 
 + 
 +{{:​pl:​miw:​miw08_xtt_serialization:​diagram1.png|:​pl:​miw:​miw08_xtt_serialization:​diagram1.png}} 
 + 
 +Na tej podtawie łatwo zbudowac tablicę XTT, oraz reguły: 
 + 
 +{{:​pl:​miw:​miw08_xtt_serialization:​xtt_wyciag_narciarski.png|:​pl:​miw:​miw08_xtt_serialization:​xtt_wyciag_narciarski.png}} 
 + 
 +Utworzenie takiej tablicy w java prezentuje ponizszy kod: 
 + 
 +<code java> 
 +public class WyciagNarciarski{ 
 + 
 +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 out[]={"​june","​july","​august","​september"​};​ 
 +String in_the_middle[]={"​december","​january","​february"​};​ 
 +String before[]={"​october","​november"​};​ 
 +String after[]={"​march","​april","​may"​};​ 
 +Integer before12[]={8,​9,​10,​11,​12};​ 
 +Integer between_12_16[]={12,​13,​14,​15};​ 
 +Integer after16[]={16,​17,​18,​19,​20};​ 
 +Integer ANY[]={8,​9,​10,​11,​12,​13,​14,​15,​16,​17,​18,​19,​20};​ 
 +Integer All[]={8,​9,​10,​11,​12,​13,​14,​15,​16,​17,​18,​19,​20};​ 
 +String grup_All_season[]={"​out","​before","​in_the_middle","​after"​};​ 
 +String para_near_season[]={"​before","​after"​};​ 
 +String morning[]={"​morning_weekend","​morning_workd"​};​ 
 +String midday[]={"​midday_weekend","​midday_workd"​};​ 
 +String evening[]={"​evening_workd","​evening_weekend"​};​ 
 +String allday[]={"​All_weekend","​All_workd"​};​ 
 +// deklaracja regul 
 +list.add(new Regula(2,​1,​dniprac,​null,"​workday",​null));​ //​regula1 
 +list.add(new Regula(7,​0,​dniwolne,​null,"​weekend",​null));​  ​       //regula2 
 +list.add(new Regula(12,​3,"​workday"​ ,​before12,"​morning_workd",​null)); ​   //regula3 
 +list.add(new Regula(12,​4,"​workday",​between_12_16,"​midday_workd",​null));​ //regula4 
 +list.add(new Regula(12,​5,"​workday",​after16,"​evening_workd",​null));​ //​regula5 
 +list.add(new Regula(12,​6,"​workday",​All,"​All_workd",​null));​ //​regula6 
 +list.add(new Regula(12,​7,"​workday",​ANY,"​single",​null));​  ​       //regula7 
 +list.add(new Regula(12,​8,"​weekend",​before12,"​morning_weekend",​null)); ​  //​regula8 
 +list.add(new Regula(12,​9,"​weekend",​between_12_16,"​midday_weekend",​null));//​regula9 
 +list.add(new Regula(12,​10,"​weekend",​after16,"​evening_weekend",​null)); ​  //​regula10 
 +list.add(new Regula(12,​11,"​weekend",​All,"​All_weekend",​null));​ //​regula11 
 +list.add(new Regula(12,​2,"​weekend",​ANY,"​single",​null));​  ​       //​regula12 
 +list.add(new Regula(16,​13,​out,​null,"​out",​null));​ //​regula13 
 +list.add(new Regula(16,​14,​before,​null,"​before",​null));​ //​regula14 
 +list.add(new Regula(16,​15,​in_the_middle,​null,"​in the middle",​null));​ //​regula15 
 +list.add(new Regula(16,​12,​after,​null,"​after",​null));​ //​regula16 
 +list.add(new Regula(0,​17,​grup_All_season,"​single",​null,​5));​ //​regula17 
 +list.add(new Regula(0,​18,​para_near_season,​morning,​null,​20));​ //​regula18 
 +list.add(new Regula(0,​19,​para_near_season,​midday,​null,​25));​ //​regula19 
 +list.add(new Regula(0,​20,​para_near_season,​evening,​null,​15));​ //​regula20 
 +list.add(new Regula(0,​21,​para_near_season,​allday,​null,​35));​ //​regula21 
 +list.add(new Regula(0,​22,"​in_the_middle","​morning_workd",​null,​28));​ //​regula22 
 +list.add(new Regula(0,​23,"​in_the_middle","​midday_workd",​null,​35));​ //​regula23 
 +list.add(new Regula(0,​24,"​in_the_middle","​evening_workd",​null,​28));​ //​regula24 
 +list.add(new Regula(0,​25,"​in_the_middle","​All_workd",​null,​60));​  ​       //​regula25 
 +list.add(new Regula(0,​26,"​in_the_middle","​morning_weekend",​null,​35)); ​  //​regula26 
 +list.add(new Regula(0,​27,"​in_the_middle","​midday_weekend",​null,​40));​ //​regula22 
 +list.add(new Regula(0,​28,"​in_the_middle","​evening_weekend",​null,​30)); ​  //​regula27 
 +list.add(new Regula(0,​0,"​in_the_middle","​All_weekend",​null,​80));​ //​regula28 
 + 
 +// przykladowe uzycie metody 
 +System.out.println(list.get(0).Sprawdz("​tuesday"​));​  
 +System.out.println(list.get(21).Sprawdz("​in_the_middle","​morning_workd"​));​ 
 +
 +
 +</​code>​ 
 + 
 +====Ceny biletów na pociąg==== 
 +Buduję tablicę XTT dla problemu dotyczacego spisu cen biletów na pociagi na trasie Kraków-Przemyś,​biorąc pod uwagę klasę, rodzaj pociagu i ilośc przejechanych kilometrów 
 +Oto diagram ARD+ który prezentuje wzajemne powiazania miedzy elementami dla szukanego problemu: 
 + 
 +{{:​pl:​miw:​miw08_xtt_serialization:​diagram1d.png|:​pl:​miw:​miw08_xtt_serialization:​diagram1d.png}} 
 + 
 +Na tej podtawie łatwo zbudowac tablicę XTT, oraz reguły: 
 + 
 +{{:​pl:​miw:​miw08_xtt_serialization:​ceny_biletow_pociagow.png|:​pl:​miw:​miw08_xtt_serialization:​ceny_biletow_pociagow.png}} 
 + 
 +Utworzenie takiej tablicy w java prezentuje ponizszy kod: 
 + 
 +<code java> 
 +public class RozkladPociagow{ 
 + 
 +public static void main(String args[]){ 
 +// incjalizacja listy 
 +List<​Regula>​ list= new ArrayList<​Regula>​();​ 
 +// deklaracja regul 
 +list.add(new Regula(2,​1,"​rzeszowianin",​null,"​osobowy",​null));​ //​regula1 
 +list.add(new Regula(3,​0,"​przemyslanin",​null,"​pospieszny",​null));//​regula2 
 +list.add(new Regula(5,​3,"​osobowy",​2,"​osob2",​null));​ //​regula3 
 +list.add(new Regula(5,​4,"​pospieszny",​1,"​posp1",​null));​ //​regula4 
 +list.add(new Regula(5,​2,"​pospieszny",​2,"​posp2",​null));​ //​regula5 
 +list.add(new Regula(10,​6,"​Krakow-Bochnia",​null,​50,​null));​ //​regula6 
 +list.add(new Regula(13,​7,"​Krakow-Tarnow",​null,​100,​null));​ //​regula7 
 +list.add(new Regula(16,​8,"​Krakow-Debica",​null,​150,​null));​ //​regula8 
 +list.add(new Regula(19,​9,"​Krakow-Rzeszow",​null,​200,​null));​ //​regula9 
 +list.add(new Regula(22,​5,"​Krakow-Przemysl",​null,​300,​null));​ //​regula10 
 +list.add(new Regula(0,​11,"​osob2",​50,​null,​5));​ //​regula11 
 +list.add(new Regula(0,​12,"​posp1",​50,​null,​10));​ //​regula12 
 +list.add(new Regula(0,​13,"​posp2",​50,​null,​7));​ //​regula13 
 +list.add(new Regula(0,​14,"​osob2",​100,​null,​8));​ //​regula14 
 +list.add(new Regula(0,​15,"​posp1",​100,​null,​16));​ //​regula15 
 +list.add(new Regula(0,​16,"​posp2",​100,​null,​9));​ //​regula16 
 +list.add(new Regula(0,​17,"​osob2",​150,​null,​11));​ //​regula17 
 +list.add(new Regula(0,​18,"​posp1",​150,​null,​25));​ //​regula18 
 +list.add(new Regula(0,​19,"​posp2",​150,​null,​20));​ //​regula19 
 +list.add(new Regula(0,​20,"​osob2",​200,​null,​15));​ //​regula20 
 +list.add(new Regula(0,​21,"​posp1",​200,​null,​32));​ //​regula21 
 +list.add(new Regula(0,​22,"​posp2",​200,​null,​25));​ //​regula22 
 +list.add(new Regula(0,​23,"​osob2",​300,​null,​20));​ //​regula23 
 +list.add(new Regula(0,​24,"​posp1",​300,​null,​40));​ //​regula24 
 +list.add(new Regula(0,​0,"​posp2",​300,​null,​30));​ //​regula25 
 +// przykladowe uzycie metody 
 +System.out.println(list.get(0).Sprawdz("​rzeszowianin"​));​ 
 +System.out.println(list.get(10).Sprawdz("​osob2",​50));​  
 +
 +
 +</​code>​ 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +====Inne Podejście====
  
 Reprezentacja tablic xtt w języku SQL Reprezentacja tablic xtt w języku SQL
Linia 289: Linia 489:
 Dopiero po zbudowaniu wzajemnych zależności pomiędzy tablicami: wprowadzamy dane do tablic (reprezentacje reguł w xtt) Dopiero po zbudowaniu wzajemnych zależności pomiędzy tablicami: wprowadzamy dane do tablic (reprezentacje reguł w xtt)
  
 +Reprezentacja Reguł w języku SQL
  
-Sposób tworzenia tablic xtt  w Javie:+Należy na wstępie zbudować tablice reprezentujące wzajemne powiązania pomiędzy regułami ​:
  
-Klasy reprezentują reguły, Każda reguła składa się +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
  
-Atrybutów:+Dopiero po zbudowaniu wzajemnych zależności pomiędzy tablicamiwprowadzamy dane do tablic (reprezentacje reguł w xtt)
  
-- warunki wstępne np.: pojedyncze elementy lub zbiory elementów  +**alternatywne rozwiązanie:**
--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 +realizacja XTT za pomocą SQL.
-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ł )+
  
 +>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.Wzorując się na budowie schematów ARD+ zbudowałem powiazania miedzy tablicami.
  
  
 +**Tablice SQL dla pozostałych przykładów(Cennik biletów pociagow oraz Cennik biletów na wyciag narciarski)**
  
 +Ponizej ilustruje szablon reliacji tablic w sql zrealizowany w DBdesigner dla przykładow:​
 +  * [[:​pl:​miw:​miw08_xtt_serialization#​Przykład Termostatu]]
  
 +{{:​pl:​miw:​miw08_xtt_serialization:​termostat.png|termostat}}
  
  
 +  * [[:​pl:​miw:​miw08_xtt_serialization#​Cennik biletów na wyciąg narciarski]]
  
 +{{:​pl:​miw:​miw08_xtt_serialization:​wyciag.png|:​pl:​miw:​miw08_xtt_serialization:​wyciag.png}}
  
-==== Inne przykłady zastosowania XTT ==== +  * [[:​pl:​miw:​miw08_xtt_serialization#Ceny biletów na pociąg]]
- +
-Buduję tablicę XTT dla problemu dotyczacego spisu cen biletów do wyciagu narciarskiego w różnych porach dnia, róznych dniach i porach roku. +
- +
-Oto diagram ARD+ który prezentuje wzajemne powiazania miedzy elementami dla szukanego problemu: +
- +
-{{:​pl:​miw:​miw08_xtt_serialization:​diagram1.png|:​pl:​miw:​miw08_xtt_serialization:​diagram1.png}} +
- +
-Na tej podtawie łatwo zbudowac tablicę XTT, oraz reguły: +
- +
  
 +{{:​pl:​miw:​miw08_xtt_serialization:​pociag.png|:​pl:​miw:​miw08_xtt_serialization:​pociag.png}}
  
 ====== Materiały ====== ====== Materiały ======
pl/miw/miw08_xtt_serialization.1211572729.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0