To jest stara wersja strony!


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 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:

tabela xtt

oto schemat:

termostat

Sprawozdanie

data 080408

Ogólna Forma reprezentacji reguł w XTT:

: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:

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;
}
}

Dla przykładu termostatu tablica XTT wygląda tak:

:pl:miw:miw08_xtt_serialization:xtt2.jpg

napisany przezemnie kod w javie dla tablicy XTT za pomocą reguł- przykład termostatu

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"));
}

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

Materiały

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)
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