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 22:02]
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 ==== 
  
-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:+==== Inne przykłady zastosowania XTT ====
  
-Klasy reprezentują reguły, Każda reguła składa się z +====Cennik biletów na wyciąg narciarski====
  
-Atrybutów:+Buduję tablicę XTT dla problemu dotyczacego spisu cen biletów do wyciagu narciarskiego w różnych porach dnia, róznych dniach i porach roku.
  
-- warunki wstępne np.pojedyncze elementy lub zbiory elementów  +Oto diagram ARD+ który prezentuje wzajemne powiazania miedzy elementami dla szukanego problemu:
--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 +{{:​pl:​miw:​miw08_xtt_serialization:​diagram1.png|:​pl:​miw:​miw08_xtt_serialization:​diagram1.png}}
-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 (npposzukiwana 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ł )+
  
 +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:
  
-==== Inne przykłady zastosowania XTT ====+{{:​pl:​miw:​miw08_xtt_serialization:​ceny_biletow_pociagow.png|:​pl:​miw:​miw08_xtt_serialization:​ceny_biletow_pociagow.png}}
  
-Buduję tablicę XTT dla problemu dotyczacego spisu cen biletów do wyciagu narciarskiego ​różnych porach dnia, róznych dniach i porach roku.+Utworzenie takiej tablicy ​java prezentuje ponizszy kod:
  
-Oto diagram ARD+ który prezentuje wzajemne powiazania miedzy elementami dla szukanego problemu:+<code java> 
 +public class RozkladPociagow{
  
-{{:​pl:​miw:​miw08_xtt_serialization:​diagram1.png|:​pl:​miw:​miw08_xtt_serialization:​diagram1.png}}+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>​
  
-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}} 
  
  
  
 +
 +
 +
 +
 +
 +
 +
 +
 +====Inne Podejście====
 +
 +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)
 +
 +Reprezentacja Reguł w języku SQL
 +
 +Należy na wstępie zbudować tablice reprezentujące wzajemne powiązania pomiędzy regułami :
 +
 +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)
 +
 +**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.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}}
 +
 +  * [[:​pl:​miw:​miw08_xtt_serialization#​Ceny biletów na pociąg]]
 +
 +{{:​pl:​miw:​miw08_xtt_serialization:​pociag.png|:​pl:​miw:​miw08_xtt_serialization:​pociag.png}}
  
 ====== Materiały ====== ====== Materiały ======
pl/miw/miw08_xtt_serialization.1211572927.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