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:13]
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}}
  
-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+  * dla przykładu ​cen biletów ​na pociag ​na określonej trasie:{{:​pl:​miw:​miw08_xtt_serialization:​ 
 +rozkladpociagow.java.txt|RozkladPociagow.java}} 
 + 
 + 
 + 
 + 
 +====== Sprawozdanie ======
  
-[[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 67:
  
  
-====== Sprawozdanie ====== 
  
  
Linia 64: Linia 77:
  
  
-==== data 080408 ​====+==== Sposób reprezentacji ​====
  
 Ogólna Forma reprezentacji reguł w XTT: Ogólna Forma reprezentacji reguł w XTT:
Linia 96: Linia 109:
  
 <code java> <code java>
-import java.io.*; 
-import java.lang.*;​ 
-import java.util.*;​ 
 class Regula{ class Regula{
 Object precondition[];​ Object precondition[];​
Linia 193: 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 205: 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 215: 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 227: 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
Linia 278: 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:​ +
- +
-- 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 ====+
  
 Buduję tablicę XTT dla problemu dotyczacego spisu cen biletów do wyciagu narciarskiego w różnych porach dnia, róznych dniach i porach roku. Buduję tablicę XTT dla problemu dotyczacego spisu cen biletów do wyciagu narciarskiego w różnych porach dnia, róznych dniach i porach roku.
Linia 334: Linia 352:
  
 <code java> <code java>
-public class Wyciag_Narciarski{+public class WyciagNarciarski{
  
 public static void main(String args[]){ public static void main(String args[]){
Linia 359: Linia 377:
 // deklaracja regul // deklaracja regul
 list.add(new Regula(2,​1,​dniprac,​null,"​workday",​null));​ //​regula1 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(7,​0,​dniwolne,​null,"​weekend",​null));​         ​//regula2 
-list.add(new Regula(12,​3,"​workday"​ ,​before12,"​morning_workd",​null));//​regula3 +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,​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,​5,"​workday",​after16,"​evening_workd",​null));​ //​regula5
 list.add(new Regula(12,​6,"​workday",​All,"​All_workd",​null));​ //​regula6 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,​7,"​workday",​ANY,"​single",​null));​         ​//regula7 
-list.add(new Regula(12,​8,"​weekend",​before12,"​morning_weekend",​null));//​regula8+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,​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,​10,"​weekend",​after16,"​evening_weekend",​null)); ​  ​//regula10
 list.add(new Regula(12,​11,"​weekend",​All,"​All_weekend",​null));​ //​regula11 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(12,​2,"​weekend",​ANY,"​single",​null));​         ​//regula12
 list.add(new Regula(16,​13,​out,​null,"​out",​null));​ //​regula13 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,​14,​before,​null,"​before",​null));​ //​regula14
Linia 376: Linia 394:
 list.add(new Regula(0,​17,​grup_All_season,"​single",​null,​5));​ //​regula17 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,​18,​para_near_season,​morning,​null,​20));​ //​regula18
-list.add(new Regula(0,​19,​para_near_season,​midday,​null,​25));​ //​regula14 +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));​ //​regula15 +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));​ //​regula16 +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));​ //​regula17 +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));​ //​regula18 +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));​ //​regula19 +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));​ //​regula20 +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));//​regula21+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,​27,"​in_the_middle","​midday_weekend",​null,​40));​ //​regula22
-list.add(new Regula(0,​28,"​in_the_middle","​evening_weekend",​null,​30));//​regula23 +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));​ //​regula24+list.add(new Regula(0,​0,"​in_the_middle","​All_weekend",​null,​80));​ //​regula28
  
 // przykladowe uzycie metody // przykladowe uzycie metody
Linia 395: Linia 413:
 </​code>​ </​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
 +
 +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.1211573590.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