You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(39) |
Dec
(45) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(192) |
Feb
(70) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <le...@us...> - 2007-02-17 08:09:19
|
Revision: 349 http://svn.sourceforge.net/qcell/?rev=349&view=rev Author: lessm Date: 2007-02-17 00:09:17 -0800 (Sat, 17 Feb 2007) Log Message: ----------- Modified Paths: -------------- trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex trunk/qcell/doc/licenciate_thesis/chap6/select2.png Modified: trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-17 07:01:25 UTC (rev 348) +++ trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-17 08:09:17 UTC (rev 349) @@ -331,21 +331,37 @@ \begin{table}[!p] \centering \caption{Por\xF3wnanie dost\xEApnych AK} -\begin{tabular}{p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}} -AK & Model LAK & Model DAK & Model TAK & Dynamika globalna & Wymiana danych pomi\xEAdzy pakietami & Graficzna reprezentacja symulacji & Tekstowa reprezentacja symulacji & Obserwator lokalny & Wspomaganie doboru modelu\\ +\begin{tabular}{p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}} +AK & Model LAK & Model DAK & Model TAK & Dynamika globalna & Wymiana danych pomi\xEAdzy pakietami & Obserwator lokalny & Wspomaganie doboru modelu\\ \hline -MCell & Tak & Tak & Nie & Nie & Tak & Tak & Nie & Nie & Nie\\ +MCell & Tak & Tak & Nie & Nie & Tak & Nie & Nie\\ \hline -DDLab & Tak & Tak & Nie & Tak & Nie & Tak & Nie & Nie & Nie\\ +DDLab & Tak & Tak & Nie & Tak & Nie & Nie & Nie\\ \hline -Life32 & Nie & Tak & Nie & Nie & Tak & Tak & Nie & Nie & Nie\\ +Life32 & Nie & Tak & Nie & Nie & Tak & Nie & Nie\\ \hline -CelLab & Nie & Tak & Nie & Nie & Nie & Tak & Nie & Nie & Nie\\ +CelLab & Nie & Tak & Nie & Nie & Nie& Nie & Nie\\ \hline -WinLife & Nie & Tak & Nie & Nie & Nie & Tak & Nie & Nie & Nie +WinLife & Nie & Tak & Nie & Nie & Nie & Nie & Nie\\ +\hline +\hline +AK & Skalowanie & siatka ON/OFF & historia kom\xF3rki & Graficzna reprezentacja symulacji & Tekstowa reprezentacja\\ +\hline + +MCell & Tak & Tak & Tak & Tak & Nie\\ +\hline +DDLab & Tak & Tak & Nie & Tak & Nie \\ +\hline +Life32 & Tak & Tak & Nie & Tak & Nie\\ +\hline +CelLab & Tak & Nie & Nie & Tak & Nie \\ +\hline +WinLife & Nie & Nie & Nie & Tak & Nie \\ + \end{tabular} \label{tab:} \end{table} + \end{landscape} % vim:fencs=cp1250:fenc=cp1250 Modified: trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-17 07:01:25 UTC (rev 348) +++ trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-17 08:09:17 UTC (rev 349) @@ -57,7 +57,7 @@ \item funkcja lokalna \begin{itemize} - \item FQT - Format pliku tekstowego do opisu \ac{FL}, zawieraj\xB9cego w kolejnych wierszach: + \item FQT - Format pliku tekstowego do opisu \ac{FL}\citep{siwy, sicw}, zawieraj\xB9cego w kolejnych wierszach: \begin{itemize} \item identyfikator literowy typu funkcji, tj FQT, \item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczno\x9C\xE6 alfabetu wej\x9Cciowego oraz liczno\x9C\xE6 alfabetu wyj\x9Cciowego, @@ -65,14 +65,14 @@ \item kolejne sumy $s$ (dziesi\xEAtnie) i ci\xB9gi warto\x9Cci dla ustalonego $s$: $f(s,w_{max}) f(s,w_{max-1}) ... f(s,w_{min})$, gdzie $w_{max}$ oznacza maksymalny ci\xB9g wyraz\xF3w wolnych w porz\xB9dku leksykograficznym. \end{itemize} -\item ZIFW - zawiera w kolejnych wierszach: +\item ZIFW - zawiera w kolejnych wierszach\citep{siwy, sicw}: \begin{itemize} \item identyfikator literowy typu funkcji, tj ZIFW, \item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczno\x9C\xE6 alfabetu wej\x9Cciowego oraz liczno\x9C\xE6 alfabetu wyj\x9Cciowego, \item zbiory sterowa\xF1 dla kolejnych warto\x9Cci funkcji (my\x9Clnik oznacza warto\x9C\xE6 nieokre\x9Clon\xB9). \end{itemize} -\item REAK - Format pliku tekstowego do opisu \ac{FL}, zawiera w kolejnych wierszach: +\item REAK - Format pliku tekstowego do opisu \ac{FL}\citep{siwy, sicw}, zawiera w kolejnych wierszach: \begin{itemize} \item identyfikator literowy typu funkcji, tj REAK \item dwie liczby (separowane spacj\xB9): liczba symboli alfabetu WE/WY, liczba argument\xF3w funkcji lokalnej, @@ -83,7 +83,7 @@ \item s\xB9siedztwo \begin{itemize} -\item N~--- Plik przeznaczony do specyfikowania uk\xB3adu s\xB9siedztwa, tj. kolejno\x9Cci i po\xB3o\xBFenia s\xB9siad\xF3w kom\xF3rki. W kolejnych wierszach zawiera: +\item N~--- Plik przeznaczony do specyfikowania uk\xB3adu s\xB9siedztwa\citep{siwy, sicw}, tj. kolejno\x9Cci i po\xB3o\xBFenia s\xB9siad\xF3w kom\xF3rki. W kolejnych wierszach zawiera: \begin{itemize} \item Litera i cyfra: N{1,2,3} - identyfiktor pliku z rozmiarem przestrzeni s\xB9siad\xF3w, \item do czterech liczb ca\xB3kowitych: $W K S n$ - okre\x9Clenie liczby wierszy, kolumn, \x9Ccian oraz s\xB9siad\xF3w, @@ -94,7 +94,7 @@ \item konfiguracja inicjalna \begin{itemize} -\item KI~--- Plik opisu konfiguracji inicjalnej. Poszczeg\xF3lne wiersze oddzielone s\xB9 znakami ko\xF1ca linii, \x9Cciany zaznaczone s\xB9 poprzez pust\xB9 lini\xEA w pliku. +\item KI~--- Plik opisu konfiguracji inicjalnej\citep{siwy, sicw}. Poszczeg\xF3lne wiersze oddzielone s\xB9 znakami ko\xF1ca linii, \x9Cciany zaznaczone s\xB9 poprzez pust\xB9 lini\xEA w pliku. \end{itemize} \end{itemize} Modified: trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-17 07:01:25 UTC (rev 348) +++ trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-17 08:09:17 UTC (rev 349) @@ -361,6 +361,22 @@ Do przedstawienia poni\xBFszego eksperymentu u\xBFyto plik\xF3w "propagation1d.FQT", "propagation1d.N", "propagation1d.KI" znajduj\xB9cych si\xEA w katalogu "examples". +\begin{figure}[!h] +\centering +\includegraphics[width=14cm]{chap6/og1d} +\caption {Symulator w trybie \ac{OG}} +\label{fig:og1d} +\end{figure} +W celu rozpocz\xEAci symulacji modelu \ac{LAK} z wybranym obserwatorem lokalnym nale\xBFy za\xB3adowa\xE6 pliki opisu modelu, a nast\xEApnie prze\xB3\xB9czy\xE6 tryb obserwatora na na lokalny. W przedstawionym przyk\xB3adzie \ac{OL} umiejscowiony zosta\xB3 w kolumnie siedem. +\begin{figure}[!h] +\centering +\includegraphics[width=14cm]{chap6/ol1d} +\caption {Symulator w trybie \ac{OL}} +\label{fig:ol1d} +\end{figure} + +Rysunek \ref{fig:og1d} przedstawia prace symulatora w trybie \ac{OG}. Na rysunku \ref{fig:ol1d} przedstawiono odpowiadaj\xB9cy przebieg symulacji w trybie \ac{OL}. + % vim:fencs=cp1250:fenc=cp1250 Modified: trunk/qcell/doc/licenciate_thesis/chap6/select2.png =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-02-17 07:01:35
|
Revision: 348 http://svn.sourceforge.net/qcell/?rev=348&view=rev Author: lessm Date: 2007-02-16 23:01:25 -0800 (Fri, 16 Feb 2007) Log Message: ----------- Modified Paths: -------------- trunk/qcell/doc/licenciate_thesis/chap6/bTools.png trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex trunk/qcell/doc/licenciate_thesis/make.bat trunk/qcell/doc/licenciate_thesis/thesis.tex trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/doc/licenciate_thesis/chap6/bTools.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-17 06:16:27 UTC (rev 347) +++ trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-17 07:01:25 UTC (rev 348) @@ -1,4 +1,4 @@ -\usepackage{subfigure} +%\usepackage{subfigure} \chapterauthor{Leszek Smentek}{Obs\xB3uga programu} \label{chap:iop} @@ -271,8 +271,13 @@ \begin{figure}[htbp] \begin{center} \mbox{ - \subfigure {\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter1}}} \quad - \subfigure {\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter2}}} +% \subfigure { +\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter1}} +%} + \quad +% \subfigure { +\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter2}} +%} } \caption{Przebieg symulacji dla t=0,1} \label{fig:psdt01} @@ -282,8 +287,13 @@ \begin{figure}[htbp] \begin{center} \mbox{ - \subfigure {\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter3}}} \quad - \subfigure {\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter4}}} +% \subfigure { +\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter3}} +%} + \quad +% \subfigure { +\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter4}} +%} } \caption{Przebieg symulacji dla t=2,3} \label{fig:psdt23} @@ -352,4 +362,5 @@ Do przedstawienia poni\xBFszego eksperymentu u\xBFyto plik\xF3w "propagation1d.FQT", "propagation1d.N", "propagation1d.KI" znajduj\xB9cych si\xEA w katalogu "examples". + % vim:fencs=cp1250:fenc=cp1250 Modified: trunk/qcell/doc/licenciate_thesis/make.bat =================================================================== --- trunk/qcell/doc/licenciate_thesis/make.bat 2007-02-17 06:16:27 UTC (rev 347) +++ trunk/qcell/doc/licenciate_thesis/make.bat 2007-02-17 07:01:25 UTC (rev 348) @@ -19,7 +19,7 @@ %compile% echo Bibliography -bibtex %file +bibtex %file% echo After bibliography linking %compile% Modified: trunk/qcell/doc/licenciate_thesis/thesis.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/thesis.tex 2007-02-17 06:16:27 UTC (rev 347) +++ trunk/qcell/doc/licenciate_thesis/thesis.tex 2007-02-17 07:01:25 UTC (rev 348) @@ -24,7 +24,7 @@ % Bibliografia w zewn\xEAtrznym pliku z~Bibtexa \nocite{*} -\bibliographystyle{kupa} +\bibliographystyle{plplain} \bibliography{thesis} \appendix Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-02-17 06:16:27 UTC (rev 347) +++ trunk/qcell/visgui/MainWindow.cpp 2007-02-17 07:01:25 UTC (rev 348) @@ -23,7 +23,7 @@ setDockNestingEnabled(true); baseDock = new BetterDockWidget(this); BaseTools* basetools = new BaseTools(baseDock); - baseDock->setWindowTitle(tr("Base tools")); + baseDock->setWindowTitle(tr("Basic tools")); baseDock->setWidget(basetools); baseDock->setDisabled(true); ((QVBoxLayout*)baseDock->layout())->addStretch(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-17 06:16:29
|
Revision: 347 http://svn.sourceforge.net/qcell/?rev=347&view=rev Author: dhubleizh Date: 2007-02-16 22:16:27 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - some final quirks Modified Paths: -------------- trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex trunk/qcell/doc/licenciate_thesis/chap4/chap4.tex trunk/qcell/doc/licenciate_thesis/chap5/chap5.tex trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex trunk/qcell/doc/licenciate_thesis/style.tex Modified: trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-17 06:12:03 UTC (rev 346) +++ trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-17 06:16:27 UTC (rev 347) @@ -67,7 +67,25 @@ Zwi\xEAz\xB3\xB9, a zarazem uniwersaln\xB9, reprezentacj\xB9 \ac{FL} jest \ac{FQT}\citep{siwy, sicw}. Polega na agregowaniu \ac{RE} przy pomocy sum argument\xF3w funkcji. Argumenty, kt\xF3re nie podlegaj\xB9 procesowi totalizacji (sumowania) nazywamy {\bf argumentami wolnymi}. Szczeg\xF3\xB3y techniczne zapisu \ac{FQT} (jak i innych format\xF3w obs\xB3ugiwanych przez zaimplementowany pakiet) znajduj\xB9 si\xEA w rozdziale \ref{chap:zsz}. +W celu zobrazowania korzy\x9Cci p\xB3yn\xB9cych z procesu totalizacji zestawiono tabel\xEA \ref{tab:mrfqt}. Przyj\xEAto d\xB3ugo\x9C\xE6 ci\xB9gu s\xB9siad\xF3w r\xF3wn\xB9 pi\xEA\xE6 oraz maksymalny rozmiar pliku wynosz\xB9cy 4kB. Dla kolejnych stopni totalizacji przedstawiono maksymaln\xB9 liczno\x9C\xE6 alfabetu. +\begin{table}[!hpt] + \centering + \begin{tabular}{c|c} + Liczba ztotalizowanych\\argument\xF3w & Maksymalna wielko\x9C\xE6\\ alfabetu $|A|_{max}$ \\ + \hline\hline + 1 & 5 \\ + \hline + 2 & 6 \\ + \hline + 3 & 11 \\ + \hline + 4 & 35 + \end{tabular} + \caption{Maksymalny rozmiar alfabetu dla funkcji FQT przy $|N|=5$ oraz maksymalnym rozmiarze pliku 4kB dla r\xF3\xBFnych stopni totalizacji} + \label{tab:mrfqt} +\end{table} + Dla chwili zero m\xF3wimy o danych jako \ac{KP}. Zbi\xF3r kolejnych \ac{KB} powsta\xB3ych w wyniku przetwarzania \ac{AK} nazywamy {\bf histori\xB9 przetwarzania}. Formaty zapisu element\xF3w modelu oraz danych \ac{AK} przedstawione zosta\xB3y w rozdziale \ref{chap:zsz}. Modified: trunk/qcell/doc/licenciate_thesis/chap4/chap4.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap4/chap4.tex 2007-02-17 06:12:03 UTC (rev 346) +++ trunk/qcell/doc/licenciate_thesis/chap4/chap4.tex 2007-02-17 06:16:27 UTC (rev 347) @@ -356,7 +356,7 @@ \label{subsec:osa} Implementacja modu\xB3u obliczeniowego pozwala na s\xB9siedztwo sk\xB3adaj\xB9ce si\xEA z~maksymalnie \maxint{} s\xB9siad\xF3w, oddalonych od siebie o co najwy\xBFej \maxint{} kom\xF3rek (por. \ref{sec:zws} oraz \ref{subsec:jmo}). Wynika to ze sposobu zaimplementowania s\xB9siedztwa przy pomocy klasy \code{QVector} (maksymalna d\xB3ugo\x9C\xE6 tego wektora to \maxint{}\citep{qt4doc}) oraz wsp\xF3\xB3rz\xEAdnych okre\x9Claj\xB9cych po\xB3o\xBFenie danego s\xB9siada przy pomocy liczby ca\xB3kowitej ze znakiem (int). Jednak\xBFe spos\xF3b wczytywania s\xB9siedztwa z~pliku tekstowego nak\xB3ada ograniczenia wynikaj\xB9ce z~liczby znak\xF3w czytelnych dla u\xBFytkownika ko\xF1cowego. -Nak\xB3ad pracy wynikaj\xB9cy z przygotowania pliku \ac{N}, czy to w postaci tekstowej (por. \ref{subsubsec:fda}), czy za pomoc\xB9 narz\xEAdzi wspomagaj\xB9cych (por. \ref{subsec:rfp}) przerasta mo\xBFliwo\x9Cci u\xBFytkownika. W zwi\xB9zku z tym przyj\xEAto, i\xBF plik reprezentuj\xB9cy \ac{N} nie powinien przekroczy\xE6 rozmiaru jednego ekranu standardowego terminala (80x60 znak\xF3w), zapisany bez znak\xF3w ko\xF1ca linii. Po uwzgl\xEAdnieniu nag\xB3\xF3wka pliku N (odj\xEAciu trzech pierwszych wierszy) ograniczenia s\xB9siedztwa zebrane zosta\xB3y w tabeli \ref{tab:os}. +Nak\xB3ad pracy wynikaj\xB9cy z przygotowania pliku \ac{N} o maksymalnych udost\xEApnionych przez pakiet rozmiarach, czy to w postaci tekstowej (por. \ref{subsubsec:fda}), czy za pomoc\xB9 narz\xEAdzi wspomagaj\xB9cych (por. \ref{subsec:rfp}) przerasta mo\xBFliwo\x9Cci u\xBFytkownika. W zwi\xB9zku z tym przyj\xEAto, i\xBF plik reprezentuj\xB9cy \ac{N} nie powinien przekroczy\xE6 rozmiaru 4kB. Obliczone na podstawie powy\xBFszych za\xB3o\xBFe\xF1 ograniczenia zebrano w tabeli \ref{tab:os} \begin{table}[!hpt] \caption{Ograniczenia s\xB9siedztwa\hspace*{\textwidth}} @@ -364,7 +364,11 @@ \begin{tabular}{p{15em}|c} Liczba s\xB9siad\xF3w & \maxchar \\ \hline - Liczba kom\xF3rek & 4000 + Rozmiar s\xB9siedztwa 3D & 15 x 15 x 15 \\ + \hline + Rozmiar s\xB9siedztwa 2D & 63 x 63 \\ + \hline + Rozmiar s\xB9siedztwa 1D & 4000 \end{tabular} \label{tab:os} \end{table} @@ -372,7 +376,7 @@ \subsection{Ograniczenia funkcji lokalnej} Teoretyczne mo\xBFliwo\x9Cci modu\xB3u obliczeniowego pozwalaj\xB9 na przechowywanie funkcji sk\xB3adaj\xB9cej si\xEA z~\maxint{} (por. \ref{sec:zws} oraz \ref{subsec:jmo}) argument\xF3w, jednak\xBFe spos\xF3b wczytywania funkcji z~pliku nak\xB3ada ograniczenia wynikaj\xB9ce z~liczby znak\xF3w czytelnych dla u\xBFytkownika ko\xF1cowego. Podobnie jak w przypadku ogranicze\xF1 s\xB9siedztwa, przygotowanie \ac{FL} (u\xBFywaj\xB9c formatu \ac{FQT}) w pliku (por. \ref{subsubsec:fda}), b\xB9d\x9F przy pomocy narz\xEAdzi dostarczonych przez pakiet (por. \ref{subsec:rfp}), wykorzystuj\xB9cej maksymalne mo\xBFliwo\x9Cci modu\xB3u obliczeniowego jest nierealne. -Z uwagi na powy\xBFsze fakty przyj\xEAto, i\xBF maksymalny sensowny plik, tworzony przez u\xBFytkownika, nie powinien przekracza\xE6 jednego ekranu standardowego terminala (80x60 znak\xF3w) pomijaj\xB9c znaki ko\xF1ca linii, sekwencj\xEA rozdzielaj\xB9c\xB9 sum\xEA od warto\x9Cci (`: ') oraz odejmuj\xB9c trzy linie na nag\xB3\xF3wek (por. \ref{subsubsec:fda}). Powsta\xB3e w ten spos\xF3b ograniczenia zebrano w tabeli \ref{tab:ofl}. +Zale\xBFno\x9C\xE6 alfabetu od stopnia totalizacji funkcji zebrano w tabeli \ref{tab:mrfqt}. Pozosta\xB3e ograniczenia zebrano w tabeli \ref{tab:ofl}. \begin{table}[!hpt] \caption{Ograniczenia funkcji lokalnej\hspace*{\textwidth}} Modified: trunk/qcell/doc/licenciate_thesis/chap5/chap5.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap5/chap5.tex 2007-02-17 06:12:03 UTC (rev 346) +++ trunk/qcell/doc/licenciate_thesis/chap5/chap5.tex 2007-02-17 06:16:27 UTC (rev 347) @@ -52,4 +52,21 @@ Programy z sekcji \ref{sec:pmz} implementuj\xB9 tylko po jednym trybie wizualizowania. Zbudowany symulator oferuje 2 tryby graficzne (dla modeli \ac{TAK} i {DAK}) oraz dwa modele tekstowe (dla modeli \ac{DAK} oraz \ac{LAK}). Jedynie obrazowanie opartych na grafach \ac{AK}, oferowane przez program DDLab, nie zosta\xB3o zrealizowanie. +\subsection{Obrazy przetwarzania} +\label{subsec:obprze} +W tej sekcji umieszczone zosta\xB3y obrazy por\xF3wnawcze dla \ac{OL} i \ac{OG} modeli \ac{LAK}, \ac{DAK} i \ac{DAK} wygenerowane przez zaimplementowany pakiet programowy. Dla ka\xBFdej grupy przyk\xB3ad\xF3w podano pliki z kt\xF3rych skorzystano do przeprowadzenia prezentowanych eksperyment\xF3w. Pliki te dost\xEApne s\xB9 w katalogu examples na p\xB3ycie CD za\xB3\xB9czonej do pracy. + +\subsubsection{Obrazy modelu \acs{LAK}} + +%\begin{figure}[htbp] +% \begin{center} +% \mbox{ +% \subfigure[Honda]{\scalebox{0.3}{\includegraphics{chap5/og1d}}} \quad +% \subfigure[Toyota]{\scalebox{0.3}{\includegraphics{chap5/ol1d}}} +% } +% \caption{I like these!} +% \label{fig:my_car} +% \end{center} +%\end{figure} + % vim:fencs=cp1250:fenc=cp1250 Modified: trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-17 06:12:03 UTC (rev 346) +++ trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-17 06:16:27 UTC (rev 347) @@ -1,6 +1,5 @@ \usepackage{subfigure} - \chapterauthor{Leszek Smentek}{Obs\xB3uga programu} \label{chap:iop} \section{Interfejs programu} Modified: trunk/qcell/doc/licenciate_thesis/style.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/style.tex 2007-02-17 06:12:03 UTC (rev 346) +++ trunk/qcell/doc/licenciate_thesis/style.tex 2007-02-17 06:16:27 UTC (rev 347) @@ -4,6 +4,7 @@ % Grafika \usepackage{graphicx} +%\usepackage{subfigure} % \xAFeby mo\xBFna by\xB3o dawa\xE6 linki \usepackage{url} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-02-17 06:12:06
|
Revision: 346 http://svn.sourceforge.net/qcell/?rev=346&view=rev Author: lessm Date: 2007-02-16 22:12:03 -0800 (Fri, 16 Feb 2007) Log Message: ----------- Modified Paths: -------------- trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex Modified: trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-17 03:22:36 UTC (rev 345) +++ trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-17 06:12:03 UTC (rev 346) @@ -2,6 +2,8 @@ \label{chap:zsz} \section{Funkcje pakietu} \subsection {Podstawowe funkcje programu} +\subsubsection{Ograniczenia zestawu znak\xF3w stosowny w plikach opisu modelu} +Symulator daje mo\xBFliwo\x9C\xE6 definiowania plik\xF3w opisu w oparciu alfabet o mocy |A|=61. Ograniczenie wynika z ilo\x9Cci dost\xEApnych znak\xF3w ASCII(0-9, A-Z, a-z oraz '-'). \subsubsection {Wczytywanie opisu modelu z pliku} \label{subsec:wkp} Pakiet umo\xBFliwia wczytywanie plik\xF3w opisu modelu w formatach FQT, REAK, ZIFW, N, KI, LIF, LIFE. @@ -9,7 +11,7 @@ \subsubsection{Utrwalanie wynik\xF3w przetwarzania} Pakiet daje mo\xBFliwo\x9C\xE6 utrwalania efekt\xF3w eksperyment\xF3w w nast\xEApuj\xB9cych trybach: \begin{itemize} -\item zapis poszczeg\xF3lnych element\xF3w modelu do osobnych plik\xF3w (KI, N, FL), +\item zapis poszczeg\xF3lnych element\xF3w modelu do osobnych plik\xF3w (KI, N, FL), dost\xEApne formaty to: FQT, REAK, ZIFW, N, KI, \item zapis konfiguracji bie\xBF\xB9cej wraz z histori\xB9 przetwarzania do pojedynczego pliku, \item eksport konfiguracji do pliku LIF (obs\xB3ugiwanego przez programy: MCell, XLife i Life32). \end{itemize} @@ -69,8 +71,16 @@ \item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczno\x9C\xE6 alfabetu wej\x9Cciowego oraz liczno\x9C\xE6 alfabetu wyj\x9Cciowego, \item zbiory sterowa\xF1 dla kolejnych warto\x9Cci funkcji (my\x9Clnik oznacza warto\x9C\xE6 nieokre\x9Clon\xB9). \end{itemize} + +\item REAK - Format pliku tekstowego do opisu \ac{FL}, zawiera w kolejnych wierszach: +\begin{itemize} +\item identyfikator literowy typu funkcji, tj REAK +\item dwie liczby (separowane spacj\xB9): liczba symboli alfabetu WE/WY, liczba argument\xF3w funkcji lokalnej, +\item kolejne wiersze reprezentuj\xB9 lista regu\xB3 elementarnych, tj. (n+1)-ek: $\sigma_{1}\sigma_{2}...\sigma_{n}\sigma_{n+1}\Leftrightarrow \lambda(\sigma_{1}\sigma_{2}...\sigma_{n})=\sigma_{n+1}$ \end{itemize} +\end{itemize} + \item s\xB9siedztwo \begin{itemize} \item N~--- Plik przeznaczony do specyfikowania uk\xB3adu s\xB9siedztwa, tj. kolejno\x9Cci i po\xB3o\xBFenia s\xB9siad\xF3w kom\xF3rki. W kolejnych wierszach zawiera: Modified: trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-17 03:22:36 UTC (rev 345) +++ trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-17 06:12:03 UTC (rev 346) @@ -1,3 +1,6 @@ +\usepackage{subfigure} + + \chapterauthor{Leszek Smentek}{Obs\xB3uga programu} \label{chap:iop} \section{Interfejs programu} @@ -266,36 +269,30 @@ Po za\xB3adowaniu wszystkich plik\xF3w niezb\xEAdnych do rozpocz\xEAcia eksperymentu uaktywnia si\xEA pasek narz\xEAdzi przedstawiony na rysunku \ref{fig:psdt0} i mo\xBFliwe jest wykonywanie kolejnych krok\xF3w eksperymentu. Alternatyw\xB9 dla \xB3adowania pliku KI jest skorzystanie z kreatora konfiguracji znajduj\xB9cego si\xEA w menu "File$\rightarrow$New" i r\xEAczna edycja stworzonej \ac{KP}. -\begin{figure}[!h] -\centering -\includegraphics[width=4cm]{chap6/iter1} -\caption {Przebieg symulacji dla t=0} -\label{fig:psdt0} +\begin{figure}[htbp] + \begin{center} + \mbox{ + \subfigure {\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter1}}} \quad + \subfigure {\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter2}}} + } + \caption{Przebieg symulacji dla t=0,1} + \label{fig:psdt01} + \end{center} \end{figure} -\begin{figure}[!h] -\centering -\includegraphics[width=4cm]{chap6/iter2} -\caption {Przebieg symulacji dla t=1} -\label{fig:psdt1} +\begin{figure}[htbp] + \begin{center} + \mbox{ + \subfigure {\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter3}}} \quad + \subfigure {\scalebox{0.5}{\includegraphics[width=14cm]{chap6/iter4}}} + } + \caption{Przebieg symulacji dla t=2,3} + \label{fig:psdt23} + \end{center} \end{figure} -\begin{figure}[!h] -\centering -\includegraphics[width=4cm]{chap6/iter3} -\caption {Przebieg symulacji dla t=2} -\label{fig:psdt2} -\end{figure} +Rysunki \ref{fig:psdt01} - \ref{fig:psdt23} przedstawiaj\xB9 kolejne kroki symulacji z u\xBFyciem \ac{KP} zawartej w pliku "basic3Dexperiment.KI". Na podstawie analizy przebiegu symulacji widoczny obiekt mo\xBFna zaklasyfikowa\xE6 jako ,,\xB3azik''. -\begin{figure}[!h] -\centering -\includegraphics[width=4cm]{chap6/iter4} -\caption {Przebieg symulacji dla t=3} -\label{fig:psdt3} -\end{figure} - -Rysunki \ref{fig:psdt0} - \ref{fig:psdt4} przedstawiaj\xB9 kolejne kroki symulacji z u\xBFyciem \ac{KP} zawartej w pliku "basic3Dexperiment.KI". Na podstawie analizy przebiegu symulacji widoczny obiekt mo\xBFna zaklasyfikowa\xE6 jako ,,\xB3azik''. - \subsection{Eksperyment dynamicznego dobierania modelu obliczeniowego} Poni\xBFszy przyk\xB3ad obrazuje spos\xF3b dynamicznego doboru modelu obliczeniowego. Zadaniem docelowym jest okre\x9Clenie modelu umo\xBFliwiaj\xB9cego obrazowanie kolizji sygna\xB3\xF3w w przestrzeni 1D. Zak\xB3adamy, \xBFe sygna\xB3y poruszaj\xB9 si\xEA z pr\xEAdko\x9Cci\xB9 $V=1$ w przeciwnych kierunkach oraz po kolizji pr\xEAdko\x9C\xE6 i kierunek sygna\xB3\xF3w ma pozosta\xE6 bez zmian. Do przedstawienia kolizji niezb\xEAdny jest alfabet o czterech symbolach oraz s\xB9siedztwo tr\xF3jelementowe. W poni\xBFszym przyk\xB3adzie u\xBFyto plik\xF3w: "dynamicmodelexample.FQT", "dynamicmodelexample.N". Do stworzenia \ac{KP} u\xBFyto kreatora \ac{KP}. @@ -350,4 +347,10 @@ Rysunek \ref{fig:wpak} przedstawia przebieg eksperymentu dla dobranego modelu. Widok poddany zosta\xB3 interpretacji z u\xBFyciem znak\xF3w graficznych w celu osi\xB9gni\xEAcia przejrzysto\x9Cci wynik\xF3w symulacji. +\subsection{Eksperyment z u\xBFyciem \ac{OL}} +\label{subsec:propobj} + +Do przedstawienia poni\xBFszego eksperymentu u\xBFyto plik\xF3w "propagation1d.FQT", "propagation1d.N", "propagation1d.KI" znajduj\xB9cych si\xEA w katalogu "examples". + + % vim:fencs=cp1250:fenc=cp1250 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-02-17 03:22:37
|
Revision: 345 http://svn.sourceforge.net/qcell/?rev=345&view=rev Author: lessm Date: 2007-02-16 19:22:36 -0800 (Fri, 16 Feb 2007) Log Message: ----------- Modified Paths: -------------- trunk/qcell/baseheaders/Renderer.h trunk/qcell/baseheaders/simulationwindow.h trunk/qcell/basesources/Renderer.cpp trunk/qcell/basesources/simulationwindow.cpp trunk/qcell/bin/examples/dynamicmodelexample.FQT trunk/qcell/bin/observer.png trunk/qcell/doc/licenciate_thesis/chap2/Thumbs.db trunk/qcell/doc/licenciate_thesis/chap6/NTools.png trunk/qcell/doc/licenciate_thesis/chap6/iter1.png trunk/qcell/doc/licenciate_thesis/chap6/iter2.png trunk/qcell/doc/licenciate_thesis/chap6/iter3.png trunk/qcell/doc/licenciate_thesis/chap6/iter4.png trunk/qcell/doc/licenciate_thesis/chap6/mainwindow.png trunk/qcell/doc/licenciate_thesis/chap6/observer.png trunk/qcell/doc/licenciate_thesis/chap6/step.png trunk/qcell/parsers/N/NParserPlugin.cpp trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/baseheaders/Renderer.h =================================================================== --- trunk/qcell/baseheaders/Renderer.h 2007-02-17 03:19:21 UTC (rev 344) +++ trunk/qcell/baseheaders/Renderer.h 2007-02-17 03:22:36 UTC (rev 345) @@ -69,7 +69,9 @@ QVector<int> maskValue; bool showValues; - const char** texture; + //QString texture; + //const char** texture; + QPixmap texture; bool force2D; Modified: trunk/qcell/baseheaders/simulationwindow.h =================================================================== --- trunk/qcell/baseheaders/simulationwindow.h 2007-02-17 03:19:21 UTC (rev 344) +++ trunk/qcell/baseheaders/simulationwindow.h 2007-02-17 03:22:36 UTC (rev 345) @@ -170,6 +170,8 @@ void clearView(); int getLocalObserversHistoryCount(); CalculationData* getLocalObserversCD(int iteration); + void setLocalObserverMem(QList<CalculationData *> cdList); + void forceLOdataReset(void); public slots: void NViewModeChange(int mode); Modified: trunk/qcell/basesources/Renderer.cpp =================================================================== --- trunk/qcell/basesources/Renderer.cpp 2007-02-17 03:19:21 UTC (rev 344) +++ trunk/qcell/basesources/Renderer.cpp 2007-02-17 03:22:36 UTC (rev 345) @@ -138,7 +138,10 @@ { glEnable(GL_TEXTURE_2D); observerTexture = bindTexture(texture, GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); +// glGenTextures(1, &observerTexture); +// glBindTexture(GL_TEXTURE_2D, observerTexture); +// gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 256, 256, GL_RGB, GL_BYTE, texture); +// glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); @@ -655,13 +658,14 @@ glDisable(GL_DEPTH_TEST); glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); + //glEnable(GL_BLEND); glDisable(GL_LIGHTING); glEnable(GL_TEXTURE_2D); + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glCallList(observer); glDisable(GL_TEXTURE_2D); glEnable(GL_LIGHTING); - glDisable(GL_BLEND); + //glDisable(GL_BLEND); glEnable(GL_DEPTH_TEST); glPopMatrix(); } @@ -865,8 +869,8 @@ void Renderer::setTexture(const char *xpm[]) { -// texture = QPixmap(xpm); - texture = xpm; + texture = QPixmap(xpm); +// texture = xpm; } void Renderer::setOrtoPerspective(bool noClear) Modified: trunk/qcell/basesources/simulationwindow.cpp =================================================================== --- trunk/qcell/basesources/simulationwindow.cpp 2007-02-17 03:19:21 UTC (rev 344) +++ trunk/qcell/basesources/simulationwindow.cpp 2007-02-17 03:22:36 UTC (rev 345) @@ -662,7 +662,7 @@ ui.view3D->setLayout(new QVBoxLayout(ui.view3D)); renderer = new Renderer(ui.view3D); - renderer->setTexture((const char**)observer_xpm); + renderer->setTexture((const char **)observer_xpm); ui.view3D->layout()->addWidget(renderer); // Not needed anymore // renderer->resize(ui.view3D->width(), ui.view3D->height()); @@ -1707,4 +1707,25 @@ return &loclaViewMemory[iteration]; } +void simulationWindow::setLocalObserverMem(QList<CalculationData *> cdList) +{ + if(cdList.size()>loclaViewMemory.size()) + { + for(int i=0;i<loclaViewMemory.size();++i) + loclaViewMemory[loclaViewMemory.size() - 1 - i] = *(cdList[cdList.size()-1 - i]); + usedSpace = loclaViewMemory.size(); + cycleTable = loclaViewMemory.size()-1; + } + else + { + + } +} + +void simulationWindow::forceLOdataReset(void) +{ + usedSpace = 0; + localView = *getStorage(); + cycleTable = 0; +} Modified: trunk/qcell/bin/examples/dynamicmodelexample.FQT =================================================================== --- trunk/qcell/bin/examples/dynamicmodelexample.FQT 2007-02-17 03:19:21 UTC (rev 344) +++ trunk/qcell/bin/examples/dynamicmodelexample.FQT 2007-02-17 03:22:36 UTC (rev 345) @@ -1,4 +1,4 @@ FQT 3 4 4 1 - +0: ---------------- Modified: trunk/qcell/bin/observer.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap2/Thumbs.db =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/NTools.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/iter1.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/iter2.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/iter3.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/iter4.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/mainwindow.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/observer.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/step.png =================================================================== (Binary files differ) Modified: trunk/qcell/parsers/N/NParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/N/NParserPlugin.cpp 2007-02-17 03:19:21 UTC (rev 344) +++ trunk/qcell/parsers/N/NParserPlugin.cpp 2007-02-17 03:22:36 UTC (rev 345) @@ -15,8 +15,6 @@ QString NParserPlugin::realParser(const QByteArray content, const QString type, const QString subtype) { - QString costam(content); - qDebug() << content; QStringList result; // Used to doublecheck the format of a line in file QRegExp format; Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-02-17 03:19:21 UTC (rev 344) +++ trunk/qcell/visgui/MainWindow.cpp 2007-02-17 03:22:36 UTC (rev 345) @@ -448,6 +448,7 @@ if(!fd.selectedFiles().isEmpty()) { callParser(fd.selectedFiles().first(), "World"); + sw->forceLOdataReset(); } } @@ -828,6 +829,7 @@ iteration--; calc = *(data[iteration]); data.removeLast(); + // sw->setLocalObserverMem(data); sw->back1DTable(); } @@ -1216,6 +1218,7 @@ // Do the actual serializing deserialize(file.readAll()); + sw->forceLOdataReset(); file.close(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-17 03:19:23
|
Revision: 344 http://svn.sourceforge.net/qcell/?rev=344&view=rev Author: dhubleizh Date: 2007-02-16 19:19:21 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - a loooot of fixes Modified Paths: -------------- trunk/qcell/doc/licenciate_thesis/acronyms.gdf trunk/qcell/doc/licenciate_thesis/chap1/chap1.tex trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex trunk/qcell/doc/licenciate_thesis/chap4/chap4.tex trunk/qcell/doc/licenciate_thesis/chap5/chap5.tex trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex trunk/qcell/doc/licenciate_thesis/chap7/chap7.tex trunk/qcell/doc/licenciate_thesis/titlepage.tex Modified: trunk/qcell/doc/licenciate_thesis/acronyms.gdf =================================================================== --- trunk/qcell/doc/licenciate_thesis/acronyms.gdf 2007-02-17 02:04:27 UTC (rev 343) +++ trunk/qcell/doc/licenciate_thesis/acronyms.gdf 2007-02-17 03:19:21 UTC (rev 344) @@ -11,7 +11,7 @@ @entry{KP, KP, Konfiguracja Pocz\xB9tkowa} @entry{LAK, LAK, Liniowy Automat Kom\xF3rkowy} Inaczej jednowymiarowy \glxref{AK}. @entry{MVC, MVC, Model View Controller} Wzorzec programistyczny charakteryzuj\xB9cy si\xEA rozdzieleniem komponent\xF3w aplikacji, tj. modelu danych, interfejsu u\xBFytkownika i logiki sterowania w taki spos\xF3b, aby modyfikacje jednego komponentu minimalnie wp\xB3ywa\xB3y na pozosta\xB3e. -@entry{N, N, s\xB9siedztwo} +@entry{N, N, s\xB9siedztwo} ang. \emph{Neighbourhood} @entry{NP, NP, Nondeterministic Polynomia} @entry{OG, OG, Obserwator Globalny} @entry{OL, OL, Obserwator Lokalny} @@ -21,5 +21,6 @@ @entry{TAK, TAK, Tr\xF3jwymiarowy Automat Kom\xF3rkowy} @entry{TUG, TUG, \TeX{} User Group} Grupy u\xBFytkownik\xF3w systemu \TeX{}.\\\url{http://www.tug.org/} @entry{XML, XML, eXtensive Markup Language} Uniwersalny j\xEAzyk formalny przeznaczony do reprezentowania r\xF3\xBFnych danych w ustrukturalizowany spos\xF3b. +@entry{LPM, LPM, Lewy Przycisk Myszy} % vim:fencs=cp1250:fenc=cp1250 Modified: trunk/qcell/doc/licenciate_thesis/chap1/chap1.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap1/chap1.tex 2007-02-17 02:04:27 UTC (rev 343) +++ trunk/qcell/doc/licenciate_thesis/chap1/chap1.tex 2007-02-17 03:19:21 UTC (rev 344) @@ -3,29 +3,30 @@ \section{Cel i~zakres pracy} Celem niniejszej pracy jest zbudowanie \x9Crodowiska do efektywnego przeprowadzania symulacji jedno-, dwu- oraz tr\xF3jwymiarowych \ac{AK}. Zakres pracy obejmuje opracowanie tekstowe oraz pakiet programowy. -W pierwszej kolejno\x9Cci przywo\xB3ana zosta\xB3a definicja automatu kom\xF3rkowego (por. \ref{subsec:dak}). W rozdziale \ref{subsec:mak} przedstawiono mechanizm przetwarzania kom\xF3rkowego, natomiast w~\ref{subsec:wiz} metody jego wizualizowania. Punkt \ref{subsubsec:oli} przybli\xBFa now\xB9 koncepcj\xEA obserwatora lokalnego oraz jej wp\xB3yw na obrazy przetwarzania. +W pierwszej kolejno\x9Cci przywo\xB3ana zosta\xB3a definicja automatu kom\xF3rkowego (por. \ref{subsec:dak}). W rozdziale \ref{subsec:mak} przedstawiono mechanizm przetwarzania kom\xF3rkowego, natomiast w~\ref{subsec:wiz} metody jego wizualizowania. Punkt \ref{subsubsec:oli} przybli\xBFa now\xB9 koncepcj\xEA obserwatora lokalnego oraz jej wp\xB3yw na obrazy przetwarzania\citep{siim,siwy}. Na podstawie analizy funkcji symulatora \ac{AK} z rozdzia\xB3u \ref{sec:syn} zaimplementowano pakiet programowy. Za\xB3o\xBFenia szczeg\xF3\xB3owe tego pakietu znajduj\xB9 si\xEA w rozdziale \ref{chap:zsz}, natomiast szczeg\xF3\xB3y implementacyjne w \ref{chap:imp}. Ocenie dzia\xB3ania powsta\xB3ego symulatora po\x9Cwi\xEAcony zosta\xB3 punkt \ref{chap:tes}. Do programu do\xB3\xB9czono instrukcj\xEA obs\xB3ugi umieszczon\xB9 w rozdziale \ref{chap:iop}. \section{Uzasadnienie tematu} \label{sec:ute} -Implementowanie symulator\xF3w jest integraln\xB9 cz\xEA\x9Cci\xB9 procesu formu\xB3owania i~dowodzenia nowych teorii. Gdy zdefiniowanie og\xF3lnego modelu opisuj\xB9cego badane zachowanie jest niemo\xBFliwe, przeprowadzenie i~przeanalizowanie pewnej liczby symulacji mo\xBFe prowadzi\xE6 do wyizolowania czynnik\xF3w wp\xB3ywaj\xB9cych na dany proces. W~konsekwencji tworzona jest robocza teoria, kt\xF3r\xB9 nast\xEApnie mo\xBFna pr\xF3bowa\xE6 udoskonala\xE6 lub potwierdzi\xE6 przy pomocy kolejnych eksperyment\xF3w. +Implementowanie symulator\xF3w jest integraln\xB9 cz\xEA\x9Cci\xB9 procesu formu\xB3owania i~dowodzenia nowych teorii. Gdy zdefiniowanie og\xF3lnego modelu opisuj\xB9cego badane zachowanie jest niemo\xBFliwe, przeprowadzenie i~przeanalizowanie pewnej liczby symulacji mo\xBFe prowadzi\xE6 do wyizolowania czynnik\xF3w wp\xB3ywaj\xB9cych na dany proces. W~konsekwencji tworzona jest hipoteza, kt\xF3r\xB9 nast\xEApnie mo\xBFna pr\xF3bowa\xE6 udoskonala\xE6 lub potwierdzi\xE6 przy pomocy kolejnych eksperyment\xF3w. -Dziedzin\xB9 w kt\xF3rej mo\xBFna wykorzysta\xE6 komputerowe symulowanie jest \ac{DSZ}. \ac{AK} jest modelem \ac{DSZ}. Zbudowanie odpowiedniego narz\xEAdzia do przeprowadzania eksperyment\xF3w na modelach kom\xF3rkowych jest celowe ze wzgl\xEAdu na wk\xB3ad w badanie samej dziedziny \ac{AK} jak i w szerszej perspektywie \ac{DSZ}. Ponadto symulatory \ac{AK} maj\xB9 swoje praktyczne zastosowania, jak modelowanie aglomeracji miejskich~--- \x9Cledzenie rozmieszczenia mieszka\xF1c\xF3w i korelowanie z przest\xEApstwami, wizualizowanie proces\xF3w biologicznych, jak np. erozja ko\x9Cci, symulowanie zachowania gaz\xF3w, czy rozprzestrzeniania si\xEA po\xBFar\xF3w las\xF3w\citep{aica}. +Dziedzin\xB9, w kt\xF3rej mo\xBFna wykorzysta\xE6 komputerowe symulowanie s\xB9 \ac{DSZ}. \ac{AK} jest modelem \ac{DSZ}. Zbudowanie odpowiedniego narz\xEAdzia do przeprowadzania eksperyment\xF3w na modelach kom\xF3rkowych jest celowe ze wzgl\xEAdu na wk\xB3ad w badanie samej dziedziny \ac{AK}, jak i w szerszej perspektywie \ac{DSZ}. Ponadto symulatory \ac{AK} maj\xB9 swoje praktyczne zastosowania, takie jak modelowanie aglomeracji miejskich (\x9Cledzenie rozmieszczenia mieszka\xF1c\xF3w i korelowanie z przest\xEApstwami), wizualizowanie proces\xF3w biologicznych (np. erozja ko\x9Cci), symulowanie zachowania gaz\xF3w czy rozprzestrzeniania si\xEA po\xBFar\xF3w las\xF3w\citep{aica}. -Powy\xBFsze rozumowanie doprowadzi\xB3o do stworzenia pewnej liczby symulator\xF3w. Skupi\xB3y si\xEA one jednak g\xB3\xF3wnie na zaprezentowaniu samej idei \ac{AK}, b\xB9d\x9F na przedstawieniu wybranego, zwykle bardzo w\xB9skiego, zakresu ich dzia\xB3ania. W~literaturze oraz w~internecie nie pojawi\xB3a si\xEA dotychczas inicjatywa opracowania i~zaimplementowania systemu pozwalaj\xB9cego bezpo\x9Crednio por\xF3wnywa\xE6 r\xF3\xBFne typy i modele \ac{AK}. +Powy\xBFsze rozumowanie doprowadzi\xB3o do stworzenia pewnej liczby symulator\xF3w. Skupi\xB3y si\xEA one jednak g\xB3\xF3wnie na zaprezentowaniu samej idei \ac{AK}, b\xB9d\x9F na przedstawieniu wybranego, zwykle bardzo w\xB9skiego, zakresu ich dzia\xB3ania. W~literaturze oraz w~internecie inicjatywa opracowania i~zaimplementowania systemu pozwalaj\xB9cego bezpo\x9Crednio por\xF3wnywa\xE6 r\xF3\xBFne typy i modele \ac{AK} pojawi\xB3a si\xEA w ograniczonym zakresie. + Dzisiejsze systemy komputerowe pozwalaj\xB9 na prowadzenie skomplikowanych oblicze\xF1 w~kr\xF3tkim czasie. Szczeg\xF3lnie na polu tr\xF3jwymiarowej grafiki komputerowej ostatnie lata pe\xB3ne by\xB3y innowacji wielokrotnie zwi\xEAkszaj\xB9cych mo\xBFliwo\x9Cci zwyk\xB3ych komputer\xF3w osobistych. Jest to idealne pod\xB3o\xBFe do pr\xF3by stworzenia symulatora \ac{AK} wykorzystuj\xB9cego mo\xBFliwo\x9Cci sprz\xEAtowe do zaprezentowania nowej jako\x9Cci wizualizacji tr\xF3jwymiarowych proces\xF3w kom\xF3rkowych. Punktem wyj\x9Ccia do podj\xEAcia tematu by\xB3y zaj\xEAcia z przedmiotu ,,Modele system\xF3w dyskretnych'' prowadzone przez dr Paw\xB3a Siwaka\citep{siwy,sicw}. Zosta\xB3y tam wprowadzone i przedstawione kluczowe poj\xEAcia stwarzaj\xB9ce mo\xBFliwo\x9Cci realizacji symulatora modeli kom\xF3rkowych ze znacznymi ulepszeniami funkcjonalnymi, w stosunku do symulator\xF3w znanych z literatury. Do poj\xEA\xE6 tych nale\xBF\xB9: \begin{itemize} - \item idea obserwatora lokalnego i obraz\xF3w dla r\xF3\xBFnych maksymalnych pr\xEAdko\x9Cci propagacji sygna\xB3u $c$ - \item idea cz\xEA\x9Cciowej totalizacji funkcji (funkcje quasi- i wielototalistyczne) - \item rozr\xF3\xBFnienie diagram\xF3w ST i TS - \item parametr przesuni\xEAcia $q$ na diagramach 1-D - \item zasada oddzielania alfabetu symboli (stany kom\xF3rek) od atrybut\xF3w ich wizualizacji znakowej i graficznej (st\xB9d interpretacja symboli w przetwarzancyh konfiguracjach) - \item poj\xEAcie regu\xB3y elementarnej (RE), 5 poziom\xF3w oblicze\xF1 w modelach AK oraz wyznaczanie regu\xB3 modelu LAK metod\xB9 przeszukiwania z nawrotami - \item standaryzacja opis\xF3w s\xB9siedztwa i funkcji lokalnych w plikach (formaty: N1, N2, N3 oraz FQT, FMT) - \item idea symbolu zast\xEApczego dla funkcji i konfiguracji nie w pe\xB3ni okre\x9Clonych + \item idea obserwatora lokalnego i obraz\xF3w dla r\xF3\xBFnych maksymalnych pr\xEAdko\x9Cci propagacji sygna\xB3u $c$, + \item idea cz\xEA\x9Cciowej totalizacji funkcji (funkcje quasi- i wielototalistyczne), + \item rozr\xF3\xBFnienie diagram\xF3w ST i TS, + \item parametr przesuni\xEAcia $q$ na diagramach 1-D, + \item zasada oddzielania alfabetu symboli (stany kom\xF3rek) od atrybut\xF3w ich wizualizacji znakowej i graficznej (st\xB9d interpretacja symboli w przetwarzancyh konfiguracjach), + \item poj\xEAcie regu\xB3y elementarnej (RE), 5 poziom\xF3w oblicze\xF1 w modelach AK oraz wyznaczanie regu\xB3 modelu \ac{LAK} metod\xB9 przeszukiwania z nawrotami, + \item standaryzacja opis\xF3w s\xB9siedztwa i funkcji lokalnych w plikach (formaty: N1, N2, N3 oraz FQT, FMT), + \item idea symbolu zast\xEApczego dla funkcji i konfiguracji nie w pe\xB3ni okre\x9Clonych. \end{itemize} \section{Podzia\xB3 zada\xF1 szczeg\xF3\xB3owych} @@ -42,22 +43,22 @@ Jest to implementacyjna cz\xEA\x9C\xE6 pracy. Polega na zaprojektowaniu \ac{GUI} pozwalaj\xB9cego w prosty i~czytelny spos\xF3b sterowa\xE6 przetwarzaniem \ac{AK}. Nale\xBFy r\xF3wnie\xBF zaimplementowa\xE6 metody doboru modelu. \subsubsection{Opracowanie i~wdro\xBFenie \x9Crodk\xF3w intensyfikacji eksperyment\xF3w} -Przez \x9Crodki intensyfikacji eksperyment\xF3w rozumiane s\xB9 dodatkowe narz\xEAdzia i~tryby wspomagaj\xB9ce zmiany w~modelu, b\xB9d\x9F danych, na bie\xBF\xB9co. Zadanie polega na ich zaprojektowaniu i zaimplementowaniu w budowanym pakiecie programowym (por. \ref{subsubsec:ddm}). +Przez \x9Crodki intensyfikacji eksperyment\xF3w rozumiane s\xB9 dodatkowe narz\xEAdzia i~tryby wspomagaj\xB9ce zmiany na bie\xBF\xB9co w modelu lub danych. Zadanie polega na ich zaprojektowaniu i zaimplementowaniu w budowanym pakiecie programowym (por. \ref{subsubsec:ddm}). \subsubsection{Testy programu} -Przeprowadzone zostan\xB9 dwie fazy test\xF3w. W~pierwszej fazie pakiet przetestowany zostanie pod wzgl\xEAdem poprawno\x9Cci prowadzonych oblicze\xF1 oraz zgodno\x9Cci z~ustalon\xB9 wcze\x9Cniej list\xB9 funkcji(por. \ref{sec:syn} oraz \ref{sec:pob}). W drugiej fazie pakiet zostanie oceniony pod wzgl\xEAdem wizualizacji na tle istniej\xB9cych rozwi\xB9za\xF1 oraz poddany testom ergonomii u\xBFytkowania (por. \ref{subsec:owp} oraz \ref{sec:eu\xBF}). +Przeprowadzone zostan\xB9 dwie fazy test\xF3w. W~pierwszej fazie pakiet przetestowany zostanie pod wzgl\xEAdem poprawno\x9Cci prowadzonych oblicze\xF1 oraz zgodno\x9Cci z~ustalon\xB9 wcze\x9Cniej list\xB9 funkcji (por. \ref{sec:syn} oraz \ref{sec:pob}). W drugiej fazie pakiet zostanie oceniony pod wzgl\xEAdem wizualizacji na tle istniej\xB9cych rozwi\xB9za\xF1 oraz poddany testom ergonomii u\xBFytkowania (por. \ref{subsec:owp} oraz \ref{sec:eu\xBF}). \subsectionauthor{Leszek Smentek}{Zadania szczeg\xF3\xB3owe - cz\xEA\x9C\xE6 druga} \label{subsec:lsm} \subsubsection {Symulator modelu \acs{AK}} -Zadanie ma na celu opracowanie i implementacje symulatora umo\xBFliwiaj\xB9cego prowadzenie poprawnej symulacji zgodnie z dobranym modelem oblicze\xF1. +Zadanie ma na celu opracowanie i implementacj\xEA symulatora umo\xBFliwiaj\xB9cego prowadzenie poprawnej symulacji zgodnie z dobranym modelem oblicze\xF1. \subsubsection {\x8Crodki doboru danych} Przez \x9Crodki doboru danych rozumiany jest zestaw narz\xEAdzi pakietu pozwalaj\xB9cych na swobodn\xB9 generacj\xEA danych eksperymentu oraz podstawowe mo\xBFliwo\x9Cci edycji. \subsubsection {Wizualizacja i tryby eksperyment\xF3w dla r\xF3\xBFnych obserwator\xF3w} -To zadanie szczeg\xF3\xB3owe ma na celu implementacje efektywnej i czytelnej metody wizualizacji przebiegu przetwarzania zar\xF3wno dla obserwatora globalnego, jak i trybu obserwatora lokalnego. +Zadanie szczeg\xF3\xB3owe ma na celu implementacje efektywnej i czytelnej metody wizualizacji przebiegu przetwarzania zar\xF3wno dla obserwatora globalnego, jak i trybu obserwatora lokalnego. \subsubsection {Opracowanie i wdro\xBFenie \x9Crodk\xF3w dokumentowania eksperyment\xF3w} Powy\xBFsze zadanie szczeg\xF3\xB3owe ma na celu opracowanie metod dokumentowania eksperyment\xF3w umo\xBFliwiaj\xB9cych prezentacje wynik\xF3w symulacji niezale\xBFnie od pakietu. Modified: trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-17 02:04:27 UTC (rev 343) +++ trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-17 03:19:21 UTC (rev 344) @@ -17,7 +17,7 @@ \begin{trivlist} \item $\alpha$~--- zbi\xF3r jednakowych kom\xF3rek -\item $S$~--- sko\xF1czony zbi\xF3r stan\xF3w, jaki mo\xBFe przyj\xB9\xE6 kom\xF3rka (inaczej zbi\xF3r symboli alfabetu) +\item $S$~--- sko\xF1czony zbi\xF3r stan\xF3w, jakie mo\xBFe przyj\xB9\xE6 kom\xF3rka (inaczej zbi\xF3r symboli alfabetu) \item $N$~--- sko\xF1czony ci\xB9g s\xB9siad\xF3w \item $f$~--- \ac{FL} definiuj\xB9ca zmian\xEA stan\xF3w na podstawie stanu s\xB9siedztwa $sN$ oraz stanu bie\xBF\xB9cej kom\xF3rki $c$ \end{trivlist} @@ -28,7 +28,7 @@ Wzajemne rozmieszczenie kom\xF3rek ze zbioru $\alpha$ wzgl\xEAdem siebie w przestrzeni jedno- lub wielowymiarowej wraz z przypisaniem ka\xBFdej kom\xF3rce stanu ze zbioru $S$ nazywamy {\bf konfiguracj\xB9 (lub stanem \ac{AK})}. Dla kompletno\x9Cci definicji konfiguracji kom\xF3rek nale\xBFy okre\x9Cli\xE6 r\xF3wnie\xBF {\bf warunki brzegowe}, tzn. jak okre\x9Cleni s\xB9 s\xB9siedzi dla kom\xF3rek na kraw\xEAdzi definiowanej przestrzeni\citep{siwy}. -Przekszta\xB3cenie aktualnego stanu \ac{AK}, {\bf tj. \ac{KB}}, w stan kolejny, {\bf tj. \ac{KN}}, stosuj\xB9c \ac{FL} dla ka\xBFdej kom\xF3rki $\alpha$ jednocze\x9Cnie nazywamy {\bf iteracj\xB9}\citep{si13,siwy}. +Przekszta\xB3cenie aktualnego stanu \ac{AK}, tj. {\bf \ac{KB}}, w stan kolejny, tj. {\bf \ac{KN}}, stosuj\xB9c \ac{FL} dla ka\xBFdej kom\xF3rki $\alpha$ jednocze\x9Cnie nazywamy {\bf iteracj\xB9}\citep{si13,siwy}. Par\xEA w postaci uporz\xB9dkowanego ci\xB9gu stan\xF3w s\xB9siad\xF3w oraz stanu nast\xEApnego kom\xF3rki jaki ten stan implikuje przez \ac{FL} nazywamy {\bf \ac{RE}}\citep{siit}. @@ -36,9 +36,9 @@ \subsection{Sieciowa interpretacja automatu kom\xF3rkowego} \label{subsec:siak} -O {\bf sieciowym \ac{AK}} m\xF3wimy wtedy, gdy kom\xF3rki wchodz\xB9ce w sk\xB3ad konfiguracji s\xB9 automatami Moore'a, a stan kom\xF3rki odzwierciedla stan wewn\xEAtrzny tego\xBF automatu. W przypadku \ac{DAK} s\xB9siedztwo w automacie sieciowym jest von Neumana\\($c_{x-1, y}, c_{x, y+1}, c_{x+1, y}, c_{x, y-1}$)\citep{siwy}. +O {\bf sieciowym \ac{AK}} m\xF3wimy wtedy, gdy kom\xF3rki wchodz\xB9ce w sk\xB3ad konfiguracji s\xB9 automatami Moore'a, a stan kom\xF3rki odzwierciedla stan wewn\xEAtrzny tego\xBF automatu. W przypadku \ac{DAK} s\xB9siedztwo w automacie sieciowym jest s\xB9siedztwem von Neumana\\($c_{x-1, y}, c_{x, y+1}, c_{x+1, y}, c_{x, y-1}$)\citep{siwy}. -Rozszerzeniem powy\xBFszej koncepcji s\xB9 automaty oparte na grafach. Wierzcho\xB3ki grafu reprezentuj\xB9 kom\xF3rki wchodz\xB9ce w sk\xB3ad \ac{AK}, natomiast kraw\xEAdzie grafu definiuj\xB9 s\xB9siedztwo\citep{siwy}. +Rozszerzeniem powy\xBFszej koncepcji s\xB9 automaty oparte na grafach. Wierzcho\xB3ki grafu reprezentuj\xB9 kom\xF3rki wchodz\xB9ce w sk\xB3ad \ac{AK}, natomiast kraw\xEAdzie grafu odzwierciedlaj\xB9 s\xB9siedztwo\citep{siwy}. \subsection{Elementy sk\xB3adowe automatu kom\xF3rkowego} \label{subsec:eak} @@ -68,7 +68,7 @@ Zwi\xEAz\xB3\xB9, a zarazem uniwersaln\xB9, reprezentacj\xB9 \ac{FL} jest \ac{FQT}\citep{siwy, sicw}. Polega na agregowaniu \ac{RE} przy pomocy sum argument\xF3w funkcji. Argumenty, kt\xF3re nie podlegaj\xB9 procesowi totalizacji (sumowania) nazywamy {\bf argumentami wolnymi}. Szczeg\xF3\xB3y techniczne zapisu \ac{FQT} (jak i innych format\xF3w obs\xB3ugiwanych przez zaimplementowany pakiet) znajduj\xB9 si\xEA w rozdziale \ref{chap:zsz}. -Konfiguracj\xB9 \ac{AK} nazywamy zbi\xF3r kom\xF3rek o okre\x9Clonym stanie oraz wzajemnym po\xB3o\xBFeniu wzgl\xEAdem siebie. Dla chwili zero m\xF3wimy o danych jako \ac{KP}. Zbi\xF3r kolejnych \ac{KB} powsta\xB3ych w wyniku przetwarzania \ac{AK} nazywamy {\bf histori\xB9 przetwarzania}. +Dla chwili zero m\xF3wimy o danych jako \ac{KP}. Zbi\xF3r kolejnych \ac{KB} powsta\xB3ych w wyniku przetwarzania \ac{AK} nazywamy {\bf histori\xB9 przetwarzania}. Formaty zapisu element\xF3w modelu oraz danych \ac{AK} przedstawione zosta\xB3y w rozdziale \ref{chap:zsz}. @@ -77,7 +77,6 @@ Aby przekszta\xB3ci\xE6 \ac{KN} w \ac{KB} symulator musi wyliczy\xE6 nowy stan ka\xBFdej kom\xF3rki. W tym celu dla ka\xBFdej z nich okre\x9Clana jest warto\x9C\xE6 \ac{FL} na podstawie stanu s\xB9siad\xF3w okre\x9Clonych przez \ac{N}. Kolejno\x9C\xE6 przetwarzania odbywa si\xEA od \x9Cciany najbli\xBFszej obserwatorowi (w przypadku \ac{TAK}), kolejnymi wierszami (dla \ac{DAK}) i od lewej do prawej (w \ac{LAK}). -Szczeg\xF3lnym przypadkiem przetwarzania jest sytuacja, gdy s\xB9siedztwo rozpatrywanej kom\xF3rki wykracza poza zdefiniowan\xB9 przestrze\xF1 \ac{KB}. Je\xBFeli warunki brzegowe nie definiuj\xB9 s\xB9siedztwa kom\xF3rek po\xB3o\xBFonych na kraw\xEAdziach (por. \ref{subsec:dak}), zak\xB3ada si\xEA, i\xBF warto\x9C\xE6 argument\xF3w z poza zdefiniowanej przestrzeni wynosi zero. W przeciwnym wypadku stany s\xB9siad\xF3w pobierane s\xB9 zgodnie z regu\xB3ami okre\x9Clonymi przez warunki brzegowe. W celu identyfikowania konkretnej konfiguracji z historii przetwarzania (por. \ref{subsec:eak}) symulator wykorzystuje tzw. {\bf licznik krok\xF3w iteracji}, kt\xF3ry rejestruje liczb\xEA dotychczasowych przetworze\xF1. @@ -92,7 +91,7 @@ Wspomaganie definiowania \ac{FL} jest bezpo\x9Crednio powi\xB9zane z~wykorzystywanym formatem. To prowadzi do potrzeby implementowania osobnej procedury pomocniczej dla ka\xBFdego obs\xB3ugiwanego sposobu okre\x9Clania funkcji. Wymagana jest mo\xBFliwo\x9C\xE6 niepe\xB3nego okre\x9Clenia funkcji poprzez jawne zadeklarowanie \ac{SN}. Symulator powinien akceptowa\xE6 takie symbole i~zaznacza\xE6 je w~wyra\x9Fny spos\xF3b celem ewentualnego p\xF3\x9Fniejszego uszczeg\xF3\xB3owienia. -Pakiet nie musi wymaga\xE6 konkretyzowania \ac{SN}. W takim przypadku wynik \ac{FL} dla s\xB9siedztwa zawieraj\xB9cego cho\xE6by jeden \ac{SN} powinno r\xF3wnie\xBF by\xE6 \ac{SN}. Implikuje to rozszerzanie si\xEA skupisk \ac{SN} z ka\xBFd\xB9 kolejn\xB9 iteracj\xB9. +Pakiet nie musi wymaga\xE6 konkretyzowania \ac{SN}. W takim przypadku wynik \ac{FL} dla s\xB9siedztwa zawieraj\xB9cego cho\xE6by jeden \ac{SN} powinien r\xF3wnie\xBF by\xE6 \ac{SN}. Implikuje to rozszerzanie si\xEA skupisk \ac{SN} z ka\xBFd\xB9 kolejn\xB9 iteracj\xB9. \subsubsection{Dane (konfiguracja kom\xF3rek)} \label{subsubsec:dane} @@ -104,17 +103,15 @@ \subsubsection{Rodzaje warunk\xF3w brzegowych} \label{subsubsec:rwb} -Definiuje si\xEA trzy podstawowe rodzaje warunk\xF3w brzegowych. +Szczeg\xF3lna sytuacja podczas przetwarzania kom\xF3rkowego wyst\xEApuje, gdy s\xB9siedztwo rozpatrywanej kom\xF3rki wykracza poza zdefiniowan\xB9 przestrze\xF1 \ac{KB}, czyli dla kom\xF3rek znajduj\xB9cych si\xEA stosunkowo blisko kraw\xEAdzi konfiguracji. W celu wyliczenia stanu takich kom\xF3rek konieczne jest zdefiniowanie {\bf warunk\xF3w brzegowych}. Poni\xBFej przedstawione zosta\xB3y dwa przyk\xB3adowe warunki brzegowe. Pierwszym przypadkiem jest, gdy kom\xF3rki znajduj\xB9ce si\xEA na kraw\xEAdziach konfiguracji nie posiadaj\xB9 s\xB9siad\xF3w poza jej obszarem. Przy wyznaczaniu ci\xB9gu s\xB9siad\xF3w dla kom\xF3rek z poza konfiguracji przyjmuje si\xEA stan zerowy. -Drugi przypadek wyst\xEApuje, gdy kom\xF3rki le\xBF\xB9ce na jednej z par przeciwleg\xB3ych kraw\xEAdzi konfiguracji s\xB9 wobec siebie s\xB9siadami. +Dwrugim przypadkiem s\xB9 torusowe warunki brzegowe. Sytuacja taka wyst\xEApuje, gdy kom\xF3rki le\xBF\xB9ce na przeciwleg\xB3ych kraw\xEAdziach konfiguracji s\xB9siaduj\xB9 ze sob\xB9. -Trzecim przypadkiem s\xB9 torusowe warunki brzegowe. Sytuacja taka wyst\xEApuje, gdy kom\xF3rki le\xBF\xB9ce na przeciwleg\xB3ych kraw\xEAdziach konfiguracji s\xB9siaduj\xB9 ze sob\xB9. - \subsection{Ustawienia domy\x9Clne i~przyk\xB3ady} \label{subsec:udip} -W~nat\xB3oku tryb\xF3w, narz\xEAdzi i~wizualizacji prezentowanie tylko i~wy\xB3\xB9cznie kluczowych dla danej sytuacji opcji znacznie usprawnia prac\xEA operatora. Na podstawie wczytywanych kolejno plik\xF3w, zar\xF3wno modelu jak i~danych, nale\xBFy przyj\xB9\xE6 najbardziej prawdopodobny typ eksperymentu i~dobra\xE6 odpowiednie narz\xEAdzia. +W\x9Cr\xF3d wielu tryb\xF3w, narz\xEAdzi i~wizualizacji prezentowanie tylko i~wy\xB3\xB9cznie kluczowych dla danej sytuacji opcji znacznie usprawnia prac\xEA operatora. Na podstawie wczytywanych kolejno plik\xF3w, zar\xF3wno modelu jak i~danych, nale\xBFy przyj\xB9\xE6 najbardziej prawdopodobny typ eksperymentu i~dobra\xE6 odpowiednie narz\xEAdzia. R\xF3wnie wa\xBFne s\xB9 logiczne ustawienia domy\x9Clne dla parametr\xF3w, kt\xF3rych u\xBFytkownik jawnie nie okre\x9Cli\xB3. Dob\xF3r tych ustawie\xF1 powinien by\xE6 konsekwentny i~jednolity w~ca\xB3ym pakiecie. @@ -127,35 +124,38 @@ \label{subsubsec:uog} Jednoznaczne i~wyra\x9Fne prezentowanie operatorowi element\xF3w modelu oraz~efekt\xF3w przetwarzania jest bezpo\x9Crednim powodem tworzenia symulator\xF3w. W~szczeg\xF3lno\x9Cci wizualizowanie skomplikowanych struktur tr\xF3jwymiarowych w~czytelny spos\xF3b jest niebanalnym wyzwaniem, nie do ko\xF1ca \x9Cci\x9Cle programistycznym. -\subsubsection{Funkcje podstawowe wizualizacji~--- wymagania} +\subsubsection{Funkcje podstawowe wizualizacji} \label{subsubsec:npo} Poni\xBFej zebrana zosta\xB3a lista wymaga\xF1 dot. wizualizacji, jakie powinien spe\xB3nia\xE6 ,,idealny symulator'' \ac{AK}. \begin{itemize} - \item Klarowny i jednoznaczny spos\xF3b reprezentacji konfiguracji \ac{AK} - \item Mo\xBFliwo\x9C\xE6 swobodnego poruszania si\xEA po konfiguracjach zajmuj\xB9cych wi\xEAcej, ni\xBF jeden ekran - \item Mo\xBFliwo\x9C\xE6 zaznaczenia dowolnej kom\xF3rki lub grupy kom\xF3rek w obr\xEAbie konfiguracji - \item Mo\xBFliwo\x9C\xE6 pozycjonowania pojedynczej kom\xF3rki, lub ca\xB3ych ich grup - \item Kopiowanie konfiguracji kom\xF3rek - \item Wklejanie konfiguracji - \item Przesuwanie konfiguracji kom\xF3rek + \item Klarowny i jednoznaczny spos\xF3b reprezentacji konfiguracji \ac{AK}. + \item Mo\xBFliwo\x9C\xE6 swobodnego poruszania si\xEA po konfiguracjach zajmuj\xB9cych wi\xEAcej, ni\xBF jeden ekran. + \item Mo\xBFliwo\x9C\xE6 zaznaczenia dowolnej kom\xF3rki lub grupy kom\xF3rek w obr\xEAbie konfiguracji. + \item Mo\xBFliwo\x9C\xE6 pozycjonowania pojedynczej kom\xF3rki, lub ca\xB3ych ich grup. + \item Operacje na kom\xF3rkach: + \begin{itemize} + \item kopiowanie konfiguracji kom\xF3rek, + \item wklejanie konfiguracji, + \item przesuwanie konfiguracji kom\xF3rek. + \end{itemize} \item Cechy charakterystyczne dla operacji na tr\xF3jwymiarowych przestrzeniach: \begin{itemize} - \item obroty - \item przesuni\xEAcia - \item zbli\xBFenia/oddalenia - \item manipulowanie perspektyw\xB9 (obcinanie przestrzeni p\xB3aszczyznami) + \item obroty, + \item przesuni\xEAcia, + \item zbli\xBFenia/oddalenia, + \item manipulowanie perspektyw\xB9 (obcinanie przestrzeni p\xB3aszczyznami). \end{itemize} \end{itemize} \subsubsection{Zestawienie technik obrazowania przetwarzania kom\xF3rkowego} \label{subsubsec:ztopk} -W punkcie tym przedstawione zosta\xB3y niekt\xF3re techniki obrazowania. +W punkcie tym przedstawione zosta\xB3y wybrane techniki obrazowania. \begin{description} - \item[dST] Pierwsz\xB9 technik\xB9 jest diagram dST, czyli odk\xB3adanie kolejnych stan\xF3w (S) na osi $OX$ oraz kolejnych \ac{KB} na osi czasu $OY$. Ten typ diagramu przeznaczony jest do prezentowania przetwarzania \ac{LAK}. - \item[dTS] Jest to diagram koncepcyjnie podobny do diagramu dST. Polega na odk\xB3adaniu kolejnych stan\xF3w na osi $OY$ oraz kolejnych iteracji na osi $OX$. Podobnie jak diagram dST przeznaczony jest do obrazowania przetwarzania w modelu \ac{LAK}. - \item[Plansza]Dla dwuwymiarowych \ac{AK} diagramy dST i dTS nie s\xB9 czytelne. W zwi\xB9zku z tym konfiguracje \ac{DAK} przedstawiane s\xB9 na dwuwymiarowych planszach (pikslowych lub znakowych~--- por. \ref{subsubsec:twy}). W celu przedstawienia zmian w \ac{DAK}, mo\xBFna umieszcza\xE6 kolejne konfiguracje obok siebie, zaznaczaj\xB9c przy tym chwile czasowe, w kt\xF3rych dana konfiguracja wyst\xB9pi\xB3a. + \item[dST] Pierwsz\xB9 technik\xB9 jest diagram ST, czyli odk\xB3adanie kolejnych stan\xF3w kom\xF3rek (S) na osi $OX$ oraz kolejnych \ac{KB} na osi czasu $OY$. Ten typ diagramu przeznaczony jest do prezentowania przetwarzania \ac{LAK}\citep{siwy,sicw}. + \item[dTS] Jest to diagram koncepcyjnie podobny do diagramu ST. Polega na odk\xB3adaniu kolejnych stan\xF3w kom\xF3rek na osi $OY$ oraz kolejnych iteracji na osi $OX$. Podobnie jak diagram ST przeznaczony jest do obrazowania przetwarzania w modelu \ac{LAK}\citep{siwy,sicw}. + \item[Plansza]Dla dwuwymiarowych \ac{AK} dST i dTS nie s\xB9 czytelne. W zwi\xB9zku z tym konfiguracje \ac{DAK} przedstawiane s\xB9 na dwuwymiarowych planszach (pikslowych lub znakowych~--- por. \ref{subsubsec:twy}). W celu przedstawienia zmian w \ac{DAK} mo\xBFna umieszcza\xE6 kolejne konfiguracje obok siebie, zaznaczaj\xB9c przy tym chwile czasowe, w kt\xF3rych dana konfiguracja wyst\xB9pi\xB3a. \item[Sze\x9Ccian] W przypadku \ac{TAK} najprostsz\xB9 technik\xB9 wizualizowania jest przyj\xEAcie sze\x9Ccianu jako kszta\xB3tu reprezentuj\xB9cego kom\xF3rk\xEA. Ten spos\xF3b wizualizowania jest intuicyjny dla obserwatora, lecz wprowadza pewne ograniczenia. Mianowicie w naturalny spos\xF3b sze\x9Ccian implikuje posiadanie dok\xB3adnie sze\x9Cciu s\xB9siad\xF3w umiejscowionych prostopadle do ka\xBFdej ze \x9Ccian. W og\xF3lno\x9Cci model \ac{TAK} mo\xBFe definiowa\xE6 inne s\xB9siedztwo. \end{description} @@ -164,9 +164,9 @@ \paragraph{Tryb tekstowy} \label{par:tek} -Jest to najbardziej oczywisty tryb wy\x9Cwietlania bior\xB9c pod uwag\xEA charakter plik\xF3w wej\x9Cciowych. Polega na tworzeniu linii (w~przypadku \ac{LAK}) lub tabel (w~\ac{DAK}) z\xB3o\xBFonych z symboli stan\xF3w kolejnych kom\xF3rek. Tekstowe wizualizowanie przestrzeni tr\xF3jwymiarowych nie jest tak efektywne i~czytelne z~uwagi na fakt, i\xBF w~zale\xBFno\x9Cci od aktualnej perspektywy, znaki znajduj\xB9ce si\xEA na tej samej osi g\xB3\xEAboko\x9Cci mog\xB9 si\xEA na siebie nak\xB3ada\xE6, utrudniaj\xB9c poprawn\xB9 ich identyfikacj\xEA. Dopiero za pomoc\xB9 wyboru wy\x9Cwietlanych p\xB3aszczyzn mo\xBFliwe jest efektywne obrazowanie cz\xEA\x9Cci przestrzeni tr\xF3jwymiarowej jednym z przekroj\xF3w. +Jest to najbardziej oczywisty tryb wy\x9Cwietlania, bior\xB9c pod uwag\xEA charakter plik\xF3w wej\x9Cciowych. Polega na tworzeniu linii (w~przypadku \ac{LAK}) lub tabel (w~\ac{DAK}) z\xB3o\xBFonych ze stan\xF3w kolejnych kom\xF3rek. Tekstowe wizualizowanie przestrzeni tr\xF3jwymiarowych nie jest tak efektywne i~czytelne bior\xB9c pod uwag\xEA fakt, i\xBF w~zale\xBFno\x9Cci od aktualnej perspektywy, znaki znajduj\xB9ce si\xEA na tej samej osi g\xB3\xEAboko\x9Cci mog\xB9 si\xEA na siebie nak\xB3ada\xE6, utrudniaj\xB9c poprawn\xB9 ich identyfikacj\xEA. Dopiero za pomoc\xB9 wyboru wy\x9Cwietlanych p\xB3aszczyzn mo\xBFliwe jest efektywne obrazowanie cz\xEA\x9Cci przestrzeni tr\xF3jwymiarowej jednym z przekroj\xF3w. -Tryb tekstowy u\xB3atwia analizowanie obraz\xF3w przetwarzania \ac{AK} z~uwagi na reprezentacj\xEA modelu (w~szczeg\xF3lno\x9Cci \ac{FL}). Mo\xBFna w~ten spos\xF3b \x9Cledzi\xE6 poprawno\x9C\xE6 dzia\xB3ania \ac{FL}, lub na bie\xBF\xB9co modyfikowa\xE6 jej posta\xE6 u\xBFywaj\xB9c symboli bezpo\x9Crednio prezentowanych na ekranie. +Tryb tekstowy u\xB3atwia analizowanie obraz\xF3w przetwarzania \ac{AK} z~uwagi na reprezentacj\xEA modelu (w~szczeg\xF3lno\x9Cci \ac{FL}). Mo\xBFna w~ten spos\xF3b \x9Cledzi\xE6 poprawno\x9C\xE6 dzia\xB3ania \ac{FL} lub na bie\xBF\xB9co modyfikowa\xE6 jej posta\xE6 u\xBFywaj\xB9c symboli bezpo\x9Crednio prezentowanych na ekranie. \paragraph{Tryb graficzny} \label{par:graf} @@ -174,11 +174,11 @@ Wy\x9Cwietlanie polega na zast\xEApowaniu symboli alfabetu \ac{AK} kszta\xB3tami i/lub kolorami na planszy pikslowej (\ac{LAK} i~\ac{DAK}) lub w~przestrzeni tr\xF3jwymiarowej. Stosowanie takiej formy prezentacji zdecydowanie poprawia czytelno\x9C\xE6 konfiguracji z\xB3o\xBFonych z~wielu r\xF3\xBFnowarto\x9Cciowych kom\xF3rek. Ponadto pozwala nada\xE6 wizualizacji charakter bardziej intuicyjny, np. upodobnienie konkretnych warto\x9Cci do kszta\xB3t\xF3w rzeczywistych obiekt\xF3w. -Efektywno\x9C\xE6 tworzenie obiekt\xF3w graficznych bezpo\x9Crednio przez nowoczesne uk\xB3ady graficzne wielokrotnie przewy\xBFsza renderowanie tekstu. To zdecydowanie poprawia wydajno\x9C\xE6 operowania rozleg\xB3ymi przestrzeniami, w~szczeg\xF3lno\x9Cci tr\xF3jwymiarowymi. W~po\xB3\xB9czeniu z~bardzo szybko rosn\xB9c\xB9 moc\xB9 obliczeniow\xB9 jednostek graficznych mo\xBFliwe jest wykorzystywanie efekt\xF3w dodatkowo poprawiaj\xB9cych czytelno\x9C\xE6 i~realistyczno\x9C\xE6 prezentacji, takich jak antyaliasing, czy przezroczysto\x9C\xE6. +Efektywno\x9C\xE6 tworzenia obiekt\xF3w graficznych bezpo\x9Crednio przez nowoczesne uk\xB3ady graficzne wielokrotnie przewy\xBFsza pr\xEAdko\x9C\xE6 wy\x9Cwietlanie tekstu. To zdecydowanie poprawia wydajno\x9C\xE6 operowania rozleg\xB3ymi przestrzeniami, w~szczeg\xF3lno\x9Cci tr\xF3jwymiarowymi. W~po\xB3\xB9czeniu z~bardzo szybko rosn\xB9c\xB9 moc\xB9 obliczeniow\xB9 jednostek graficznych mo\xBFliwe jest wykorzystywanie efekt\xF3w dodatkowo poprawiaj\xB9cych czytelno\x9C\xE6 i~realistyczno\x9C\xE6 prezentacji, takich jak antyaliasing czy przezroczysto\x9C\xE6. \subsubsection{Interpretacja wizualizacji} \label{subsubsec:iwy} -Efektywn\xB9 metod\xB9 zwi\xEAkszenia czytelno\x9Cci prezentowanych danych (w og\xF3lnym rozumieniu) jest interpretowanie symboli stan\xF3w kom\xF3rkowych przy wy\x9Cwietlaniu. W przypadku \ac{AK} polega ono na przypisywaniu znak\xF3w, kszta\xB3t\xF3w i~kolor\xF3w symbolom \ac{KB} przez operatora\citep{siwy,sicw}. Pozwala to uwypukli\xE6 te warto\x9Cci kom\xF3rek, kt\xF3re operatora najbardziej interesuj\xB9. Pakiet powinien umo\xBFliwi\xE6 definiowanie takich przyporz\xB9dkowa\xF1 zar\xF3wno dla trybu graficznego, jak i~tekstowego. Rozszerzeniem tej koncepcji jest mo\xBFliwo\x9C\xE6 definiowania interpretacji dla grup symboli. +Efektywn\xB9 metod\xB9 zwi\xEAkszenia czytelno\x9Cci prezentowanych danych jest interpretowanie symboli stan\xF3w kom\xF3rkowych przy wy\x9Cwietlaniu. W przypadku \ac{AK} polega ono na przypisywaniu znak\xF3w, kszta\xB3t\xF3w i~kolor\xF3w symbolom \ac{KB} przez operatora\citep{siwy,sicw}. Pozwala to uwypukli\xE6 te warto\x9Cci kom\xF3rek, kt\xF3re operatora najbardziej interesuj\xB9. Pakiet powinien umo\xBFliwi\xE6 definiowanie takich przyporz\xB9dkowa\xF1 zar\xF3wno dla trybu graficznego, jak i~tekstowego. Rozszerzeniem tej koncepcji jest mo\xBFliwo\x9C\xE6 okre\x9Clania interpretacji dla grup symboli. Potrzeb\xEA bardziej wyrafinowanego sterowania wizualizacj\xB9 zaspokajaj\xB9 filtry. Pozwalaj\xB9 one na ustalanie lu\x9Fniejszych regu\xB3 sterowania wy\x9Cwietlaniem, np. ukrywanie symboli o~warto\x9Cciach wi\xEAkszych lub mniejszych od zadanego progu, uwidacznianie pewnych struktur (np. 'poka\xBF co drug\xB9 kom\xF3rk\xEA', 'wy\x9Cwietl przekroje z niezerowymi stanami kom\xF3rek', \ldots). @@ -188,7 +188,7 @@ \subsubsection{Obserwator lokalny i~globalny} \label{subsubsec:oli} -Obowi\xB9zuj\xB9c\xB9 metod\xB9 wizualizowania przetwarzania jest przedstawianie widoku z~perspektywy obserwatora globalnego, czyli takiego, kt\xF3ry nie jest cz\xEA\x9Cci\xB9 konfiguracji i~ma nieograniczony oraz natychmiastowy dost\xEAp do wszystkich jej kom\xF3rek. Zupe\xB3nie now\xB9 koncepcj\xB9 jest mo\xBFliwo\x9C\xE6 zaprezentowania przebiegu oblicze\xF1 z~punktu widzenia jednego z~obiekt\xF3w symulowanej przestrzeni, zwana {\bf obserwatorem lokalnym}\citep{siim}. Koncepcja ta jest autorstwa dr Paw\xB3a Siwaka\citep{siim,siwy}. Kom\xF3rka wyznaczona na \ac{OL} ,,dowiaduje si\xEA'' o zmianie stanu bezpo\x9Crednich s\xB9siad\xF3w z pr\xEAdko\x9Cci\xB9 $c$. Natomiast z op\xF3\x9Fnieniem (wyra\xBFonym w iteracjach) o zmianie stan\xF3w reszty kom\xF3rek, proporcjonalnym do odleg\xB3o\x9Cci od obserwatora. +Obowi\xB9zuj\xB9c\xB9 metod\xB9 wizualizowania przetwarzania jest przedstawianie widoku z~perspektywy obserwatora globalnego, czyli takiego, kt\xF3ry nie jest cz\xEA\x9Cci\xB9 konfiguracji i~ma nieograniczony oraz natychmiastowy dost\xEAp do wszystkich jej kom\xF3rek. Zupe\xB3nie now\xB9 koncepcj\xB9 jest mo\xBFliwo\x9C\xE6 zaprezentowania przebiegu oblicze\xF1 z~punktu widzenia jednego z~obiekt\xF3w symulowanej przestrzeni, zwana {\bf obserwatorem lokalnym}\citep{siim}. Koncepcja ta jest autorstwa dr Paw\xB3a Siwaka\citep{siim,siwy}. Kom\xF3rka wyznaczona na \ac{OL} ,,dowiaduje si\xEA'' stopniowo o zmianie stanu s\xB9siad\xF3w. Jej ,,wiedza'' o otoczeniu poszerza si\xEA z pr\xEAdko\x9Cci\xB9 $c$.Zatem o zmianach stan\xF3w kom\xF3rek ,,dowiaduje si\xEA'' z tym wi\xEAkszym op\xF3\x9Fnieniem, im wi\xEAksza jest odleg\xB3o\x9C\xE6 do nich. Mo\xBFliwo\x9C\xE6 dynamicznego definiowania i~zmieniania punktu widzenia powinna by\xE6 cz\xEA\x9Cci\xB9 ,,idealnego symulatora''. W~bardziej z\xB3o\xBFonym przypadku mo\xBFna sobie wyobrazi\xE6, i\xBF obserwator jest ruchomy i~przemieszcza si\xEA wraz z~biegiem przetwarzania. @@ -196,9 +196,9 @@ \label{subsec:pek} \subsubsection{Rytmy przetwarzania} \label{subsubsec:rpr} -Podstawowym rytmem jest przetwarzanie krokowe~--- jedna iteracja naraz. Pakiet powinien przewidzie\xE6 mo\xBFliwo\x9C\xE6 wykonania ustalonej przez operatora liczby iteracji (domy\x9Clnie jednej). Skrajnym przypadkiem takiego zachowania jest eksperyment ci\xB9g\xB3y. Jest on przydatny do \x9Cledzenia pewnych charakterystycznych obiekt\xF3w \ac{AK}, takich jak ,,\xB3azik'', w~szczeg\xF3lno\x9Cci przy torusowych warunk\xF3w brzegowych (por. \ref{subsubsec:rwb}). +Podstawowym rytmem jest przetwarzanie krokowe~--- jedna iteracja na raz. Pakiet powinien przewidzie\xE6 mo\xBFliwo\x9C\xE6 wykonania ustalonej przez operatora liczby iteracji (domy\x9Clnie jednej). Skrajnym przypadkiem takiego zachowania jest eksperyment ci\xB9g\xB3y. Jest on przydatny do \x9Cledzenia pewnych charakterystycznych obiekt\xF3w \ac{AK}, takich jak ,,\xB3azik'', w~szczeg\xF3lno\x9Cci przy torusowych warunk\xF3w brzegowych (por. \ref{subsubsec:rwb}). -U\xBFytecznym sposobem prowadzenia symulacji jest wyznaczanie warunk\xF3w ko\xF1cowych. Wyst\xB9pienie kt\xF3regokolwiek z~nich przerywa eksperyment. Szczeg\xF3lnym przypadkiem takich warunk\xF3w jest liczba przeprowadzonych iteracji, kt\xF3ra zapobiega zap\xEAtleniu si\xEA przetwarzania w~sytuacji, gdy pozosta\xB3e warunki ko\xF1cowe okaza\xB3yby si\xEA nieosi\xB9galne. Opracowanie sposobu deklarowania, a~nast\xEApnie wyszukiwania nietrywialnych warunk\xF3w ko\xF1cowych (takich jak pusta konfiguracja czy pojawienie si\xEA konkretnego wzorca) znacz\xB9co zintensyfikowa\xB3o by mo\xBFliwo\x9Cci prowadzenia eksperyment\xF3w z pakietem. +U\xBFytecznym sposobem prowadzenia symulacji jest wyznaczanie warunk\xF3w ko\xF1cowych. Wyst\xB9pienie kt\xF3regokolwiek z~nich przerywa eksperyment. Szczeg\xF3lnym przypadkiem takich warunk\xF3w jest liczba przeprowadzonych iteracji, kt\xF3ra zapobiega zap\xEAtleniu si\xEA przetwarzania w~sytuacji, gdy pozosta\xB3e warunki ko\xF1cowe okaza\xB3yby si\xEA nieosi\xB9galne. Opracowanie sposobu deklarowania, a~nast\xEApnie wyszukiwania nietrywialnych warunk\xF3w ko\xF1cowych (takich jak pusta konfiguracja czy pojawienie si\xEA konkretnego wzorca) znacz\xB9co zintensyfikowa\xB3oby mo\xBFliwo\x9Cci prowadzenia eksperyment\xF3w z pakietem. Dla szybkiego oszacowania zmian wyst\xEApuj\xB9cych na przestrzeni wielu iteracji, pakiet powinien umo\xBFliwi\xE6 wy\x9Cwietlanie jedynie co $n$-tej konfiguracji. Proces taki nazywamy {\bf skalowaniem w czasie}\citep{siwy,sicw}. @@ -216,11 +216,11 @@ \subsubsection{Por\xF3wnywanie przetwarza\xF1} \label{subsubsec:ppr} -Cz\xEA\x9C\xE6 zaproponowanych powy\xBFej funkcjonalno\x9Cci s\xB3u\xBFy do wprowadzania zmian w modelu lub danych \ac{AK}. Zmiany te wp\xB3ywaj\xB9 na posta\xE6 kolejnych konfiguracji symulacji. Program powinien umo\xBFliwi\xE6 bezpo\x9Crednie por\xF3wnywanie obraz\xF3w powsta\xB3ych w wyniku manipulacji parametrami \ac{AK}, np. r\xF3wnoczesne \x9Cledzenie przetwarzania dla \ac{OG} i~\ac{OL}. W~celu uzyskania pe\xB3nej kontroli nad procesem por\xF3wnywania, nale\xBFy zaimplementowa\xE6 osobne, jak i~wsp\xF3lne taktowanie obu symulacji (por. \ref{subsubsec:rpr}). +Cz\xEA\x9C\xE6 zaproponowanych powy\xBFej funkcjonalno\x9Cci s\xB3u\xBFy do wprowadzania zmian w modelu lub danych \ac{AK}. Zmiany te wp\xB3ywaj\xB9 na posta\xE6 kolejnych konfiguracji symulacji. Program powinien umo\xBFliwi\xE6 bezpo\x9Crednie por\xF3wnywanie obraz\xF3w powsta\xB3ych w wyniku manipulacji parametrami \ac{AK}, np. r\xF3wnoczesne \x9Cledzenie przetwarzania dla \ac{OG} i~\ac{OL}. W~celu uzyskania pe\xB3nej kontroli nad procesem por\xF3wnywania, nale\xBFy zaimplementowa\xE6 zar\xF3wno osobne, jak i~wsp\xF3lne taktowanie obu symulacji (por. \ref{subsubsec:rpr}). \subsection{Utrwalanie wynik\xF3w symulacji} \label{subsec:uwy} -W najprostszym przypadku przez wynik symulacji rozumiana jest historia przetwarzania, gdy celem symulacji jest okre\x9Clenie konfiguracji \ac{AK} po zadanej liczbie iteracji podanego modelu. W og\xF3lnym przypadku wynikiem prowadzenia symulacji mo\xBFe by\xE6 zar\xF3wno konfiguracja, jak i elementy modelu (\ac{FL}, \ac{N}) przetworzone b\xB9d\x9F zestawione w trakcie dzia\xB3ania programu. +W najprostszym przypadku przez wynik symulacji rozumiana jest historia przetwarzania, gdy celem symulacji by\xB3o okre\x9Clenie konfiguracji \ac{AK} po zadanej liczbie iteracji podanego modelu. W og\xF3lnym przypadku wynikiem prowadzenia symulacji mo\xBFe by\xE6 zar\xF3wno konfiguracja, jak i elementy modelu (\ac{FL}, \ac{N}) przetworzone b\xB9d\x9F zestawione w trakcie dzia\xB3ania programu. \subsubsection{Utrwalanie pojedynczych element\xF3w} \label{subsubsec:upe} @@ -228,11 +228,11 @@ \subsubsection{Utrwalanie historii przetwarzania} \label{subsubsec:uch} -Zapisanie ca\xB3o\x9Cci eksperymentu w~pojedynczym pliku u\xB3atwia p\xF3\x9Fniejsze jego wznowienie (lub analiz\xEA). Plik ten powinien zawiera\xE6 zar\xF3wno specyfikacj\xEA modelu \ac{AK}, jak i~kompletn\xB9 histori\xEA przetwarzania \ac{KP} wraz z~rozga\xB3\xEAzieniami, wynikaj\xB9cymi ze zmian wprowadzonych w~trakcie trwania eksperymentu (por. \ref{subsec:eak} oraz \ref{subsubsec:hit}). +Zapisanie ca\xB3o\x9Cci eksperymentu w~pojedynczym pliku u\xB3atwia p\xF3\x9Fniejsze jego wznowienie lub analiz\xEA. Plik ten powinien zawiera\xE6 zar\xF3wno specyfikacj\xEA modelu \ac{AK}, jak i~kompletn\xB9 histori\xEA przetwarzania \ac{KP} wraz z~rozga\xB3\xEAzieniami, wynikaj\xB9cymi ze zmian wprowadzonych w~trakcie trwania eksperymentu (por. \ref{subsec:eak} oraz \ref{subsubsec:hit}). Nale\xBFy przy tym uwzgl\xEAdni\xE6 utrwalanie eksperyment\xF3w por\xF3wnawczych wraz z taktowaniem obu przebieg\xF3w. -\subsubsection{Tworzenie multimedi\xF3w} +\subsubsection{Tworzenie plik\xF3w multimedialnych} \label{subsubsec:tmu} Prowadzenie z\xB3o\xBFonych symulacji \ac{AK} wymaga znacznych zasob\xF3w obliczeniowych~--- w~szczeg\xF3lno\x9Cci manipulowanie wizualizacj\xB9 tr\xF3jwymiarowych przestrzeni. W~celu p\xF3\x9Fniejszej prezentacji przebiegu symulacji pakiet powinien umo\xBFliwi\xE6 tworzenie plik\xF3w multimedialnych archiwizuj\xB9cych eksperyment. Pozwala to na dalsze dystrybuowanie wynik\xF3w, w~szczeg\xF3lno\x9Cci w~internecie. @@ -252,15 +252,15 @@ MCell to pakiet autorstwa Miros\xB3awa W\xF3jtowicza. Zas\xB3uguje na uwag\xEA ze wzgl\xEAdu na bogaty zestaw mo\xBFliwo\x9Cci funkcjonalnych, w jakie zosta\xB3 wyposa\xBFony. Najwa\xBFniejsze z nich to: \begin{itemize} -\item obs\xB3uga jedno i dwuwymiarowych automat\xF3w kom\xF3rkowych -\item graficzna wizualizacja pracy symulatora -\item wsparcie dla czternastu rodzin AK -\item 256 elementowy alfabet -\item bogaty zestaw gotowych regu\xB3 i konfiguracji pocz\xB9tkowych -\item wsparcie dla kilku r\xF3\xBFnych rodzaj\xF3w s\xB9siedztwa -\item zestaw narz\xEAdzi do analizy symulacji -\item wygodny i prosty w obs\xB3udze interfejs u\xBFytkownika -\item mo\xBFliwo\x9C\xE6 wsp\xF3\xB3pracy z innymi pakietami +\item obs\xB3uga jedno- i dwuwymiarowych automat\xF3w kom\xF3rkowych, +\item graficzna wizualizacja pracy symulatora, +\item wsparcie dla czternastu rodzin AK, +\item 256-elementowy alfabet, +\item bogaty zestaw gotowych regu\xB3 i konfiguracji pocz\xB9tkowych, +\item wsparcie dla kilku r\xF3\xBFnych rodzaj\xF3w s\xB9siedztwa, +\item zestaw narz\xEAdzi do analizy symulacji, +\item wygodny i prosty w obs\xB3udze interfejs u\xBFytkownika, +\item mo\xBFliwo\x9C\xE6 wsp\xF3\xB3pracy z innymi pakietami. \end{itemize} \subsection {DDLab} @@ -271,8 +271,8 @@ \label{fig:} \end{figure} -DDLab jest interaktywnym programem graficznym przewidzianym do badania sko\xF1czonych sieci binarnych. Posiada dwa alternatywne sposoby postrzegania dynamiki sieci: dynamik\xEA lokaln\xB9 obrazuj\xB9c\xB9 dzia\xB3anie sieci wraz z nast\xEApuj\xB9cymi chwilami czasowymi, oraz dynamik\xEA globaln\xB9 przedstawiaj\xB9c\xB9 prac\xEA wsteczn\xB9 sieci. -Mo\xBFliwo\x9C\xE6 obrazowania dynamiki globalnej w postaci diagram\xF3w drzew mo\xBFliwych wcze\x9Cniejszych konfiguracji wyr\xF3\xBFnia ten produkt spo\x9Cr\xF3d innych symulator\xF3w sieci automat\xF3w kom\xF3rkowych. +DDLab jest interaktywnym programem graficznym przewidzianym do badania sko\xF1czonych sieci binarnych. Posiada dwie alternatywne dynamiki sieci: dynamik\xEA lokaln\xB9 obrazuj\xB9c\xB9 dzia\xB3anie sieci wraz z nast\xEApuj\xB9cymi chwilami czasowymi oraz dynamik\xEA globaln\xB9 przedstawiaj\xB9c\xB9 prac\xEA wsteczn\xB9 sieci. +Mo\xBFliwo\x9C\xE6 obrazowania dynamiki globalnej w postaci diagram\xF3w drzew mo\xBFliwych wcze\x9Cniejszych konfiguracji wyr\xF3\xBFnia ten produkt spo\x9Cr\xF3d innych symulator\xF3w sieci \ac{AK}. \subsection{Life32} \begin{figure}[!hpt] @@ -282,7 +282,7 @@ \label{fig:} \end{figure} -Life32 jest symulatorem ukierunkowanym na regu\xB3y "Game of Life". Do g\xB3\xF3wnych zalet tej aplikacji nale\xBF\xB9 maksymalny rozmiar przetwarzanej konfiguracji kt\xF3ry ograniczony jest do planszy o rozmiarach 1000000 x 1000000, oraz du\xBFa pr\xEAdko\x9C\xE6 przetwarzania. Ograniczeniem pakietu jest to \xBFe umo\xBFliwia przetwarzanie jedynie konfiguracji binarnych. Symulator posiada mo\xBFliwo\x9C\xE6 wczytywania plik\xF3w innych popularnych pakiet\xF3w. Przebieg symulacji obrazowany jest za pomoc\xB9 dwu wymiarowych plansz KB. Pakiet posiada zestaw narz\xEAdzi umo\xBFliwiaj\xB9cych +Life32 jest symulatorem ukierunkowanym na regu\xB3y "Game of Life". Do g\xB3\xF3wnych zalet tej aplikacji nale\xBF\xB9: maksymalny rozmiar przetwarzanej konfiguracji, kt\xF3ry ograniczony jest do planszy o rozmiarach 1000000 x 1000000, oraz du\xBFa pr\xEAdko\x9C\xE6 przetwarzania. Ograniczeniem pakietu jest przetwarzanie jedynie konfiguracji binarnych. Symulator posiada mo\xBFliwo\x9C\xE6 wczytywania plik\xF3w innych popularnych pakiet\xF3w. Przebieg symulacji obrazowany jest za pomoc\xB9 dwuwymiarowych plansz \ac{KB}. Pakiet posiada zestaw narz\xEAdzi umo\xBFliwiaj\xB9cych konfiguracje kolor\xF3w symboli. \subsection{CelLab} @@ -293,7 +293,7 @@ \label{fig:} \end{figure} -Pakiet CelLab wyr\xF3\xBFnia spo\x9Cr\xF3d innych symulator\xF3w mo\xBFliwo\x9C\xE6 definiowania w\xB3asnych funkcji lokalnych poprzez stworzenie kr\xF3tkiego programu w j\xEAzykach: Java, C, BASIC lub Pascal. Domy\x9Clnie program jest ograniczony jedynie do w\xB3asnego formatu opisu konfiguracji modelu oblicze\xF1. Sk\xB3adowanie KB mo\xBFliwe jest do plik\xF3w jcp lub bitmapy. Inn\xB9 funkcj\xB9 niespotykan\xB9 w innych pakietach jest mo\xBFliwo\x9C\xE6 tworzenia plik\xF3w avi z zapisem przebiegu eksperymentu. Post\xEAp symulacji obrazowany jest w trybie graficznym z mo\xBFliwo\x9Cci\xB9 dostosowania kolorystyki symboli. +Pakiet CelLab wyr\xF3\xBFnia spo\x9Cr\xF3d innych symulator\xF3w mo\xBFliwo\x9C\xE6 definiowania w\xB3asnych funkcji lokalnych poprzez stworzenie kr\xF3tkiego programu w j\xEAzykach: Java, C, BASIC lub Pascal. Domy\x9Clnie program jest ograniczony jedynie do w\xB3asnego formatu opisu konfiguracji modelu oblicze\xF1. Sk\xB3adowanie \ac{KB} mo\xBFliwe jest do plik\xF3w formatu jcp lub bitmapy. Inn\xB9 funkcj\xB9 niespotykan\xB9 w pozosta\xB3ych pakietach jest mo\xBFliwo\x9C\xE6 tworzenia plik\xF3w multimedialnych z rozszerzeniem avi. Pliki te zawieraj\xB9 zapis przebiegu eksperymentu. Post\xEAp symulacji obrazowany jest w trybie graficznym z mo\xBFliwo\x9Cci\xB9 dostosowania kolorystyki symboli. \subsection{WinLife} \begin{figure}[!hpt] @@ -303,11 +303,11 @@ \label{fig:} \end{figure} -WinLife to kolejny automat kom\xF3rkowy pracuj\xB9cy w oparciu o regu\xB3y "Game of Life". Ograniczeniem pakietu jak w przypadku aplikacji Life32 jest stosowanie alfabetu binarnego. Program obrazuje przebieg symulacji za pomoc\xB9 dwuwymiarowych plansz KB. Pakiet nie posiada narz\xEAdzi umo\xBFliwiaj\xB9cych modyfikacje wy\x9Cwietlonych symboli. +WinLife to kolejny automat kom\xF3rkowy pracuj\xB9cy w oparciu o regu\xB3y "Game of Life". Ograniczeniem pakietu, tak jak w przypadku aplikacji Life32, jest stosowanie alfabetu binarnego. Program obrazuje przebieg symulacji za pomoc\xB9 dwuwymiarowych plansz KB. Pakiet nie posiada narz\xEAdzi umo\xBFliwiaj\xB9cych modyfikacj\xEA wy\x9Cwietlonych symboli. \subsection {Por\xF3wnanie dost\xEApnych AK} -Przeprowadzona analiza funkcji szeroko znanych symulator\xF3w AK pokazuje i\xBF wi\xEAkszo\x9C\xE6 symulator\xF3w koncentruje si\xEA na wizualizacji wybranych modeli obliczeniowych. Zakres wizualizacji ogranicza si\xEA do jedno i dwu wymiarowych AK w trybie graficznym z mo\xBFliwo\x9Cci\xB9 zmiany interpretacji symboli. W trakcie analizy dost\xEApnych symulator\xF3w AK nie stwierdzono wyposa\xBFenia symulator\xF3w w funkcje dynamicznego doboru modelu przetwarzania oraz mo\xBFliwo\x9Cci dowolnego definiowania s\xB9siedztwa. Powszechnie stosuje si\xEA dwa rodzaje s\xB9siedztwa von Neumanna oraz Moora oba z mo\xBFliwo\x9Cci\xB9 niewielkiej modyfikacji s\xB9siad\xF3w. +Przeprowadzona analiza funkcji szeroko znanych symulator\xF3w AK pokazuje, i\xBF wi\xEAkszo\x9C\xE6 symulator\xF3w koncentruje si\xEA na wizualizacji wybranych modeli obliczeniowych. Jej zakres ogranicza si\xEA do jedno- i dwuwymiarowych \ac{AK} w trybie graficznym z mo\xBFliwo\x9Cci\xB9 zmiany interpretacji symboli. W trakcie analizy dost\xEApnych symulator\xF3w \ac{AK} stwierdzono niewystarczaj\xB9ce wyposa\xBFenie symulator\xF3w w funkcje dynamicznego doboru modelu przetwarzania, w tym definiowanie dowolnego s\xB9siedztwa. Powszechnie stosuje si\xEA dwa rodzaje s\xB9siedztwa: von Neumanna oraz Moora, oba z mo\xBFliwo\x9Cci\xB9 niewielkiej modyfikacji s\xB9siad\xF3w. \begin{landscape} \begin{table}[!p] Modified: trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-17 02:04:27 UTC (rev 343) +++ trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-17 03:19:21 UTC (rev 344) @@ -9,43 +9,43 @@ \subsubsection{Utrwalanie wynik\xF3w przetwarzania} Pakiet daje mo\xBFliwo\x9C\xE6 utrwalania efekt\xF3w eksperyment\xF3w w nast\xEApuj\xB9cych trybach: \begin{itemize} -\item zapis poszczeg\xF3lnych element\xF3w modelu do osobnych plik\xF3w(KI, N, FL) -\item zapis konfiguracji bie\xBF\xB9cej wraz z histori\xB9 przetwarzania do pojedynczego pliku -\item eksport konfiguracji do pliku LIF +\item zapis poszczeg\xF3lnych element\xF3w modelu do osobnych plik\xF3w (KI, N, FL), +\item zapis konfiguracji bie\xBF\xB9cej wraz z histori\xB9 przetwarzania do pojedynczego pliku, +\item eksport konfiguracji do pliku LIF (obs\xB3ugiwanego przez programy: MCell, XLife i Life32). \end{itemize} \subsubsection {Tryby pracy symulatora} Symulator daje mo\xBFliwo\x9C\xE6 pracy w trzech trybach: \begin{itemize} -\item praca ci\xB9g\xB3a -\item zadana liczba krok\xF3w -\item praca krokowa +\item praca ci\xB9g\xB3a, +\item zadana liczba krok\xF3w, +\item praca krokowa. \end{itemize} \subsubsection {Warunki brzegowe pracy symulatora} -Domy\x9Clnymi warunkami brzegowymi uwzgl\xEAdnionymi w pracy pakietu s\xB9 warunki torusowe. Symulator nie uwzgl\xEAdnia mo\xBFliwo\x9Cci zmiany warunk\xF3w brzegowych. +Warunkami brzegowymi uwzgl\xEAdnionymi w pracy pakietu s\xB9 warunki torusowe. Symulator nie obs\xB3uguje mo\xBFliwo\x9Cci zmiany warunk\xF3w brzegowych. \subsubsection {Wizualizacja symulacji} -Program pozwala wizualizowa\xE6 symulatory LAK(tryb tekstowy), DAK(tryb testowy, tryb graficzny), TAK(tryb graficzny z dwoma trybami perspektywy). +Program pozwala wizualizowa\xE6 modele \ac{LAK} (tryb tekstowy), \ac{DAK} (tryb testowy i graficzny) oraz \ac{TAK} (tryb graficzny z dwoma perspektywami). \subsection {Rozszerzone funkcje programu} \label{subsec:rfp} \subsubsection{Dynamiczne dobieranie modelu symulacji} \label{subsubsec:ddm} -Program umo\xBFliwia dynamiczne dobieranie funkcji lokalnej podczas pracy symulatora. +Program umo\xBFliwia dynamiczne dobieranie \ac{FL} podczas pracy symulatora. \subsubsection{Edycja KI} -Pakiet daje mo\xBFliwo\x9C\xE6 edycji konfiguracji bie\xBF\xB9cej oraz posiada zestaw narz\xEAdzi wspomagaj\xB9cych(wype\xB3nianie obszar\xF3w, kopiowanie/wklejanie obszar\xF3w). +Pakiet umo\xBFliwia edycj\xEA \ac{KB} oraz posiada zestaw narz\xEAdzi wspomagaj\xB9cych jej definiowanie (wype\xB3nianie obszar\xF3w, kopiowanie/wklejanie). \subsubsection{Wymiana danych z popularnymi pakietami} -Aplikacja umo\xBFliwia zapis/odczyt plik\xF3w w formacie "lif" i "life". +Aplikacja umo\xBFliwia zapis/odczyt plik\xF3w w formacie LIF i LIFE. Formaty te obs\xB3ugiwane s\xB9 przez programy: MCell, Life32 oraz XLife. Do pliku tekstowego zapisywany jest zar\xF3wno model, jak i dane. \subsubsection {Tryby obserwatora} -Aplikacja posiada funkcj\xEA prze\xB3\xB9czania trybu obserwatora. Dost\xEApne s\xB9 tryby lokalny i globalny. +Aplikacja posiada funkcj\xEA prze\xB3\xB9czania trybu obserwatora. Mo\xBFliwe jest obrazowanie przetwarzania kom\xF3rkowego dla \ac{OL} oraz \ac{OG}. \subsubsection {Regu\xB3y elementarne} -Pakiet umo\xBFliwia rejestrowanie regu\xB3 elementarnych wykorzystanych w danej KB +Pakiet rejestruje \ac{RE} u\xBFyte do przetworzenia \ac{KB} w \ac{KN}. Przechowywane s\xB9 regu\xB3y zebrane jedynie podczas jednej iteracji. \subsubsection {Formaty danych} \label{subsubsec:fda} @@ -55,36 +55,36 @@ \item funkcja lokalna \begin{itemize} -\item FQT - Jest formatem pliku tekstowego s\xB3u\xBF\xB9cego do opisu funkcji lokalnej, zawieraj\xB9cego w kolejnych wierszach: + \item FQT - Format pliku tekstowego do opisu \ac{FL}, zawieraj\xB9cego w kolejnych wierszach: \begin{itemize} \item identyfikator literowy typu funkcji, tj FQT, -\item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczba warto\x9Cci argumentu i liczba warto\x9Cci funkcji, +\item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczno\x9C\xE6 alfabetu wej\x9Cciowego oraz liczno\x9C\xE6 alfabetu wyj\x9Cciowego, \item numery zmiennych sumowanych (separowane przecinkiem), - -\item Wiersze nast\xEApne podaj\xB9 kolejne sumy s (dziesi\xEAtnie) i ci\xB9gi warto\x9Cci dla ustalonego s: $f(s,w_{max}) f(s,w_{max-1}) ... f(s,w_{min})$, gdzie $w_{max}$ oznacza maksymalny ci\xB9g wyraz\xF3w wolnych w porz\xB9dku leksykograficznym. +\item kolejne sumy $s$ (dziesi\xEAtnie) i ci\xB9gi warto\x9Cci dla ustalonego $s$: $f(s,w_{max}) f(s,w_{max-1}) ... f(s,w_{min})$, gdzie $w_{max}$ oznacza maksymalny ci\xB9g wyraz\xF3w wolnych w porz\xB9dku leksykograficznym. \end{itemize} \item ZIFW - zawiera w kolejnych wierszach: -\item identyfikator literowy typu funkcji, tj ZIFW, -\item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczba warto\x9Cci argumentu i liczba warto\x9Cci funkcji, -\item kolejne wiersze zawieraj\xB9 zbiory sterowa\xF1 dla kolejnych warto\x9Cci funkcji -\item kreska (my\x9Clnik) oznacza warto\x9C\xE6 nieokre\x9Clon\xB9 (dowoln\xB9) + \begin{itemize} + \item identyfikator literowy typu funkcji, tj ZIFW, + \item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczno\x9C\xE6 alfabetu wej\x9Cciowego oraz liczno\x9C\xE6 alfabetu wyj\x9Cciowego, + \item zbiory sterowa\xF1 dla kolejnych warto\x9Cci funkcji (my\x9Clnik oznacza warto\x9C\xE6 nieokre\x9Clon\xB9). + \end{itemize} \end{itemize} \item s\xB9siedztwo \begin{itemize} -\item N - Jest plikiem przeznaczonym do specyfikowania uk\xB3ad\xF3w s\xB9siedztwa, np. kolejno\x9Cci i po\xB3o\xBFenia s\xB9siad\xF3w kom\xF3rki. Ma on nast\xEApuj\xB9c\xB9 struktur\xEA: +\item N~--- Plik przeznaczony do specyfikowania uk\xB3adu s\xB9siedztwa, tj. kolejno\x9Cci i po\xB3o\xBFenia s\xB9siad\xF3w kom\xF3rki. W kolejnych wierszach zawiera: \begin{itemize} -\item Litera i cyfra: N{1,2,3} - identyfiktor pliku z rozmiarem przestrzeni s\xB9siad\xF3w; -\item do czterech liczb ca\xB3kowitych: \textit{W K S n} - okre\x9Clenie liczby wierszy, kolumn, \x9Ccian oraz s\xB9siad\xF3w. +\item Litera i cyfra: N{1,2,3} - identyfiktor pliku z rozmiarem przestrzeni s\xB9siad\xF3w, +\item do czterech liczb ca\xB3kowitych: $W K S n$ - okre\x9Clenie liczby wierszy, kolumn, \x9Ccian oraz s\xB9siad\xF3w, \item $W_{od} K_{od}, S_{od}$: pozycja odniesienia, od 0 (oznacza po\xB3o\xBFenie okna, lub miejsce zapisu jego wyniku). \end{itemize} -Pozosta\xB3e wiersze podaj\xB9 numery porz\xB9dkowe i rozmieszczenie s\xB9siad\xF3w w tablicy d-wymiarowej (liczby od 1 do n). Kolejno\x9C\xE6 \x9Ccian: \textit{s}=0, \textit{s}=1, ..., \textit{s}=\textit{S}-1. +Pozosta\xB3e wiersze podaj\xB9 numery porz\xB9dkowe i rozmieszczenie s\xB9siad\xF3w w tablicy $d$-wymiarowej (liczby od 1 do $n$). Kolejno\x9C\xE6 \x9Ccian: $s=0, s=1, ..., s=S-1$. \end{itemize} \item konfiguracja inicjalna \begin{itemize} -\item KI - Plik opisu konfiguracji inicjalnej. Poszczeg\xF3lne wiersze oddzielone s\xB9 znakami ko\xF1ca linii, \x9Cciany zaznaczone s\xB9 poprzez pust\xB9 lini\xEA w pliku. +\item KI~--- Plik opisu konfiguracji inicjalnej. Poszczeg\xF3lne wiersze oddzielone s\xB9 znakami ko\xF1ca linii, \x9Cciany zaznaczone s\xB9 poprzez pust\xB9 lini\xEA w pliku. \end{itemize} \end{itemize} Modified: trunk/qcell/doc/licenciate_thesis/chap4/chap4.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap4/chap4.tex 2007-02-17 02:04:27 UTC (rev 343) +++ trunk/qcell/doc/licenciate_thesis/chap4/chap4.tex 2007-02-17 03:19:21 UTC (rev 344) @@ -1,6 +1,6 @@ \chapterauthor{Cezary Krzy\xBFanowski}{Implementacja} \label{chap:imp} -Rozdzia\xB3 ten opisuje organizacj\xEA oraz techniczne aspekty zwi\xB9zane z~implementacj\xB9 symulatora. Znajduje si\xEA w~nim wykaz wykorzystanych narz\xEAdzi i~wzorc\xF3w programistycznych oraz jednostek programowych wchodz\xB9cych w~sk\xB3ad aplikacji. +Rozdzia\xB3 ten opisuje organizacj\xEA jednostek programowych oraz techniczne aspekty zwi\xB9zane z~implementacj\xB9 symulatora. Znajduje si\xEA w~nim wykaz wykorzystanych narz\xEAdzi i~wzorc\xF3w programistycznych oraz jednostek programowych wchodz\xB9cych w~sk\xB3ad aplikacji. \section{Stosowane narz\xEAdzia} \label{sec:sna} @@ -42,7 +42,7 @@ Modularn\xB9 organizacj\xEA programu zapewni\xB3a klasa \code{QtPlugin}. Do implementacji graficznej reprezentacji \ac{AK} u\xBFyto bibliotek OpenGL w~standardzie 1.1 (dla kompatybilno\x9Cci z~mo\xBFliwie najszersz\xB9 gam\xB9 uk\xB3ad\xF3w graficznych), opakowanych przez modu\xB3 \code{QtOpenGL}. \code{QtXML} zapewni\xB3 parser \ac{XML}. -Pozosta\xB3e elementy pakietu opieraj\xB9 si\xEA na g\xB3\xF3wnym module bibliotek \Qt{} (\code{QtCore}), implementuj\xB9cym podstawowe struktury og\xF3lnego u\xBFytku (listy, mapy, wektory), natomiast \ac{GUI} powsta\xB3o z~u\xBFyciem \code{QtGui}\citep{qt4}. +Pozosta\xB3e elementy pakietu opieraj\xB9 si\xEA na g\xB3\xF3wnym module bibliotek \Qt{} (\code{QtCore}), implementuj\xB9cym podstawowe struktury og\xF3lnego u\xBFytku (listy, mapy, wektory). Interfejs graficzny \ac{GUI} powsta\xB3 natomiast z~u\xBFyciem \code{QtGui}\citep{qt4}. \section{Og\xF3lna organizacja programu} \label{sec:asy} @@ -151,12 +151,12 @@ \end{table} \begin{enumerate} - \item Okno g\xB3\xF3wne aplikacji~--- implementowane przez \code{MainWindow}. Definiuje rozmieszczenie poszczeg\xF3lnych element\xF3w interfejsu oraz po\x9Credniczy w~przekazywaniu zdarze\xF1, generowanych przez u\xBFytkownika, mi\xEAdzy elementami podrz\xEAdnymi a~j\xB9drem logicznym\citep{iowp} (por. \ref{subsec:jjl}). - \item Obs\xB3uga trybu wy\x9Cwietlania. Klasy, kt\xF3rych nazwy ko\xF1cz\xB9 si\xEA s\xB3owem ,,Tools'' implementuj\xB9 przyborniki z~narz\xEAdziami do obs\xB3ugi konkretnego trybu wy\x9Cwietlania. Dla przyk\xB3adu pliki View3DTools.h oraz\\View3DTools.cpp opisuj\xB9 elementy \ac{GUI} do sterowania trybem 3D (por \ref{subsec:rfp}). + \item {\bf Okno g\xB3\xF3wne aplikacji}~--- implementowane przez \code{MainWindow}. Definiuje rozmieszczenie poszczeg\xF3lnych element\xF3w interfejsu oraz po\x9Credniczy w~przekazywaniu zdarze\xF1, generowanych przez u\xBFytkownika, mi\xEAdzy elementami podrz\xEAdnymi a~j\xB9drem logicznym\citep{iowp} (por. \ref{subsec:jjl}). + \item {\bf Obs\xB3uga trybu wy\x9Cwietlania}. Klasy, kt\xF3rych nazwy ko\xF1cz\xB9 si\xEA s\xB3owem ,,Tools'' implementuj\xB9 przyborniki z~narz\xEAdziami do obs\xB3ugi konkretnego trybu wy\x9Cwietlania. Dla przyk\xB3adu pliki View3DTools.h oraz\\View3DTools.cpp opisuj\xB9 elementy \ac{GUI} do sterowania trybem 3D (por \ref{subsec:rfp}). \item Wy\x9Cwietlanie \ac{RE}. Do wy\x9Cwietlania \ac{RE} s\xB3u\xBFy \code{ElementalRulesWidget}, kt\xF3ra wizualizuje dane zebrane przez \code{ElementalRules} (por. \ref{subsec:jmo}). - \item Okienko dialogowe~--- zaimplementowane w~pliku RuleProperties.cpp pozwala ustawia\xE6 regu\xB3y interpretacyjne dla zebranych \ac{RE}. - \item Wy\x9Cwietlanie \ac{FL}. Do wy\x9Cwietlania \ac{FL} s\xB3u\xBFy specjalizowany element \ac{GUI} zaimplementowany w pliku FunctionTable.cpp. - \item Wy\x9Cwietlanie wszystkich tryb\xF3w (por. \ref{subsubsec:twy}) realizowane jest przy pomocy \code{simulationWindow}. + \item {\bf Okienko dialogowe}~--- zaimplementowane w~pliku RuleProperties.cpp pozwala ustawia\xE6 regu\xB3y interpretacyjne dla zebranych \ac{RE}. + \item {\bf Wy\x9Cwietlanie \ac{FL}}. Do wy\x9Cwietlania \ac{FL} s\xB3u\xBFy specjalizowany element \ac{GUI} zaimplementowany w pliku FunctionTable.cpp. + \item {\bf Wy\x9Cwietlanie wszystkich tryb\xF3w}(por. \ref{subsubsec:twy})~--- realizowane jest przy pomocy \code{simulationWindow}. \end{enumerate} Diagram wsp\xF3\xB3pracy \ac{GUI} przedstawiony zosta\xB3 na rysunku \ref{fig:gui}. @@ -188,8 +188,8 @@ \end{table} \begin{enumerate} - \item Interfejs komunikacji mi\xEAdzy modu\xB3em j\xB9dra logicznego a~baz\xB9~--- znajduje si\xEA w~plikach St... [truncated message content] |
From: <le...@us...> - 2007-02-17 02:05:03
|
Revision: 343 http://svn.sourceforge.net/qcell/?rev=343&view=rev Author: lessm Date: 2007-02-16 18:04:27 -0800 (Fri, 16 Feb 2007) Log Message: ----------- Modified Paths: -------------- trunk/qcell/doc/licenciate_thesis/chap6/bTools.png Modified: trunk/qcell/doc/licenciate_thesis/chap6/bTools.png =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-16 23:48:09
|
Revision: 342 http://svn.sourceforge.net/qcell/?rev=342&view=rev Author: dhubleizh Date: 2007-02-16 15:48:05 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - back disabled in OL mode Modified Paths: -------------- trunk/qcell/visgui/MainWindow.cpp trunk/qcell/visgui/MainWindow.h Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-02-16 23:32:16 UTC (rev 341) +++ trunk/qcell/visgui/MainWindow.cpp 2007-02-16 23:48:05 UTC (rev 342) @@ -37,6 +37,9 @@ connect(basetools, SIGNAL(toolsModeUpdate(int)), sw, SLOT(workModeChange(int)) ); + connect(basetools, SIGNAL(toolsModeUpdate(int)), + this, SLOT(localObserver(int)) + ); connect(basetools, SIGNAL(symbolSelected(int)), sw, SLOT(selectSymbol(int)) ); @@ -1749,3 +1752,15 @@ ); } +void MainWindow::localObserver(int mode) +{ + if (mode == 3) + { + action_Back->setDisabled(1); + } + else + { + action_Back->setEnabled(1); + } +} + Modified: trunk/qcell/visgui/MainWindow.h =================================================================== --- trunk/qcell/visgui/MainWindow.h 2007-02-16 23:32:16 UTC (rev 341) +++ trunk/qcell/visgui/MainWindow.h 2007-02-16 23:48:05 UTC (rev 342) @@ -85,6 +85,7 @@ void on_action_Restart_activated(); void loadingSuccess(QString filetype); + void localObserver(int mode); private: simulationWindow* sw; QLCDNumber* iterationLCD; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-16 23:32:23
|
Revision: 341 http://svn.sourceforge.net/qcell/?rev=341&view=rev Author: dhubleizh Date: 2007-02-16 15:32:16 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - in LIF import fill table with 0 instead -1 - maximum symbol adding bug fixed Modified Paths: -------------- trunk/qcell/baseheaders/simulationwindow.h trunk/qcell/basesources/simulationwindow.cpp trunk/qcell/parsers/Life-1.05/Life105ParserPlugin.cpp Modified: trunk/qcell/baseheaders/simulationwindow.h =================================================================== --- trunk/qcell/baseheaders/simulationwindow.h 2007-02-16 22:37:59 UTC (rev 340) +++ trunk/qcell/baseheaders/simulationwindow.h 2007-02-16 23:32:16 UTC (rev 341) @@ -91,7 +91,6 @@ int cycleTable, maxTime, usedSpace; char *storeCurentTable; CalculationData localView; - bool localViewFlag; QList< QVector<int> > dataToCopy; @@ -161,6 +160,7 @@ public: void storeSelectedData(void); void pasteStoredData(void); + bool localViewFlag; //for test only FunctionTable * getFunctionTable(void); @@ -168,6 +168,8 @@ void setSelectedCell(QVector<int> coord); void setSelectedFunctionRule(int index); void clearView(); + int getLocalObserversHistoryCount(); + CalculationData* getLocalObserversCD(int iteration); public slots: void NViewModeChange(int mode); Modified: trunk/qcell/basesources/simulationwindow.cpp =================================================================== --- trunk/qcell/basesources/simulationwindow.cpp 2007-02-16 22:37:59 UTC (rev 340) +++ trunk/qcell/basesources/simulationwindow.cpp 2007-02-16 23:32:16 UTC (rev 341) @@ -639,6 +639,8 @@ item->setCheckState(Qt::Unchecked); } } + + symbolTable->scrollToBottom(); } void simulationWindow::changeSymbol(int x, int y, int z) @@ -1064,14 +1066,19 @@ { symbol.textSybmol = QChar((int)'0' + symbol_nr); } - else if (symbol_nr > 9 && symbol_nr < 'Z'-'A') + else if (symbol_nr > 9 && symbol_nr < (int)('Z'-'A') + 10 + 1) { symbol.textSybmol = QChar((int)'A' + (symbol_nr-10)); } - else if (symbol_nr > 9 && symbol_nr > (int)('Z'-'A') && symbol_nr < (int)('z'-'a')) + else if (symbol_nr > 9 && symbol_nr > (int)('Z'-'A') && symbol_nr < (int)('z'-'a') + 10 + (int)('Z'-'A') + 2) { - symbol.textSybmol = QChar((int)'a' + (symbol_nr - 10)); + symbol.textSybmol = QChar((int)'a' + (symbol_nr - 10 - (int)('Z' - 'A') - 1)); } + else + { + qDebug(tr("To many symbols - cannot add.").toAscii()); + return; + } renderer->addSymbol(symbol); renderer->setSymbolColor(renderer->getSymbolCount()-1, symbol.color); @@ -1690,3 +1697,14 @@ return symbolTable->rowCount(); } +int simulationWindow::getLocalObserversHistoryCount() +{ + return loclaViewMemory.count(); +} + +CalculationData* simulationWindow::getLocalObserversCD(int iteration) +{ + return &loclaViewMemory[iteration]; +} + + Modified: trunk/qcell/parsers/Life-1.05/Life105ParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/Life-1.05/Life105ParserPlugin.cpp 2007-02-16 22:37:59 UTC (rev 340) +++ trunk/qcell/parsers/Life-1.05/Life105ParserPlugin.cpp 2007-02-16 23:32:16 UTC (rev 341) @@ -53,6 +53,7 @@ summed_args.append(i); } lf.setSumArguments(summed_args); + lf.setDefaultValue(0); // Basic sanity check lines = QString(content).split('\n'); @@ -107,21 +108,21 @@ if (conway.exactMatch(lines[0])) { - if (lf.getValueTableSize() == 0) - { +// if (lf.getValueTableSize() == 0) +// { lf.setFunctionValue(1, 2, QVector<int>(1, 1)); lf.setFunctionValue(1, 3, QVector<int>(1, 1)); lf.setFunctionValue(1, 3, QVector<int>(1, 0)); - } - else - { - qDebug(tr("Double function declaration in line %1") - .arg(line_nr) - .toAscii() - ); - - return QString(); - } +// } +// else +// { +// qDebug(tr("Double function declaration in line %1") +// .arg(line_nr) +// .toAscii() +// ); +// +// return QString(); +// } } else if (rule.exactMatch(lines[0])) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-16 22:38:22
|
Revision: 340 http://svn.sourceforge.net/qcell/?rev=340&view=rev Author: dhubleizh Date: 2007-02-16 14:37:59 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - get rid of qDebug while loading KI Modified Paths: -------------- trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-02-16 22:32:17 UTC (rev 339) +++ trunk/qcell/visgui/MainWindow.cpp 2007-02-16 22:37:59 UTC (rev 340) @@ -466,8 +466,7 @@ } file_content = file.readAll(); - qDebug()<<file_content; - file.close(); + file.close(); if (type == "Neighbourhood") { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-02-16 22:32:30
|
Revision: 339 http://svn.sourceforge.net/qcell/?rev=339&view=rev Author: lessm Date: 2007-02-16 14:32:17 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - uge buge Modified Paths: -------------- trunk/qcell/basesources/simulationwindow.cpp Modified: trunk/qcell/basesources/simulationwindow.cpp =================================================================== --- trunk/qcell/basesources/simulationwindow.cpp 2007-02-16 22:26:00 UTC (rev 338) +++ trunk/qcell/basesources/simulationwindow.cpp 2007-02-16 22:32:17 UTC (rev 339) @@ -930,6 +930,7 @@ //maxTime = max(getStorage()->getSizeX(), getStorage()->getSizeY()) + 1; loclaViewMemory.resize(maxTime); + graphicsView2D->setTranslation(0.0f, 0.0f, -50.0f); graphicsView2D->getStorage()->resizeData(getStorage()->getSize(), getStorage()->getDataPointer(), 1); break; @@ -952,7 +953,8 @@ //graphicsView2D->getStorage()->setForeignDataPointer(getStorage()->getDataPointer(), 1); graphicsView2D->getStorage()->resizeData(getStorage()->getSize(), getStorage()->getDataPointer(), 1); - + graphicsView2D->setTranslation(0.0f, 0.0f, -50.0f); + renderer->setTranslation(0.0f, 0.0f, -50.0f); break; } //********** this part is for local view ************************ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-16 22:26:04
|
Revision: 338 http://svn.sourceforge.net/qcell/?rev=338&view=rev Author: dhubleizh Date: 2007-02-16 14:26:00 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - anti FQT shit saving - random colors for new symbols Modified Paths: -------------- trunk/qcell/basesources/simulationwindow.cpp trunk/qcell/parsers/FQT/FQTParserPlugin.cpp Modified: trunk/qcell/basesources/simulationwindow.cpp =================================================================== --- trunk/qcell/basesources/simulationwindow.cpp 2007-02-16 22:20:54 UTC (rev 337) +++ trunk/qcell/basesources/simulationwindow.cpp 2007-02-16 22:26:00 UTC (rev 338) @@ -1056,6 +1056,7 @@ symbol.primitiveID = 0; symbol.hide = 0; int symbol_nr = renderer->getSymbolCount(); + symbol.color = QColor(qrand() % 255, qrand() % 255, qrand() % 255); if (symbol_nr < 10) { @@ -1070,10 +1071,10 @@ symbol.textSybmol = QChar((int)'a' + (symbol_nr - 10)); } renderer->addSymbol(symbol); - renderer->setSymbolColor(renderer->getSymbolCount()-1, QColor(255, 255, 255)); + renderer->setSymbolColor(renderer->getSymbolCount()-1, symbol.color); graphicsView2D->addSymbol(symbol); - graphicsView2D->setSymbolColor(renderer->getSymbolCount()-1, QColor(255, 255, 255)); + graphicsView2D->setSymbolColor(renderer->getSymbolCount()-1, symbol.color); updateSymbolTable(); } Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-16 22:20:54 UTC (rev 337) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-16 22:26:00 UTC (rev 338) @@ -320,7 +320,7 @@ lf.fromXmlString(&content); // Check if we can use the generic type from the XML string - if(!lf.fromXmlString(&content)); + if(!lf.fromXmlString(&content)) { qDebug(tr("Unable to parse out internal data!").toAscii()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-02-16 22:20:55
|
Revision: 337 http://svn.sourceforge.net/qcell/?rev=337&view=rev Author: lessm Date: 2007-02-16 14:20:54 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - colors changed Modified Paths: -------------- trunk/qcell/basesources/Renderer.cpp trunk/qcell/basesources/functiontable.cpp trunk/qcell/parsers/N/NParserPlugin.cpp trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/basesources/Renderer.cpp =================================================================== --- trunk/qcell/basesources/Renderer.cpp 2007-02-16 22:06:58 UTC (rev 336) +++ trunk/qcell/basesources/Renderer.cpp 2007-02-16 22:20:54 UTC (rev 337) @@ -75,7 +75,7 @@ glNewList(greed, GL_COMPILE); glBegin(GL_LINES); - glColor3f(1.0f, 1.0f, 1.0f); + glColor3f(0.0f, 0.0f, 0.0f); float bias = 1.0f; float mx = -storage.getSizeX(), my = -storage.getSizeY(), mz = -storage.getSizeZ(); @@ -167,7 +167,7 @@ void Renderer::initializeGL() { - qglClearColor(QColor(0,0,0)); + qglClearColor(QColor(255,255,255)); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); Modified: trunk/qcell/basesources/functiontable.cpp =================================================================== --- trunk/qcell/basesources/functiontable.cpp 2007-02-16 22:06:58 UTC (rev 336) +++ trunk/qcell/basesources/functiontable.cpp 2007-02-16 22:20:54 UTC (rev 337) @@ -75,6 +75,7 @@ } // Edit proper cell + ui.functionTable->scrollToItem(item); ui.functionTable->editItem(item); } Modified: trunk/qcell/parsers/N/NParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/N/NParserPlugin.cpp 2007-02-16 22:06:58 UTC (rev 336) +++ trunk/qcell/parsers/N/NParserPlugin.cpp 2007-02-16 22:20:54 UTC (rev 337) @@ -6,7 +6,7 @@ * Last Update: wto 28 lis 2006 11:23:55 CET */ #include "NParserPlugin.h" - +#include <QDebug> NParserPlugin::NParserPlugin() { supported_parser_types << "Neighbourhood"; @@ -15,6 +15,8 @@ QString NParserPlugin::realParser(const QByteArray content, const QString type, const QString subtype) { + QString costam(content); + qDebug() << content; QStringList result; // Used to doublecheck the format of a line in file QRegExp format; Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-02-16 22:06:58 UTC (rev 336) +++ trunk/qcell/visgui/MainWindow.cpp 2007-02-16 22:20:54 UTC (rev 337) @@ -466,7 +466,8 @@ } file_content = file.readAll(); - file.close(); + qDebug()<<file_content; + file.close(); if (type == "Neighbourhood") { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-16 22:06:59
|
Revision: 336 http://svn.sourceforge.net/qcell/?rev=336&view=rev Author: dhubleizh Date: 2007-02-16 14:06:58 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - FQT block against REAK functions saving Modified Paths: -------------- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-16 21:53:26 UTC (rev 335) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-16 22:06:58 UTC (rev 336) @@ -320,13 +320,21 @@ lf.fromXmlString(&content); // Check if we can use the generic type from the XML string -// if(!lf.fromXmlString(&content)); -// { -// qDebug(tr("Unable to parse out internal data!").toAscii()); -// -// return QByteArray(); -// } + if(!lf.fromXmlString(&content)); + { + qDebug(tr("Unable to parse out internal data!").toAscii()); + return QByteArray(); + } + else if (lf.getFunctonType() == LocalFunction::SUM_AND_SWITCH) + { + qDebug(tr("This format cannot store this function type.") + .toAscii() + ); + + return QByteArray(); + } + // Header result.append("FQT\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-16 21:53:31
|
Revision: 335 http://svn.sourceforge.net/qcell/?rev=335&view=rev Author: dhubleizh Date: 2007-02-16 13:53:26 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - REAK an ZIFW saving Modified Paths: -------------- trunk/qcell/baseheaders/LocalFunction.h trunk/qcell/parsers/FQT/FQTParserPlugin.cpp trunk/qcell/parsers/REAK/REAKParserPlugin.cpp trunk/qcell/parsers/ZIFW/ZIFWParserPlugin.cpp trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/baseheaders/LocalFunction.h =================================================================== --- trunk/qcell/baseheaders/LocalFunction.h 2007-02-16 19:32:47 UTC (rev 334) +++ trunk/qcell/baseheaders/LocalFunction.h 2007-02-16 21:53:26 UTC (rev 335) @@ -89,7 +89,6 @@ void valueTableFromString(QString *string); void sumArgumentsFromString(QString *string); - QVector<int> valueTranslation(int value); QString valueFormTableToString(int index); @@ -119,6 +118,7 @@ // void setScript(QString scriptData); + QVector<int> valueTranslation(int value); // method set type of function (normally function type is set automatically when setSumArguments, setProductArguments, setSwitchFunction or setScript methosd ar used) void setFunctonType(LocalFunction::FUNCTION_TYPE type); Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-16 19:32:47 UTC (rev 334) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-16 21:53:26 UTC (rev 335) @@ -356,22 +356,34 @@ QDomDocument doc; doc.setContent(content); + qDebug(content.toAscii()); QDomElement root = doc.firstChild().toElement(); - root.removeChild(root.firstChild()); + if (root.firstChild().nodeName() == "LocalFunction") + { + root.removeChild(root.firstChild()); + } QDomElement values = root.firstChild().toElement(); int free_args = lf.getNumberOfArgs() - lf.getSummedArguments().count(); int num_combinations = pow(lf.getAlphabetSize(), free_args); QChar fill_value = values.attribute("FillValue")[0]; int index = 0; QString values_txt = values.text(); + qDebug() << values_txt; values_txt.chop(1); +qDebug() << values_txt; values_txt.remove(0, 1); +qDebug() << values_txt; foreach(QString sum_line, values_txt.split(";\n")) { + qDebug() << sum_line; QStringList tokens = sum_line.split('='); + qDebug() << tokens; QStringList sum_and_free = tokens[0].split('+'); + qDebug() << sum_and_free; QString sum = sum_and_free.takeFirst(); + qDebug() << sum; QStringList free = sum_and_free.first().split(','); + qDebug() << free; if (!fqt.contains(sum)) { Modified: trunk/qcell/parsers/REAK/REAKParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/REAK/REAKParserPlugin.cpp 2007-02-16 19:32:47 UTC (rev 334) +++ trunk/qcell/parsers/REAK/REAKParserPlugin.cpp 2007-02-16 21:53:26 UTC (rev 335) @@ -246,150 +246,50 @@ QByteArray REAKParserPlugin::parseOut(QString content, const QString type, const QString subtype) { /// @todo Write parsing out of REAK - this WILL be hard -// // The resulting array to write to file by the end backend -// QByteArray result; -// // Generic class for parsing out XMLString -// Neighbourhood N; -// QVector<NContainer> neighbours; -// // Number of dimensions -// int dimensions; -// // Maximum found dimensions -// int max_x, max_y,max_z, min_x, min_y, min_z; -// // Needs to be set to 1, as there needs to be at least one of each -// // dimensions for this implementation -// max_x = max_y = max_z = min_x = min_y = min_z = 0; -// -// if(!N.fromXmlString(&content)) -// { -// qDebug(tr("Unable to parse out internal data!").toAscii()); -// } -// -// dimensions = N.getDimension(); -// -// // Filetype and dimensions declaration -// result.append('N'); -// result.append(QString::number(dimensions)); -// result.append('\n'); -// -// // Sizes of dimensions -// // Get out neighbours vector -// neighbours = N.getNeighbours(); -// //Determin the maximum of each supported dimension -// -// for(int i = 0; i < neighbours.size(); i++) -// { -// if(neighbours[i].x > max_x) -// { -// max_x = neighbours[i].x; -// } -// else if (neighbours[i].x < min_x) -// { -// min_x = neighbours[i].x; -// } -// if(dimensions > 1) -// { -// if(neighbours[i].y > max_y) -// { -// max_y = neighbours[i].y; -// } -// else if (neighbours[i].y < min_y) -// { -// min_y = neighbours[i].y; -// } -// } -// else -// { -// neighbours[i].y = 0; -// } -// if(dimensions == 3) -// { -// if (neighbours[i].z > max_z) -// { -// max_z = neighbours[i].z; -// } -// else if (neighbours[i].z < min_z) -// { -// min_z = neighbours[i].z; -// } -// } -// else -// { -// neighbours[i].z = 0; -// } -// } -// -// // Construct a space filled with '-' -// // At least one is needed always, even when the rest of dimensions is 0, -// // that's why the +1 everywhere -// QVector<QVector<QVector<char> > > table((abs(min_z)+max_z+1), -// QVector<QVector<char> >((abs(min_y)+max_y+1), -// QVector<char>((abs(min_x)+max_x+1), '-') -// ) -// ); -// -// // Adding dimensions declaration to file -// if (dimensions == 1) -// { -// result.append('0' + table[0][0].size()); -// } -// else -// { -// result.append('0' + table[0].size()); -// result.append(' '); -// result.append('0' + table[0][0].size()); -// -// if (dimensions == 3) -// { -// result.append(' '); -// result.append('0' + table.size()); -// } -// } -// // and number of neighbours -// result.append(' '); -// result.append(QString::number(N.getNeighbourNumber())); -// result.append('\n'); -// -// // Adding zero points coordinates -// int zero_x, zero_y, zero_z; -// zero_x = abs(min_x); -// zero_y = abs(min_y); -// zero_z = abs(min_z); -// -// result.append('0' + zero_x); -// if(dimensions > 1) -// { -// result.append(' '); -// result.append('0' + zero_y); -// } -// if (dimensions == 3) -// { -// result.append(' '); -// result.append('0' + zero_z); -// } -// result.append('\n'); -// -// // Filling default space with proper points -// for(int i = 0; i < neighbours.size(); i++) -// { -// table[zero_z+neighbours[i].z][zero_y+neighbours[i].y][zero_x+neighbours[i].x] = ('0' + i + 1); -// } -// -// // Creating proper result format -// for (int z = 0; z < table.size(); z++) -// { -// for (int y = 0; y < table[z].size(); y++) -// { -// for ( int x = 0; x < table[z][y].size(); x++) -// { -// result.append(table[z][y][x]); -// } -// -// result.append('\n'); -// } -// } -// - return QByteArray(); + // The resulting array to write to file by the end backend + QByteArray result; + // Generic class for parsing out XMLString + LocalFunction lf; + if(!lf.fromXmlString(&content)) + { + qDebug(tr("Unable to parse out internal data!").toAscii()); + return QByteArray(); + } + else if (lf.getFunctonType() != LocalFunction::SWITCH) + { + qDebug(tr("This format cannot store this function type.") + .toAscii() + ); + + return QByteArray(); + } + + // Filetype + result.append("REAK\n"); + // Function specyfication + result.append(QString("%1 %2\n") + .arg(lf.getAlphabetSize()) + .arg(lf.getNumberOfArgs()) + ); + + QVector<int> tmp_args; + for (int i = 0; i < lf.getValueTableSize(); i++) + { + if (lf.getValueAt(i) > -1) + { + tmp_args = lf.valueTranslation(i); + tmp_args.remove(0, 1); + for (int j = 0; j < tmp_args.count(); j++) + { + result.append(QString::number(tmp_args[j])); + } + + result.append(QString(" %1\n").arg(lf.getValueAt(i))); + } + } + + return result; } Q_EXPORT_PLUGIN2(REAKFileParser, REAKParserPlugin) Modified: trunk/qcell/parsers/ZIFW/ZIFWParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/ZIFW/ZIFWParserPlugin.cpp 2007-02-16 19:32:47 UTC (rev 334) +++ trunk/qcell/parsers/ZIFW/ZIFWParserPlugin.cpp 2007-02-16 21:53:26 UTC (rev 335) @@ -6,7 +6,6 @@ * Last Update: czw lis 30 14:19:22 CET 2006 */ #include "ZIFWParserPlugin.h" -#include <QDebug> ZIFWParserPlugin::ZIFWParserPlugin() { @@ -260,48 +259,72 @@ QByteArray ZIFWParserPlugin::parseOut(QString content, const QString type, const QString subtype) { -// // The resulting array to write to file by the backend -// QByteArray result; -// // Generic type to parse XML request -// LocalFunction lf; -// -// // Check if we can use the generic type from the XML string -// if(!lf.fromXmlString(&content)); -// { -// qDebug(tr("Unable to parse out internal data!").toAscii()); -// -// return QByteArray(); -// } -// -// // Header -// result.append("ZIFW"); -// result.append('\n'); -// -// // Second line -// // Num of args -// result.append(lf.getNumberOfArgs()); -// result.append(' '); -// // Num of arg values -// result.append(lf.getAlphabetSize()); -// result.append(' '); -// // Num of return values -// result.append(lf.getMaxReturnValues()); -// result.append(' '); -// result.append('\n'); -// -// // Third line - summed args -// foreach(int arg, lf.getSummedArguments()) -// { -// result.append(QString::number(arg)[0].toAscii()); -// result.append(','); -// } -// // Get rid of the penging `,' -// result.chop(1); -// result.append('\n'); -// -// /// @todo Main function writing -// - return QByteArray(); + // The resulting array to write to file by the backend + QByteArray result; + // Generic type to parse XML request + LocalFunction lf; + // Multi Map to store this shit + QMultiMap<int, QVector<int> > function; + + // Check if we can use the generic type from the XML string + if(!lf.fromXmlString(&content)) + { + qDebug(tr("Unable to parse out internal data!").toAscii()); + + return QByteArray(); + } + else if (lf.getFunctonType() != LocalFunction::SWITCH) + { + qDebug(tr("This format cannot store this function type.") + .toAscii() + ); + + return QByteArray(); + } + + // Filetype + result.append("REAK\n"); + // Function specyfication + result.append(QString("%1 %2\n") + .arg(lf.getAlphabetSize()) + .arg(lf.getNumberOfArgs()) + ); + + // Map all the values to a map indexed by return value + QVector<int> tmp_args; + for (int i = 0; i < lf.getValueTableSize(); i++) + { + if (lf.getValueAt(i) > -1) + { + tmp_args = lf.valueTranslation(i); + tmp_args.remove(0, 1); + function.insert(lf.getValueAt(i), tmp_args); + } + } + + QVector<int> added_values; + foreach(int key, function.keys()) + { + if (added_values.contains(key)) + { + continue; + } + added_values.append(key); + result.append(QString("%1: {").arg(key)); + foreach(QVector<int> v, function.values(key)) + { + for (int i = 0; i < v.count(); i++) + { + result.append(QString::number(v[i])); + } + result.append(','); + } + // Remove pending ',' + result.chop(1); + result.append("}\n"); + } + + return result; } Q_EXPORT_PLUGIN2(ZIFWFileParser, ZIFWParserPlugin) Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-02-16 19:32:47 UTC (rev 334) +++ trunk/qcell/visgui/MainWindow.cpp 2007-02-16 21:53:26 UTC (rev 335) @@ -652,6 +652,12 @@ } else if (type == "LocalFunction") { +// if (local_function->getFunctonType() != LocalFunction::SUM_AND_SWITCH) +// { +// qDebug(tr("Saving non FQT function is not implemented.").toAscii()); +// return; +// } + if (!function_parsers.contains(subtype)) { qDebug(tr("The file extensions %1 isn't supported.") @@ -1096,14 +1102,23 @@ filters << filter; } fd.setFilters(filters); - fd.setDefaultSuffix("FQT"); +// fd.setDefaultSuffix("FQT"); if(fd.exec()) { if(!fd.selectedFiles().isEmpty()) { - callSaver(fd.selectedFiles().first(), "LocalFunction"); - + QString extension = fd.selectedFilter(); + extension.remove(QRegExp(".*\\(\\*\\.")); + extension.chop(1); + if (!fd.selectedFiles().first().endsWith(extension)) + { + callSaver(fd.selectedFiles().first().append('.').append(extension), "LocalFunction"); + } + else + { + callSaver(fd.selectedFiles().first(), "LocalFunction"); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-16 19:32:49
|
Revision: 334 http://svn.sourceforge.net/qcell/?rev=334&view=rev Author: dhubleizh Date: 2007-02-16 11:32:47 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - automatic symbol table adding and removing Modified Paths: -------------- trunk/qcell/baseheaders/simulationwindow.h trunk/qcell/basesources/Renderer.cpp trunk/qcell/basesources/simulationwindow.cpp trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/baseheaders/simulationwindow.h =================================================================== --- trunk/qcell/baseheaders/simulationwindow.h 2007-02-16 18:13:07 UTC (rev 333) +++ trunk/qcell/baseheaders/simulationwindow.h 2007-02-16 19:32:47 UTC (rev 334) @@ -126,6 +126,7 @@ Ui::simulationWindowClass ui; void back1DTable(); + int getSymbolCount(); protected slots: void zPlaneChange(int i); @@ -140,9 +141,6 @@ void symbolTableChange(int row, int column); void symbolTableColorChange(int row, int column); - void addSymbol(void); - void removeSymbol(void); - void perspectiveUpdate(int mode); void GridView2DEdit(int row, int column); @@ -174,6 +172,8 @@ public slots: void NViewModeChange(int mode); void NViewMaskSet(int maskx, int masky, int maskz); + void addSymbol(void); + void removeSymbol(); }; Modified: trunk/qcell/basesources/Renderer.cpp =================================================================== --- trunk/qcell/basesources/Renderer.cpp 2007-02-16 18:13:07 UTC (rev 333) +++ trunk/qcell/basesources/Renderer.cpp 2007-02-16 19:32:47 UTC (rev 334) @@ -373,13 +373,13 @@ baseSymbols.primitiveID = 0; baseSymbols.textSybmol = '.'; addSymbol(baseSymbols); - setSymbolColor(0, QColor(0,0,0)); + setSymbolColor(0, QColor(255,255,255)); baseSymbols.hide = 0; baseSymbols.primitiveID = 0; baseSymbols.textSybmol = '*'; addSymbol(baseSymbols); - setSymbolColor(1, QColor(255,255,255)); + setSymbolColor(1, QColor(0,0,255)); translation.resize(3); rotation.resize(3); Modified: trunk/qcell/basesources/simulationwindow.cpp =================================================================== --- trunk/qcell/basesources/simulationwindow.cpp 2007-02-16 18:13:07 UTC (rev 333) +++ trunk/qcell/basesources/simulationwindow.cpp 2007-02-16 19:32:47 UTC (rev 334) @@ -1055,7 +1055,20 @@ SYMBOL symbol; symbol.primitiveID = 0; symbol.hide = 0; - symbol.textSybmol = '1'; + int symbol_nr = renderer->getSymbolCount(); + + if (symbol_nr < 10) + { + symbol.textSybmol = QChar((int)'0' + symbol_nr); + } + else if (symbol_nr > 9 && symbol_nr < 'Z'-'A') + { + symbol.textSybmol = QChar((int)'A' + (symbol_nr-10)); + } + else if (symbol_nr > 9 && symbol_nr > (int)('Z'-'A') && symbol_nr < (int)('z'-'a')) + { + symbol.textSybmol = QChar((int)'a' + (symbol_nr - 10)); + } renderer->addSymbol(symbol); renderer->setSymbolColor(renderer->getSymbolCount()-1, QColor(255, 255, 255)); @@ -1669,3 +1682,8 @@ table1DMem->removeRow(table1DMem->rowCount()-1); } +int simulationWindow::getSymbolCount() +{ + return symbolTable->rowCount(); +} + Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-02-16 18:13:07 UTC (rev 333) +++ trunk/qcell/visgui/MainWindow.cpp 2007-02-16 19:32:47 UTC (rev 334) @@ -1560,6 +1560,26 @@ sw->getFunctionTable()->setFunctionPointer(local_function); //************************************************ + int alph_size = local_function->getAlphabetSize(); + int diff = alph_size - sw->getSymbolCount(); + SYMBOL sym; + if (diff > 0) + { + for (int i = 0; i < diff; i++) + { + sym.textSybmol = QChar(sw->getSymbolCount()+ 1 + i); + sw->addSymbol(); + } + } + else if (diff < 0) + { + diff = abs(diff); + for(int i = 0; i < diff; i++) + { + sw->removeSymbol(); + } + } + // Unlock stuff sw->ui.tabWidget->setTabEnabled(5, 1); sw->ui.functionTab->setEnabled(true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-02-16 18:13:15
|
Revision: 333 http://svn.sourceforge.net/qcell/?rev=333&view=rev Author: lessm Date: 2007-02-16 10:13:07 -0800 (Fri, 16 Feb 2007) Log Message: ----------- -neigborhood bug resolved -examples added Modified Paths: -------------- trunk/qcell/basesources/neigborhoodtools.cpp Added Paths: ----------- trunk/qcell/bin/colision.CAE trunk/qcell/bin/colision_example.CAE trunk/qcell/bin/mov2ways.CAE trunk/qcell/bin/speed12.CAE Modified: trunk/qcell/basesources/neigborhoodtools.cpp =================================================================== --- trunk/qcell/basesources/neigborhoodtools.cpp 2007-02-16 15:25:32 UTC (rev 332) +++ trunk/qcell/basesources/neigborhoodtools.cpp 2007-02-16 18:13:07 UTC (rev 333) @@ -18,18 +18,18 @@ connect(ui.maskValue, SIGNAL(valueChanged(int)), SLOT(maskValueSet(int))); - connect(ui.AddNeigborButton, SIGNAL(clicked(bool)), SLOT(addNeigbor(void))); - connect(ui.DelNeigborButton, SIGNAL(clicked(bool)), SLOT(delNeigbor(void))); +// connect(ui.AddNeigborButton, SIGNAL(clicked(bool)), SLOT(addNeigbor(void))); +// connect(ui.DelNeigborButton, SIGNAL(clicked(bool)), SLOT(delNeigbor(void))); mx = my = mz = 0; - ui.neigborTable->setColumnWidth(0, 35); +// ui.neigborTable->setColumnWidth(0, 35); selectedNaigbour = 0; - connect(ui.neigborTable, SIGNAL(cellClicked(int, int)), SLOT(tableChange(int, int))); +// connect(ui.neigborTable, SIGNAL(cellClicked(int, int)), SLOT(tableChange(int, int))); - connect(ui.ClearSelectedButton, SIGNAL(clicked(bool)), SLOT(clearButtonPress())); - connect(ui.SetNButton, SIGNAL(clicked(bool)), SLOT(setButtonPress())); - connect(ui.SetZeroButton, SIGNAL(clicked(bool)), SLOT(setZeroButtonPress())); +// connect(ui.ClearSelectedButton, SIGNAL(clicked(bool)), SLOT(clearButtonPress())); +// connect(ui.SetNButton, SIGNAL(clicked(bool)), SLOT(setButtonPress())); +// connect(ui.SetZeroButton, SIGNAL(clicked(bool)), SLOT(setZeroButtonPress())); } NeigborhoodTools::~NeigborhoodTools() @@ -160,23 +160,23 @@ void NeigborhoodTools::setNeigborNumber(int num) { - ui.neigborTable->setRowCount(num); +// ui.neigborTable->setRowCount(num); } void NeigborhoodTools::addNeigbor(void) { - if(ui.neigborTable->rowCount()<maxNaigbours) - { - ui.neigborTable->setRowCount(ui.neigborTable->rowCount()+1); - } +// if(ui.neigborTable->rowCount()<maxNaigbours) +// { +// ui.neigborTable->setRowCount(ui.neigborTable->rowCount()+1); +// } } void NeigborhoodTools::delNeigbor(void) { - if(ui.neigborTable->rowCount()>1) - { - ui.neigborTable->setRowCount(ui.neigborTable->rowCount()-1); - } +// if(ui.neigborTable->rowCount()>1) +// { +// ui.neigborTable->setRowCount(ui.neigborTable->rowCount()-1); +// } } void NeigborhoodTools::tableChange(int row, int column) Added: trunk/qcell/bin/colision.CAE =================================================================== --- trunk/qcell/bin/colision.CAE (rev 0) +++ trunk/qcell/bin/colision.CAE 2007-02-16 18:13:07 UTC (rev 333) @@ -0,0 +1,71 @@ +<Experiment iterations="8" > +<Neighbourhood> + <Neighbour x="0" /> + <Neighbour x="-1" /> + <Neighbour x="1" /> +</Neighbourhood> +<LocalFunction ArgumentsNumber="3" InputAlphabet="4" > + <Sums> +0; +</Sums> + <Values FillValue="-1" > +0+0,0=0; +0+1,0=1; +0+2,0=0; +0+3,0=1; +0+0,1=0; +0+2,1=0; +0+0,2=2; +0+1,2=3; +0+3,2=3; +0+0,3=2; +0+1,3=3; +0+3,3=3; +1+0,0=0; +1+0,2=3; +2+0,0=0; +2+1,0=3; +3+0,0=0; +3+3,0=0; +3+0,3=0; +</Values> +</LocalFunction> +<CalculationData width="41" fill="0" DataType="char" > + <Section value="1" >4;5;6;</Section> +</CalculationData> +<CalculationData width="41" fill="0" DataType="char" > + <Section value="1" >29;32;</Section> + <Section value="2" >35;38;</Section> +</CalculationData> +<CalculationData width="41" fill="0" DataType="char" > + <Section value="1" >30;33;</Section> + <Section value="2" >34;37;</Section> +</CalculationData> +<CalculationData width="41" fill="0" DataType="char" > + <Section value="1" >31;</Section> + <Section value="2" >36;</Section> + <Section value="3" >33;34;</Section> +</CalculationData> +<CalculationData width="41" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" /> + <Section value="3" >32;35;</Section> +</CalculationData> +<CalculationData width="41" fill="0" DataType="char" > + <Section value="1" >33;36;</Section> + <Section value="2" >31;34;</Section> +</CalculationData> +<CalculationData width="41" fill="0" DataType="char" > + <Section value="1" >37;</Section> + <Section value="2" >30;</Section> + <Section value="3" >33;34;</Section> +</CalculationData> +<CalculationData width="41" fill="0" DataType="char" > + <Section value="1" >35;38;</Section> + <Section value="2" >29;32;</Section> +</CalculationData> +<CalculationData width="41" fill="0" DataType="char" > + <Section value="1" >36;39;</Section> + <Section value="2" >28;31;</Section> +</CalculationData> +</Experiment> Added: trunk/qcell/bin/colision_example.CAE =================================================================== --- trunk/qcell/bin/colision_example.CAE (rev 0) +++ trunk/qcell/bin/colision_example.CAE 2007-02-16 18:13:07 UTC (rev 333) @@ -0,0 +1,14 @@ +<Experiment iterations="0" > +<Neighbourhood> + <Neighbour x="0" /> + <Neighbour x="-1" /> + <Neighbour x="1" /> +</Neighbourhood> +<LocalFunction ArgumentsNumber="3" InputAlphabet="4" > + <Sums> +0; +</Sums> + <Values FillValue="-1" /> +</LocalFunction> +<CalculationData width="30" fill="0" DataType="char" /> +</Experiment> Added: trunk/qcell/bin/mov2ways.CAE =================================================================== --- trunk/qcell/bin/mov2ways.CAE (rev 0) +++ trunk/qcell/bin/mov2ways.CAE 2007-02-16 18:13:07 UTC (rev 333) @@ -0,0 +1,36 @@ +<Experiment iterations="8" > +<Neighbourhood> + <Neighbour x="0" /> + <Neighbour x="-1" /> + <Neighbour x="1" /> +</Neighbourhood> +<LocalFunction ArgumentsNumber="3" InputAlphabet="4" > + <Sums> +0; +</Sums> + <Values FillValue="-1" > +0+0,0=0; +0+1,0=1; +0+2,0=0; +0+0,1=0; +0+0,2=2; +1+0,0=0; +2+0,0=0; +</Values> +</LocalFunction> +<CalculationData width="30" fill="0" DataType="char" /> +<CalculationData width="30" fill="0" DataType="char" /> +<CalculationData width="30" fill="0" DataType="char" /> +<CalculationData width="30" fill="0" DataType="char" /> +<CalculationData width="30" fill="0" DataType="char" /> +<CalculationData width="30" fill="0" DataType="char" /> +<CalculationData width="30" fill="0" DataType="char" /> +<CalculationData width="30" fill="0" DataType="char" > + <Section value="1" >11;</Section> + <Section value="2" >16;</Section> +</CalculationData> +<CalculationData width="30" fill="0" DataType="char" > + <Section value="1" >12;</Section> + <Section value="2" >15;</Section> +</CalculationData> +</Experiment> Added: trunk/qcell/bin/speed12.CAE =================================================================== --- trunk/qcell/bin/speed12.CAE (rev 0) +++ trunk/qcell/bin/speed12.CAE 2007-02-16 18:13:07 UTC (rev 333) @@ -0,0 +1,2542 @@ +<Experiment iterations="720" > +<Neighbourhood> + <Neighbour x="0" /> + <Neighbour x="-1" /> + <Neighbour x="1" /> +</Neighbourhood> +<LocalFunction ArgumentsNumber="3" InputAlphabet="4" > + <Sums> +0; +</Sums> + <Values FillValue="-1" > +0+0,0=0; +0+1,0=0; +0+2,0=0; +0+0,1=0; +0+0,2=1; +1+0,0=2; +2+0,0=0; +</Values> +</LocalFunction> +<CalculationData width="11" fill="0" DataType="char" /> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >7;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >6;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >5;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >4;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >3;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >2;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >1;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >0;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >10;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" /> + <Section value="2" >9;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="char" > + <Section value="1" >8;</Section> +</CalculationData> +<CalculationData width="11" fill="0" DataType="cha... [truncated message content] |
From: <dhu...@us...> - 2007-02-16 15:25:36
|
Revision: 332 http://svn.sourceforge.net/qcell/?rev=332&view=rev Author: dhubleizh Date: 2007-02-16 07:25:32 -0800 (Fri, 16 Feb 2007) Log Message: ----------- - a lot of small changes Modified Paths: -------------- trunk/qcell/baseheaders/neigborhoodtools.ui trunk/qcell/doc/licenciate_thesis/chap1/chap1.tex trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex trunk/qcell/doc/licenciate_thesis/chap5/chap5.tex trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex trunk/qcell/doc/licenciate_thesis/chap7/chap7.tex trunk/qcell/doc/licenciate_thesis/style.tex trunk/qcell/doc/licenciate_thesis/titlepage.tex Modified: trunk/qcell/baseheaders/neigborhoodtools.ui =================================================================== --- trunk/qcell/baseheaders/neigborhoodtools.ui 2007-02-15 13:19:51 UTC (rev 331) +++ trunk/qcell/baseheaders/neigborhoodtools.ui 2007-02-16 15:25:32 UTC (rev 332) @@ -6,7 +6,7 @@ <x>0</x> <y>0</y> <width>145</width> - <height>507</height> + <height>234</height> </rect> </property> <property name="maximumSize" > @@ -16,7 +16,7 @@ </size> </property> <property name="windowTitle" > - <string>NeigborhoodTools</string> + <string>NeigbourhoodTools</string> </property> <layout class="QVBoxLayout" > <property name="margin" > @@ -182,126 +182,6 @@ </layout> </widget> </item> - <item> - <widget class="QGroupBox" name="NeigborhoodGroup" > - <property name="minimumSize" > - <size> - <width>0</width> - <height>270</height> - </size> - </property> - <property name="title" > - <string>Neigborhood</string> - </property> - <layout class="QVBoxLayout" > - <property name="margin" > - <number>9</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QTableWidget" name="neigborTable" > - <property name="columnCount" > - <number>1</number> - </property> - <column/> - </widget> - </item> - <item> - <widget class="QToolButton" name="ClearSelectedButton" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>20</height> - </size> - </property> - <property name="text" > - <string>Clear selected</string> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="SetNButton" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>20</height> - </size> - </property> - <property name="text" > - <string>Set selected</string> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="SetZeroButton" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>20</height> - </size> - </property> - <property name="text" > - <string>Set zero point</string> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="AddNeigborButton" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>20</height> - </size> - </property> - <property name="text" > - <string>Add neigbor</string> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="DelNeigborButton" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>20</height> - </size> - </property> - <property name="text" > - <string>Del neigbor</string> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="toolButton" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>20</height> - </size> - </property> - <property name="text" > - <string>Reload</string> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="toolButton_2" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>20</height> - </size> - </property> - <property name="text" > - <string>Apply</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> </layout> </widget> <layoutdefault spacing="6" margin="11" /> Modified: trunk/qcell/doc/licenciate_thesis/chap1/chap1.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap1/chap1.tex 2007-02-15 13:19:51 UTC (rev 331) +++ trunk/qcell/doc/licenciate_thesis/chap1/chap1.tex 2007-02-16 15:25:32 UTC (rev 332) @@ -11,26 +11,26 @@ \label{sec:ute} Implementowanie symulator\xF3w jest integraln\xB9 cz\xEA\x9Cci\xB9 procesu formu\xB3owania i~dowodzenia nowych teorii. Gdy zdefiniowanie og\xF3lnego modelu opisuj\xB9cego badane zachowanie jest niemo\xBFliwe, przeprowadzenie i~przeanalizowanie pewnej liczby symulacji mo\xBFe prowadzi\xE6 do wyizolowania czynnik\xF3w wp\xB3ywaj\xB9cych na dany proces. W~konsekwencji tworzona jest robocza teoria, kt\xF3r\xB9 nast\xEApnie mo\xBFna pr\xF3bowa\xE6 udoskonala\xE6 lub potwierdzi\xE6 przy pomocy kolejnych eksperyment\xF3w. -Dziedzin\xB9 w kt\xF3rej mo\xBFna wykorzysta\xE6 komputerowe symulowanie jest \ac{DSZ}. \ac{AK} jest modelem \ac{DSZ}. Zbudowanie odpowiedniego narz\xEAdzia do przeprowadzania eksperyment\xF3w na modelach kom\xF3rkowych jest celowe ze wzgl\xEAdu na wk\xB3ad w badanie samej dziedziny \ac{AK} jak i w szerszej perspektywie \ac{DSZ}. W \x9Cwietle spekulacji, i\xBF mechanik\xEA rz\xB9dz\xB9c\xB9 wszech\x9Cwiatem mo\xBFna zamodelowa\xE6 w postaci regu\xB3 \ac{AK}, badanie tej dziedziny mo\xBFe prowadzi\xE6 do rozwi\xB9zania niekt\xF3rych z problem\xF3w nowoczesnej nauki, jak mechanika kwantowa, hydro- i termodynamika, czy wreszcie badania interakcji AIDS z systemem immunologicznym cz\xB3owieka\citep{aica}. +Dziedzin\xB9 w kt\xF3rej mo\xBFna wykorzysta\xE6 komputerowe symulowanie jest \ac{DSZ}. \ac{AK} jest modelem \ac{DSZ}. Zbudowanie odpowiedniego narz\xEAdzia do przeprowadzania eksperyment\xF3w na modelach kom\xF3rkowych jest celowe ze wzgl\xEAdu na wk\xB3ad w badanie samej dziedziny \ac{AK} jak i w szerszej perspektywie \ac{DSZ}. Ponadto symulatory \ac{AK} maj\xB9 swoje praktyczne zastosowania, jak modelowanie aglomeracji miejskich~--- \x9Cledzenie rozmieszczenia mieszka\xF1c\xF3w i korelowanie z przest\xEApstwami, wizualizowanie proces\xF3w biologicznych, jak np. erozja ko\x9Cci, symulowanie zachowania gaz\xF3w, czy rozprzestrzeniania si\xEA po\xBFar\xF3w las\xF3w\citep{aica}. Powy\xBFsze rozumowanie doprowadzi\xB3o do stworzenia pewnej liczby symulator\xF3w. Skupi\xB3y si\xEA one jednak g\xB3\xF3wnie na zaprezentowaniu samej idei \ac{AK}, b\xB9d\x9F na przedstawieniu wybranego, zwykle bardzo w\xB9skiego, zakresu ich dzia\xB3ania. W~literaturze oraz w~internecie nie pojawi\xB3a si\xEA dotychczas inicjatywa opracowania i~zaimplementowania systemu pozwalaj\xB9cego bezpo\x9Crednio por\xF3wnywa\xE6 r\xF3\xBFne typy i modele \ac{AK}. Dzisiejsze systemy komputerowe pozwalaj\xB9 na prowadzenie skomplikowanych oblicze\xF1 w~kr\xF3tkim czasie. Szczeg\xF3lnie na polu tr\xF3jwymiarowej grafiki komputerowej ostatnie lata pe\xB3ne by\xB3y innowacji wielokrotnie zwi\xEAkszaj\xB9cych mo\xBFliwo\x9Cci zwyk\xB3ych komputer\xF3w osobistych. Jest to idealne pod\xB3o\xBFe do pr\xF3by stworzenia symulatora \ac{AK} wykorzystuj\xB9cego mo\xBFliwo\x9Cci sprz\xEAtowe do zaprezentowania nowej jako\x9Cci wizualizacji tr\xF3jwymiarowych proces\xF3w kom\xF3rkowych. Punktem wyj\x9Ccia do podj\xEAcia tematu by\xB3y zaj\xEAcia z przedmiotu ,,Modele system\xF3w dyskretnych'' prowadzone przez dr Paw\xB3a Siwaka\citep{siwy,sicw}. Zosta\xB3y tam wprowadzone i przedstawione kluczowe poj\xEAcia stwarzaj\xB9ce mo\xBFliwo\x9Cci realizacji symulatora modeli kom\xF3rkowych ze znacznymi ulepszeniami funkcjonalnymi, w stosunku do symulator\xF3w znanych z literatury. Do poj\xEA\xE6 tych nale\xBF\xB9: \begin{itemize} -\item chwila zero, nast\xEApna -\item dobieranie modelu, s\xB9siedztw, funkcji -\item funkcja (quasi-)totalistyczna -\item integralno\x9C\xE6 modelu \ac{AK} -\item interpretacja obrazu przetwarzania -\item konfiguracja bie\xBF\xB9ca, nast\xEApna, poczatkowa -\item obserwator lokalny -\item regu\xB3y elementarne + \item idea obserwatora lokalnego i obraz\xF3w dla r\xF3\xBFnych maksymalnych pr\xEAdko\x9Cci propagacji sygna\xB3u $c$ + \item idea cz\xEA\x9Cciowej totalizacji funkcji (funkcje quasi- i wielototalistyczne) + \item rozr\xF3\xBFnienie diagram\xF3w ST i TS + \item parametr przesuni\xEAcia $q$ na diagramach 1-D + \item zasada oddzielania alfabetu symboli (stany kom\xF3rek) od atrybut\xF3w ich wizualizacji znakowej i graficznej (st\xB9d interpretacja symboli w przetwarzancyh konfiguracjach) + \item poj\xEAcie regu\xB3y elementarnej (RE), 5 poziom\xF3w oblicze\xF1 w modelach AK oraz wyznaczanie regu\xB3 modelu LAK metod\xB9 przeszukiwania z nawrotami + \item standaryzacja opis\xF3w s\xB9siedztwa i funkcji lokalnych w plikach (formaty: N1, N2, N3 oraz FQT, FMT) + \item idea symbolu zast\xEApczego dla funkcji i konfiguracji nie w pe\xB3ni okre\x9Clonych \end{itemize} \section{Podzia\xB3 zada\xF1 szczeg\xF3\xB3owych} \label{sec:pzs} -Zakres pracy podzielony zosta\xB3 na dwie cz\xEA\x9Cci. Cz\xEA\x9C\xE6 pierwsz\xB9 wykona\xB3 Cezary Krzy\xBFanowski, cz\xEA\x9C\xE6 drug\xB9~--- Leszek Smentek. Podzia\xB3 oraz om\xF3wienie zada\xF1 szczeg\xF3\xB3owych znajduje si\xEA w~rozdzia\xB3ach \ref{subsec:ck} oraz \ref{subsec:lsm}. +Zakres pracy podzielony zosta\xB3 na dwie cz\xEA\x9Cci. Cz\xEA\x9C\xE6 pierwsz\xB9 wykona\xB3 Cezary Krzy\xBFanowski, cz\xEA\x9C\xE6 drug\xB9~--- Leszek Smentek. Podzia\xB3 oraz om\xF3wienie zada\xF1 szczeg\xF3\xB3owych znajduje si\xEA w~sekcjach \ref{subsec:ck} oraz \ref{subsec:lsm}. \subsection{Zadania szczeg\xF3\xB3owe - cz\xEA\x9C\xE6 pierwsza} \label{subsec:ck} @@ -45,7 +45,7 @@ Przez \x9Crodki intensyfikacji eksperyment\xF3w rozumiane s\xB9 dodatkowe narz\xEAdzia i~tryby wspomagaj\xB9ce zmiany w~modelu, b\xB9d\x9F danych, na bie\xBF\xB9co. Zadanie polega na ich zaprojektowaniu i zaimplementowaniu w budowanym pakiecie programowym (por. \ref{subsubsec:ddm}). \subsubsection{Testy programu} -Przeprowadzone zostan\xB9 dwie fazy test\xF3w. W~pierwszej fazie pakiet przetestowany zostanie pod wzgl\xEAdem poprawno\x9Cci prowadzonych oblicze\xF1 oraz zgodno\x9Cci z~ustalon\xB9 wcze\x9Cniej list\xB9 funkcji(por. \ref{sec:syn} oraz \ref{sec:pob}). W drugiej fazie pakiet zostanie poddany testom wydajno\x9Cciowym oraz subiektywnym testom ergonomii u\xBFytkowania (por. \ref{sec:wyd} oraz \ref{sec:eu\xBF}). +Przeprowadzone zostan\xB9 dwie fazy test\xF3w. W~pierwszej fazie pakiet przetestowany zostanie pod wzgl\xEAdem poprawno\x9Cci prowadzonych oblicze\xF1 oraz zgodno\x9Cci z~ustalon\xB9 wcze\x9Cniej list\xB9 funkcji(por. \ref{sec:syn} oraz \ref{sec:pob}). W drugiej fazie pakiet zostanie oceniony pod wzgl\xEAdem wizualizacji na tle istniej\xB9cych rozwi\xB9za\xF1 oraz poddany testom ergonomii u\xBFytkowania (por. \ref{subsec:owp} oraz \ref{sec:eu\xBF}). \subsectionauthor{Leszek Smentek}{Zadania szczeg\xF3\xB3owe - cz\xEA\x9C\xE6 druga} \label{subsec:lsm} @@ -57,7 +57,7 @@ Przez \x9Crodki doboru danych rozumiany jest zestaw narz\xEAdzi pakietu pozwalaj\xB9cych na swobodn\xB9 generacj\xEA danych eksperymentu oraz podstawowe mo\xBFliwo\x9Cci edycji. \subsubsection {Wizualizacja i tryby eksperyment\xF3w dla r\xF3\xBFnych obserwator\xF3w} -To zadanie szczeg\xF3\xB3owe ma na celu implementacje efektywnej i czytelnej metody wizualizacji prowadzonego eksperymentu zar\xF3wno dla obserwatora globalnego, jak i trybu obserwatora lokalnego. +To zadanie szczeg\xF3\xB3owe ma na celu implementacje efektywnej i czytelnej metody wizualizacji przebiegu przetwarzania zar\xF3wno dla obserwatora globalnego, jak i trybu obserwatora lokalnego. \subsubsection {Opracowanie i wdro\xBFenie \x9Crodk\xF3w dokumentowania eksperyment\xF3w} Powy\xBFsze zadanie szczeg\xF3\xB3owe ma na celu opracowanie metod dokumentowania eksperyment\xF3w umo\xBFliwiaj\xB9cych prezentacje wynik\xF3w symulacji niezale\xBFnie od pakietu. Modified: trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-15 13:19:51 UTC (rev 331) +++ trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-16 15:25:32 UTC (rev 332) @@ -30,7 +30,7 @@ Przekszta\xB3cenie aktualnego stanu \ac{AK}, {\bf tj. \ac{KB}}, w stan kolejny, {\bf tj. \ac{KN}}, stosuj\xB9c \ac{FL} dla ka\xBFdej kom\xF3rki $\alpha$ jednocze\x9Cnie nazywamy {\bf iteracj\xB9}\citep{si13,siwy}. -Par\xEA w postaci uporz\xB9dkowanego ci\xB9gu stan\xF3w s\xB9siad\xF3w oraz stanu nast\xEApnego kom\xF3rki jaki ten stan implikowanego przez \ac{FL} nazywamy {\bf \ac{RE}}\citep{siit}. +Par\xEA w postaci uporz\xB9dkowanego ci\xB9gu stan\xF3w s\xB9siad\xF3w oraz stanu nast\xEApnego kom\xF3rki jaki ten stan implikuje przez \ac{FL} nazywamy {\bf \ac{RE}}\citep{siit}. Okre\x9Claj\xB9c liczb\xEA przekszta\xB3ce\xF1 \ac{KB} w \ac{KN} m\xF3wimy o {\bf liczbie iteracji}, b\xB9d\x9F o {\bf pokoleniu \ac{AK}}. Aby przedstawi\xE6 przetwarzanie kom\xF3rkowe w czasie definiujemy {\bf chwil\xEA bie\xBF\xB9c\xB9} dla \ac{KB}, oraz o {\bf chwil\xEA nast\xEApn\xB9} dla \ac{KN}. By okre\x9Cli\xE6 punkt odniesienia w czasie u\xBFywamy poj\xEAcia {\bf chwila zero} przetwarzania dla okre\x9Clenia pocz\xB9tku symulacji\citep{siwy}. @@ -60,7 +60,7 @@ \begin{trivlist} \item $|\ac{RE}|$~--- liczno\x9C\xE6 zbioru \ac{RE} \item $|A|$~--- moc alfabetu -\item $|N|$~--- liczno\x9C\xE6 ci\xB9gu s\xB9siad\xF3w definiowanego przez \ac{N} +\item $|N|$~--- d\xB3ugo\x9C\xE6 ci\xB9gu s\xB9siad\xF3w definiowanego przez \ac{N} \end{trivlist} Na podstawie wzoru \ref{equ:ain} mo\xBFna zauwa\xBFy\xE6, i\xBF ju\xBF dla stosunkowo ma\xB3ego alfabetu i s\xB9siedztwa, liczba mo\xBFliwych \ac{RE} przybiera stosunkowo du\xBF\xB9 warto\x9C\xE6. Np. dla s\xB9siedztwa w \ac{TAK} w postaci sze\x9Ccianu 3x3x3 (dwudziestu siedmiu s\xB9siad\xF3w) i binarnego alfabetu liczba mo\xBFliwych \ac{RE} wynosi $2^{27}$, czyli ponad 130 milion\xF3w. Konieczno\x9C\xE6 definiowana tak licznych zbior\xF3w \ac{RE} przez operatora jest nie do przyj\xEAcia, w zwi\xB9zku z tym korzysta si\xEA z innych format\xF3w. @@ -150,16 +150,15 @@ \subsubsection{Zestawienie technik obrazowania przetwarzania kom\xF3rkowego} \label{subsubsec:ztopk} -W punkcie tym przedstawione zosta\xB3y podstawowe techniki obrazowania. +W punkcie tym przedstawione zosta\xB3y niekt\xF3re techniki obrazowania. -\paragraph{dST} Pierwsz\xB9 technik\xB9 jest diagram dST, czyli odk\xB3adanie kolejnych stan\xF3w (S) na osi $OX$ oraz kolejnych \ac{KB} na osi czasu $OY$. Ten typ diagramu przeznaczony jest do prezentowania przetwarzania \ac{LAK}. +\begin{description} + \item[dST] Pierwsz\xB9 technik\xB9 jest diagram dST, czyli odk\xB3adanie kolejnych stan\xF3w (S) na osi $OX$ oraz kolejnych \ac{KB} na osi czasu $OY$. Ten typ diagramu przeznaczony jest do prezentowania przetwarzania \ac{LAK}. + \item[dTS] Jest to diagram koncepcyjnie podobny do diagramu dST. Polega na odk\xB3adaniu kolejnych stan\xF3w na osi $OY$ oraz kolejnych iteracji na osi $OX$. Podobnie jak diagram dST przeznaczony jest do obrazowania przetwarzania w modelu \ac{LAK}. + \item[Plansza]Dla dwuwymiarowych \ac{AK} diagramy dST i dTS nie s\xB9 czytelne. W zwi\xB9zku z tym konfiguracje \ac{DAK} przedstawiane s\xB9 na dwuwymiarowych planszach (pikslowych lub znakowych~--- por. \ref{subsubsec:twy}). W celu przedstawienia zmian w \ac{DAK}, mo\xBFna umieszcza\xE6 kolejne konfiguracje obok siebie, zaznaczaj\xB9c przy tym chwile czasowe, w kt\xF3rych dana konfiguracja wyst\xB9pi\xB3a. + \item[Sze\x9Ccian] W przypadku \ac{TAK} najprostsz\xB9 technik\xB9 wizualizowania jest przyj\xEAcie sze\x9Ccianu jako kszta\xB3tu reprezentuj\xB9cego kom\xF3rk\xEA. Ten spos\xF3b wizualizowania jest intuicyjny dla obserwatora, lecz wprowadza pewne ograniczenia. Mianowicie w naturalny spos\xF3b sze\x9Ccian implikuje posiadanie dok\xB3adnie sze\x9Cciu s\xB9siad\xF3w umiejscowionych prostopadle do ka\xBFdej ze \x9Ccian. W og\xF3lno\x9Cci model \ac{TAK} mo\xBFe definiowa\xE6 inne s\xB9siedztwo. +\end{description} -\paragraph{dTS} Jest to diagram koncepcyjnie podobny do diagramu dST. Polega na odk\xB3adaniu kolejnych stan\xF3w na osi $OY$ oraz kolejnych iteracji na osi $OX$. Podobnie jak diagram dST przeznaczony jest do obrazowania przetwarzania w modelu \ac{LAK}. - -\paragraph{plansza} Dla dwuwymiarowych \ac{AK} diagramy dST i dTS nie s\xB9 czytelne. W zwi\xB9zku z tym konfiguracje \ac{DAK} przedstawiane s\xB9 na dwuwymiarowych planszach (pikslowych lub znakowych~--- por. \ref{subsubsec:twy}). W celu przedstawienia zmian w \ac{DAK}, mo\xBFna umieszcza\xE6 kolejne konfiguracje obok siebie, zaznaczaj\xB9c przy tym chwile czasowe, w kt\xF3rych dana konfiguracja wyst\xB9pi\xB3a. - -\paragraph{sze\x9Ccian} W przypadku \ac{TAK} najprostsz\xB9 technik\xB9 wizualizowania jest przyj\xEAcie sze\x9Ccianu jako kszta\xB3tu reprezentuj\xB9cego kom\xF3rk\xEA. Ten spos\xF3b wizualizowania jest intuicyjny dla obserwatora, lecz wprowadza pewne ograniczenia. Mianowicie w naturalny spos\xF3b sze\x9Ccian implikuje posiadanie dok\xB3adnie sze\x9Cciu s\xB9siad\xF3w umiejscowionych prostopadle do ka\xBFdej ze \x9Ccian. W og\xF3lno\x9Cci model \ac{TAK} mo\xBFe definiowa\xE6 inne s\xB9siedztwo. - \subsubsection{Tryby wizualizowania konfiguracji bie\xBF\xB9cej} \label{subsubsec:twy} @@ -207,7 +206,7 @@ \subsubsection{Historia przetwarzania} \label{subsubsec:hit} -Przechowywanie ca\xB3ej historii przetwarzania pozwala na powr\xF3t do wcze\x9Cniejszych iteracji i dok\xB3adnej analizy, lub zmiany modelu lub danych \ac{AK}. W tym celu pakiet powinien udost\xEApni\xE6 p\xB3ynne poruszanie si\xEA wstecz historii iteracji, edycj\xEA \ac{KB} i~wznowienie symulacji od momentu zmiany. +Przechowywanie ca\xB3ej historii przetwarzania pozwala na powr\xF3t do wcze\x9Cniejszych iteracji i dok\xB3adnej analizy, lub zmiany modelu albo danych \ac{AK}. W tym celu pakiet powinien udost\xEApni\xE6 p\xB3ynne poruszanie si\xEA wstecz historii iteracji, edycj\xEA \ac{KB} i~wznowienie symulacji od momentu zmiany. W~sytuacji idealnej pakiet przechowywa\xB3by ca\xB3a histori\xEA przetwarzania, \xB3\xB9cznie z~rozga\xB3\xEAzieniami wynikaj\xB9cymi z~powrot\xF3w i~zmian, oraz p\xB3ynne poruszanie si\xEA po niej. Modified: trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-15 13:19:51 UTC (rev 331) +++ trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-16 15:25:32 UTC (rev 332) @@ -10,7 +10,7 @@ Pakiet daje mo\xBFliwo\x9C\xE6 utrwalania efekt\xF3w eksperyment\xF3w w nast\xEApuj\xB9cych trybach: \begin{itemize} \item zapis poszczeg\xF3lnych element\xF3w modelu do osobnych plik\xF3w(KI, N, FL) -\item zapis konfiguracji bie\xBF\xB9cej wraz z historiom przetwarzania do pojedy\xF1czego pliku +\item zapis konfiguracji bie\xBF\xB9cej wraz z histori\xB9 przetwarzania do pojedynczego pliku \item eksport konfiguracji do pliku LIF \end{itemize} @@ -38,7 +38,7 @@ \subsubsection{Edycja KI} Pakiet daje mo\xBFliwo\x9C\xE6 edycji konfiguracji bie\xBF\xB9cej oraz posiada zestaw narz\xEAdzi wspomagaj\xB9cych(wype\xB3nianie obszar\xF3w, kopiowanie/wklejanie obszar\xF3w). -\subsubsection{Wymiana danych ze popularnymi pakietami} +\subsubsection{Wymiana danych z popularnymi pakietami} Aplikacja umo\xBFliwia zapis/odczyt plik\xF3w w formacie "lif" i "life". \subsubsection {Tryby obserwatora} @@ -79,7 +79,7 @@ \item do czterech liczb ca\xB3kowitych: \textit{W K S n} - okre\x9Clenie liczby wierszy, kolumn, \x9Ccian oraz s\xB9siad\xF3w. \item $W_{od} K_{od}, S_{od}$: pozycja odniesienia, od 0 (oznacza po\xB3o\xBFenie okna, lub miejsce zapisu jego wyniku). \end{itemize} -Pozosta\xB3e wiersze podaj\xB9 numery porz\xB9dkowe i rozmieszczenie s\xB9siad\xF3w w tablicy d wymiarowej (liczby od 1 do n). Kolejno\x9C\xE6 \x9Ccian: \textit{s}=0, \textit{s}=1, ..., \textit{s}=\textit{S}-1. +Pozosta\xB3e wiersze podaj\xB9 numery porz\xB9dkowe i rozmieszczenie s\xB9siad\xF3w w tablicy d-wymiarowej (liczby od 1 do n). Kolejno\x9C\xE6 \x9Ccian: \textit{s}=0, \textit{s}=1, ..., \textit{s}=\textit{S}-1. \end{itemize} \item konfiguracja inicjalna Modified: trunk/qcell/doc/licenciate_thesis/chap5/chap5.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap5/chap5.tex 2007-02-15 13:19:51 UTC (rev 331) +++ trunk/qcell/doc/licenciate_thesis/chap5/chap5.tex 2007-02-16 15:25:32 UTC (rev 332) @@ -42,56 +42,14 @@ Dodatkowo zwr\xF3cono uwag\xEA na brak ikon/kursor\xF3w u\xB3atwiaj\xB9cych odgadni\xEAcie przeznaczenia poszczeg\xF3lnych tryb\xF3w i~opcji. -\section{Wydajno\x9Cci} -\label{sec:wyd} -Testy wydajno\x9Cci zosta\xB3y przeprowadzone z uwagi na dwa aspekty. Po pierwsze podczas pierwszych pr\xF3b u\xBFytkowania pakietu zarejestrowano znaczy spadek pr\xEAdko\x9Cci generowania kolejnych iteracji przy w\xB3\xB9czonym trybie rejestrowania \ac{RE} (por. \ref{subsubsec:rel}). Po drugie przeci\xEAtne komputery osobiste, nie wykorzystywane do gier komputerowych, nie s\xB9 wyposa\xBFone w zaawansowane uk\xB3ady graficzne, wi\xEAc b\xB3\xEAdem by\xB3oby uzale\xBFnia\xE6 dzia\xB3anie programu od stosunkowo nowego standardu OpenGL 2.0. Standard ten w pe\xB3ni spe\xB3niaj\xB9 jedynie najnowsze uk\xB3ady graficzne. +\subsection{Ocena wizualizacji pakietu} +\label{subsec:owp} +Ocena zaimplementowanego symulatora powsta\xB3a w wyniku por\xF3wnania z mo\xBFliwo\x9Cciami program\xF3w wymienionych w sekcji \ref{sec:pmz}. -\subsection{Platforma testowa} -\label{subsec:pte} -Do test\xF3w wykorzystano komputer przeno\x9Cny firmy IBM, model T42. Parametry komputera testowego zebrane s\xB9 w~tabeli \ref{tab:ppt}. +Dwie podstawowe cechy wyr\xF3\xBFniaj\xB9 zbudowany symulator na tle ju\xBF istniej\xB9cych, mianowicie wizualizacja \ac{TAK} oraz wizualizacja przetwarzania z \ac{OL}. Jak model \ac{TAK} jest znany w literaturze oraz podj\xEAto ju\xBF pr\xF3by obrazowania przetwarzania tr\xF3jwymiarowego, tak koncepcja \ac{OL} jest unikalna dla powsta\xB3ego pakietu programowego\citep{siim,siwy}. -\begin{table}[!htp] - \caption{Parametry platformy testowej\hspace*{\textwidth}} - \centering - \begin{tabular}{l @{ }@{ }@{ }@{ } p{20em}} - Procesor & Intel Pentium M 1.7GHz \\ - \hline - Pami\xEA\xE6 & DDR 1024MB \\ - \hline - Karta graficzna & ATI Technologies Inc. Radeon Mobility M7 (Radeon Mobility 7500) \\ - \hline - System operacyjny & PLD Linux 2.99 (Th) - \end{tabular} - \label{tab:ppt} -\end{table} +Ponadto interpretowanie wyniku przetwarzania, jako jedno z podstawowych wymaga\xF1 ,,idealnego symulatora'', zosta\xB3o zrealizowane w omawianym symulatorze najpe\xB3niej. Analizowane aplikacje zawieraj\xB9 elementy interpretacji, jednak s\xB9 one niejako uboczn\xB9 kwesti\xB9 i zwykle k\xB3opotliw\xB9 w obs\xB3udze przez operatora (np. definiowanie kolor\xF3w w plikach). Interpretowanie za pomoc\xB9 znak\xF3w nie zosta\xB3o zaimplementowane w \xBFadnym z testowanych symulator\xF3w. Tryb tekstowy jest r\xF3wnie\xBF cech\xB9 unikaln\xB9 zrealizowanego pakietu. -Wszelkie tryby oszcz\xEAdzania energii zosta\xB3y wy\xB3\xB9czone. Komputer dzia\xB3a\xB3 z~maksymaln\xB9 mo\xBFliw\xB9 pr\xEAdko\x9Cci\xB9. +Programy z sekcji \ref{sec:pmz} implementuj\xB9 tylko po jednym trybie wizualizowania. Zbudowany symulator oferuje 2 tryby graficzne (dla modeli \ac{TAK} i {DAK}) oraz dwa modele tekstowe (dla modeli \ac{DAK} oraz \ac{LAK}). Jedynie obrazowanie opartych na grafach \ac{AK}, oferowane przez program DDLab, nie zosta\xB3o zrealizowanie. -\subsection{Procedura testowa} -\label{subsec:pte} -Wykorzystano scenariusze stworzone na potrzeby test\xF3w poprawno\x9Cci oblicze\xF1 z~rozdzia\xB3u \ref{sec:pob}. Dla ka\xBFdego z~obiekt\xF3w przeprowadzono 10,000 iteracji. Kluczowym parametrem by\xB3 czas, mierzony osobno dla tryb\xF3w graficznych, jak i~tekstowych. - -\subsection{Automaty jednowymiarowe} -\label{subsec:aje} - - \x8Crednia z wynik\xF3w wszystkich pomiar\xF3w wynosi dwie minuty i~czterdzie\x9Cci sekund. Zauwa\xBFalna jest wyra\x9Fna zale\xBFno\x9C\xE6 wydajno\x9Cci od liczby wierszy widocznych na ekranie. Spowodowane jest to znacznym nak\xB3adem potrzebnym do uaktualniania ca\xB3o\x9Cci tabeli, w~kt\xF3rej wy\x9Cwietlone s\xB9 kolejne iteracje. Z~ka\xBFdym nowym wierszem pojawiaj\xB9cym sie na ekranie przetwarzanie wyra\x9Fnie zwalnia, a\xBF dociera do momentu zape\xB3nienia ca\xB3ej dost\xEApnej przestrzeni. Nast\xEApnie przetwarzanie obywa si\xEA ze sta\xB3a pr\xEAdko\x9Cci\xB9, w~zasadzie niezale\xBFn\xB9 od ilo\x9Cci przechowywanych iteracji. - -Tryb rejestrowania \ac{RE} nie wp\xB3ywa znacz\xB9co na pr\xEAdko\x9C\xE6 oblicze\xF1 \ac{LAK} (w~por\xF3wnaniu do wielowymiarowych \ac{AK}). - -\subsection{Automaty dwuwymiarowe} -\label{subsec:adw} - -Tryb tekstowy dwuwymiarowych \ac{AK} osi\xB9ga\xB3 podobne rezultaty do \ac{LAK}. Czasy nieco si\xEA wyd\xB3u\xBFy\xB3y i~wynios\xB3y \x9Crednio trzy minuty i dwadzie\x9Ccia dwie minuty. Spos\xF3b prezentacji danych, identyczny do trybu jednowymiarowego, charakteryzuje si\xEA tym samym spowalnianiem do momentu ca\xB3kowitego wype\xB3nienia ekranu. - -Graficzna reprezentacja \ac{DAK}, a~co za tym idzie wykorzystanie karty graficznej do uaktualniania stanu kom\xF3rek, zdecydowanie poprawia wyniki. Czas trwania eksperymentu spad\xB3 \x9Crednio o~$23\%$ i wyni\xF3s\xB3 dwie minuty i~czterdzie\x9Cci trzy sekundy, rekompensuj\xB9c tym samym przyrost oblicze\xF1 wynikaj\xB9cych z~dodatkowego wymiaru. - -Rejestrowanie \ac{RE} zauwa\xBFalnie wyd\xB3u\xBFa czas obliczania pojedynczej iteracji. Wynika to przede wszystkim ze znacznego wzrostu liczby \ac{RE} generowanych przez \ac{DAK}. Wp\xB3yw ten jest jednakowy zar\xF3wno dla trybu tekstowego, jak i~graficznego. - -\subsection{Automaty tr\xF3jwymiarowe} -\label{subsec:atr} - -W~przypadku \ac{TAK} dost\xEApny jest jedynie tryb graficzny. Osi\xB9gni\xEAte wyniki s\xB9 do\x9C\xE6 kontrowersyjne i~sprzeczne na pierwszy rzut oka. \x8Credni czas trwania eksperymentu nie przekracza\xB3 trzech minut i~dziesi\xEAciu sekund. Wydawa\xE6 by si\xEA mog\xB3o, i\xBF wprowadzenie trzeciego wymiaru zdecydowanie pogorszy osi\xB9gi programu. Jednak\xBFe nowoczesne karty graficzne optymalizowane s\xB9 pod wzgl\xEAdem przetwarzania grafiki 3D. Nowe rozwi\xB9zania sprz\xEAtowe i~algorytmiczne nie s\xB9 wykorzystywane do wy\x9Cwietlania grafiki 2D. Zysk wynikaj\xB9cy z~ukierunkowania uk\xB3ad\xF3w graficznych jest szczeg\xF3lnie widoczny, gdy podczas przeprowadzania testu wydajno\x9Cci opr\xF3cz prowadzenia oblicze\xF1 dodatkowo manipulujemy wy\x9Cwietlaniem. Powoduje to znaczny spadek og\xF3lnej wydajno\x9Cci w~trybie 2D, podczas gdy tryb tr\xF3jwymiarowy w~zasadzie nie jest widocznie spowolniony, a~jedyne op\xF3\x9Fnienia wynikaj\xB9 raczej z~procedur obs\xB3ugi ruch\xF3w myszki, ni\xBF z~samych manipulacji. - -Natomiast tworzenie listy \ac{RE} w~bardzo znacz\xB9cy spos\xF3b pogarsza osi\xB9gi. Pr\xEAdko\x9C\xE6 spada do $25\%$. Przetwarzanie zwalania do tego stopnia, i\xBF wyra\x9Fnie wida\xE6 przerwy mi\xEAdzy ka\xBFd\xB9 pojedyncz\xB9 iteracj\xB9. Liczba \ac{RE} tworzona w~modelu \ac{TAK} stanowi znaczn\xB9 cz\xEA\x9C\xE6 og\xF3lnej liczby kom\xF3rek do obliczenia. - % vim:fencs=cp1250:fenc=cp1250 Modified: trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-15 13:19:51 UTC (rev 331) +++ trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-16 15:25:32 UTC (rev 332) @@ -43,7 +43,7 @@ \item About - informacje o pakiecie \end{itemize} \subsubsection{Help} -Menu "Help" posiada jedynie pozycje "About wy\x9Cwietlaj\xB9c\xB9 informacje o pakiecie. +Menu "Help" posiada jedynie pozycj\xEA "About" wy\x9Cwietlaj\xB9c\xB9 informacje o pakiecie. \subsection{Zak\xB3adki funkcji} Zak\xB3adki funkcji umo\xBFliwiaj\xB9 nawigacj\xEA pomi\xEAdzy poszczeg\xF3lnymi trybami wizualizacji, a tak\xBFe pomi\xEAdzy narz\xEAdziami funkcji lokalnej, s\xB9siedztwa oraz symboli. @@ -55,7 +55,7 @@ \item 1D Text View - widok symulatora LAK \item Symbols - interpretacja symboli \item Function - tabela funkcji lokalnej -\item Neigborhood - widok s\xB9siedztwa +\item Neighbourhood - widok s\xB9siedztwa \end{itemize} Podczas pracy symulatora w modelu TAK zak\xB3adki "2D Text View" oraz "2D Graphics View" przedstawiaj\xB9 przekr\xF3j sze\x9Ccianu KB w p\xB3aszczy\x9Fnie XY. przesuni\xEAcie p\xB3aszczyzny okre\x9Clone jest polem "Z Plane" w oknie "2D Text Tools". @@ -124,11 +124,11 @@ Przyciski "Colors", "Symbols", "Char" odpowiadaj\xB9 funkcjonalno\x9Cci\xB9 odpowiednim przyciskom w oknie "2D Text Tools". Przycisk "Clear" umo\xBFliwia usuni\xEAcie poprzednich chwil czasowych z tabeli historii widoku 1D. -\subsubsection{Neigborhood Tools} +\subsubsection{Neighbourhood Tools} \begin{figure}[!h] \centering \includegraphics[width=3cm]{chap6/NTools} -\caption{Neigborhood Tools} +\caption{Neighbourhood Tools} \end{figure} Zestaw narz\xEAdzi do konfigurowania s\xB9siedztwa: \begin{itemize} @@ -164,7 +164,7 @@ Aby oddali\xE6/przybli\xBFy\xE6 widok nale\xBFy u\xBFy\xE6 \x9Crodkowego k\xF3\xB3ka myszy. \subsection{Edycja konfiguracji bie\xBF\xB9cej} -Edycja konfiguracji mo\xBFliwa jedynie w trybie obserwatora globalnego po za\xB3adowaniu wszystkich element\xF3w modelu(FL, N, KI). +Edycja konfiguracji mo\xBFliwa jest jedynie w trybie obserwatora globalnego po za\xB3adowaniu wszystkich element\xF3w modelu(FL, N, KI). \subsubsection{Edycja bezpo\x9Crednia} Aby bezpo\x9Crednio edytowa\xE6 KB automatu nale\xBFy wybra\xE6 tryb "Edit" z okna "Basic Tools". Ka\xBFdorazowe zaznaczenie za pomoc\xB9 kursora kom\xF3rki KB spowoduje zmian\xEA symbolu na zaznaczony w tabeli symboli. @@ -225,7 +225,7 @@ \item zapis wynik\xF3w \end{itemize} -Dob\xF3r modelu odbywa si\xEA poprzez wczytanie plik\xF3w konfiguracji funkcji lokalnej oraz s\xB9siedztwa. W tym celu nale\xBFy wybra\xE6 z menu g\xB3\xF3wnego zak\xB3adk\xEA "File" nast\xEApnie pozycje "Open". Po wczytaniu s\xB9siedztwa ("Neigborhood"), funkcji lokalnej ("Function"), oraz konfiguracji inicjalnej ("World") mo\xBFliwe jest wykonanie kolejnych iteracji symulacji. +Dob\xF3r modelu odbywa si\xEA poprzez wczytanie plik\xF3w konfiguracji funkcji lokalnej oraz s\xB9siedztwa. W tym celu nale\xBFy wybra\xE6 z menu g\xB3\xF3wnego zak\xB3adk\xEA "File" nast\xEApnie pozycje "Open". Po wczytaniu s\xB9siedztwa ("Neighbourhood"), funkcji lokalnej ("Function"), oraz konfiguracji inicjalnej ("World") mo\xBFliwe jest wykonanie kolejnych iteracji symulacji. \begin{figure}[!h] \centering @@ -238,7 +238,7 @@ \begin{figure}[!h] \centering \includegraphics[width=14cm]{chap6/step} -\caption {Narz\xEAdzia iterowanie krok\xF3w} +\caption {Narz\xEAdzia iterowania krok\xF3w} \end{figure} \subsection{Podstawowy eksperyment} @@ -273,14 +273,15 @@ Rysunki 6.11 - 6.14 przedstawiaj\xB9 kolejne kroki symulacji z u\xBFyciem KI zawartej w pliku "basic3Dexperiment.KI". Z analizy przebiegu symulacji widoczny obiekt mo\xBFna zaklasyfikowa\xE6 jako \xB3azik. -\subsection{Eksperyment dynamicznego dobieranie modelu obliczeniowego} +\subsection{Eksperyment dynamicznego dobierania modelu obliczeniowego} Poni\xBFszy przyk\xB3ad obrazuje spos\xF3b dynamicznego doboru modelu obliczeniowego. -Zadaniem docelowym jest okre\x9Cleni modelu umo\xBFliwiaj\xB9cego obrazowanie kolizji sygna\xB3\xF3w w przestrzeni 1D. Zak\xB3adamy \xBFe sygna\xB3y poruszaj\xB9 si\xEA z pr\xEAdko\x9Cci\xB9 V=1 w przeciwnych kierunkach oraz po kolizj\xB9 pr\xEAdko\x9C\xE6 i kierunek sygna\xB3\xF3w ma pozosta\xE6 bez zmian. Do przedstawienia kolizji niezb\xEAdny jest alfabetu o czterech symbolach oraz s\xB9siedztwo tr\xF3jelementowe. W poni\xBFszym przyk\xB3adzie u\xBFyto plik\xF3w: "dynamicmodelexample.FQT", "dynamicmodelexample.N". Do stworzenia KI u\xBFyto kreatora KI. +Zadaniem docelowym jest okre\x9Cleni modelu umo\xBFliwiaj\xB9cego obrazowanie kolizji sygna\xB3\xF3w w przestrzeni 1D. Zak\xB3adamy \xBFe sygna\xB3y poruszaj\xB9 si\xEA z pr\xEAdko\x9Cci\xB9 V=1 w przeciwnych kierunkach oraz po kolizj\xB9 pr\xEAdko\x9C\xE6 i kierunek sygna\xB3\xF3w ma pozosta\xE6 bez zmian. Do przedstawienia kolizji niezb\xEAdny jest alfabet o czterech symbolach oraz s\xB9siedztwo tr\xF3jelementowe. W poni\xBFszym przyk\xB3adzie u\xBFyto plik\xF3w: "dynamicmodelexample.FQT", "dynamicmodelexample.N". Do stworzenia KI u\xBFyto kreatora KI. \begin{figure}[!h] \centering \includegraphics[width=12cm]{chap6/undefinedfunction} \caption {Tabela funkcji nieokre\x9Clonej} +\label{fig:tfn} \end{figure} Rysunek 6.15 przedstawia tablice funkcji nieokre\x9Clonej. Stopniowo wykonuj\xB9c kolejne iteracje symulacji u\xBFytkownik wype\xB3nia tablic\xEA funkcji lokalnej. Podczas symulacji ilekro\xE6 nast\xB9pi pr\xF3ba u\xBFycia symbolu nieokre\x9Clonego post\xEAp symulacji zostaje zatrzymany, a w tablicy funkcji zaznaczony zostaje symbol nieokre\x9Clony (Rys 6.17). Zaznaczenie miejsca wyst\xB9pienia SN w wyznaczanej KB przedstawione zosta\xB3o na rysunku 6.16. Modified: trunk/qcell/doc/licenciate_thesis/chap7/chap7.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap7/chap7.tex 2007-02-15 13:19:51 UTC (rev 331) +++ trunk/qcell/doc/licenciate_thesis/chap7/chap7.tex 2007-02-16 15:25:32 UTC (rev 332) @@ -1,17 +1,16 @@ \chapterauthor{Cezary Krzy\xBFanowski}{Wnioski} \label{chap:wni} \begin{enumerate} - \item W celu zapoznania si\xEA z symulacj\xB9 \ac{AK} przeanalizowano dzia\xB3anie reprezentatywnej grupy pi\xEAciu aplikacji realizuj\xB9cych to zadanie. Stwierdzono ukierunkowanie istniej\xB9cych rozwi\xB9za\xF1 na w\xB9sk\xB9 grup\xEA modeli \ac{AK} \x9Cci\x9Cle powi\xB9zanych z klasycznym modelem ,,Game Of Life'' Conwaya. - \item Opracowano zestawienie cech hipotetycznego ,,idealnego symulatora''. Lista funkcji wynika z istniej\xB9cych rozwi\xB9za\xF1 oraz proponuje nowe, wprowadzone niedawno do literatury, jak np. obserwator lokalny\citep{siim, siwy}. - \item Zaprojektowano i zrealizowano programowy symulator przetwarzania kom\xF3rkowego, unikalny w por\xF3wnaniu z analizowanymi programami. Pakiet implementuje now\xB9 koncepcj\xEA obserwatora lokalnego, funkcji quasi-totalistycznych jako formatu reprezentacji \ac{FL} o znacznie wi\xEAkszej sile wyrazu ni\xBF w przypadku analizowanych symulator\xF3w. - \item Zrealizowano wizualizacj\xEA jedno-, dwu- oraz tr\xF3jwymiarowych automat\xF3w kom\xF3rkowych w trybach zar\xF3wno tekstowym, jak i graficznym. Do mo\xBFliwo\x9Cci wizualizacyjnych do\xB3\xB9czono interpretacj\xEA obraz\xF3w przetwarzania oraz list\xEA \ac{RE}. -\item Opracowano zestaw narz\xEAdzi wspomagaj\xB9cych prac\xEA z symulatorem oraz intensyfikuj\xB9cych prowadzenie eksperyment\xF3w. Do narz\xEAdzi tych zaliczaj\xB9 si\xEA rytmy przetwarzania (krokowy, ci\xB9g\xB3y), metody manipulowania przestrzeni\xB9 tr\xF3jwymarow\xB9 (obr\xF3t, przesuni\xEAcie, zbli\xBFenie/oddalenie) oraz wspomaganie definiowania konfiguracji (kopiowanie, wklejanie, modyfikowanie). -\item Wdro\xBFono \x9Crodki dokumentowania eksperyment\xF3w w postaci historii przetwarzania. Z uwagi na szacowan\xB9 pracoch\xB3onno\x9C\xE6 pomini\xEAto implmentacj\xEA form multimedialnych dokumentowania. -\item Przeprowadzono testy maj\xB9ce na celu zweryfikowanie poprawno\x9Cci dzia\xB3ania pakietu programowego oraz testy wydajno\x9Cciowe. Stwierdzono zgodno\x9C\xE6 aplikacji z formatami plik\xF3w wej\x9Cciowych \ac{N}, \ac{FQT} i KI. Zweryfikowano mo\xBFliwo\x9C\xE6 importowania i eksportowania podzbioru eksperyment\xF3w kompatybilnych z programami MCell, XLife i Life32. -\item W wyniku ogranicze\xF1 czasowych nie zaimplementowano trybu por\xF3wnawczego dla dw\xF3ch przetwarza\xF1, nie zapewniono zgodno\x9Cci z wszystkimi zak\xB3adanymi formatami plik\xF3w. Dodatkowo pomi\xEAto interpretacj\xEA obrazu na podstawie listy \ac{RE} oraz automatyczne uzupe\xB3nianie \ac{SN}. -\item Przy implementowaniu pakietu programowego utrwalono umiej\xEAtno\x9Cci pracy grupowej i wykorzystywania narz\xEAdzi pracy grupowej, takich jak repozytorium \ac{SVN}, czy \gls{bugtracker}. -\item Podczas budowania pakietu programowego ugruntowano umiej\xEAtno\x9Cci programistyczne w zakresie j\xEAzyka C++, grafiki tr\xF3jwymiarowej (biblioteki OpenGL) oraz implementowania aplikacji wieloplatformowych (z u\xBFyciem bibliotek Qt). -\item Napisano blisko pi\xEAtna\x9Ccie tysi\xEAcy linijek kodu o szacunkowej pracoch\xB3onno\x9Cci przekraczaj\xB9cej p\xF3\xB3tora tysi\xB9ca roboczogodzin. + \item W celu zapoznania si\xEA z symulacj\xB9 \ac{AK} przeanalizowano dzia\xB3anie reprezentatywnej grupy pi\xEAciu aplikacji realizuj\xB9cych to zadanie. Stwierdzono ukierunkowanie istniej\xB9cych rozwi\xB9za\xF1 na w\xB9sk\xB9 grup\xEA modeli \ac{AK} \x9Cci\x9Cle powi\xB9zanych z klasycznym modelem ,,Game Of Life'' Conwaya. Definiowanie s\xB9siedztwa jest zwykle ograniczone do wariacji n/t s\xB9siedztwa von Noumana i Moore'a. + \item Opracowano zestawienie cech hipotetycznego ,,idealnego symulatora''. Lista funkcji wynika z istniej\xB9cych rozwi\xB9za\xF1 oraz proponuje nowe, wprowadzone niedawno do literatury, jak np. obserwator lokalny czy definiowane regu\xB3 elementarnych\citep{siim, siwy}. + \item Zaprojektowano i zrealizowano programowy symulator przetwarzania kom\xF3rkowego, unikalny w por\xF3wnaniu z analizowanymi programami. Pakiet implementuje now\xB9 koncepcj\xEA obserwatora lokalnego, funkcj\xEA quasi-totalistyczn\xB9 jako format reprezentacji \ac{FL}. Zrealizowany symulator oddziela elementy modelu i dane \ac{AK} od wizualizacji. Zastosowanie standard\xF3w plik\xF3w zaproponowanych przez dr Paw\xB3a Siwaka\citep{sicw} pozwala na definiowanie modelu \ac{AK} w spos\xF3b znacznie szerszy ni\xBF analizowane programy. + \item Zrealizowano wizualizacj\xEA jedno-, dwu- oraz tr\xF3jwymiarowych automat\xF3w kom\xF3rkowych. Zaimplementowano tryb tekstowy dla jedno- i dwuwymiarowych \ac{AK}, oraz tryb graficzny dla konfiguracji dwu- i tr\xF3jwymiarowych. Do mo\xBFliwo\x9Cci wizualizacyjnych do\xB3\xB9czono interpretacj\xEA obraz\xF3w przetwarzania(dob\xF3r znaku, koloru) oraz list\xEA \ac{RE}. + \item Opracowano zestaw narz\xEAdzi wspomagaj\xB9cych prac\xEA z symulatorem oraz intensyfikuj\xB9cych prowadzenie eksperyment\xF3w. Do narz\xEAdzi tych zaliczaj\xB9 si\xEA rytmy przetwarzania (krokowy, ci\xB9g\xB3y, co n-iteracji), metody manipulowania przestrzeni\xB9 tr\xF3jwymarow\xB9 (obr\xF3t, przesuni\xEAcie, zbli\xBFenie/oddalenie) oraz wspomaganie definiowania konfiguracji (kopiowanie, wklejanie, modyfikowanie). Zrealizowano wspomaganie doboru modelu w postaci uzupe\xB3niania \ac{FL}. + \item Wdro\xBFono \x9Crodki dokumentowania eksperyment\xF3w w postaci historii przetwarzania. Z uwagi na szacowan\xB9 pracoch\xB3onno\x9C\xE6 pomini\xEAto implmentacj\xEA form multimedialnych dokumentowania. Nie zrealizowano zapis\xF3w do pliku obraz\xF3w przetwarzania (diagram\xF3w ST, ,,plansz'' 2-D, czy ,,sze\x9Ccian\xF3w'' 3-D). + \item Zwr\xF3cono szczeg\xF3ln\xB9 uwag\xEA na rozdzielenie wizualizacji od oblicze\xF1 w implementacji\citep{iowp}. Ponadto skrupulatnie zaprojektowano i przetestowano interfejs graficzny \ac{GUI} pod k\xB9tem komfortu pracy operatora. Zrealizowano szereg odczepialnych pask\xF3w z narz\xEAdziami. Zaimplementowano algorytm wy\x9Cwietlania jedynie niezb\xEAdnych narz\xEAdzi dla danego trybu wizualizacji. Do oryginalnych napis\xF3w w j\xEAzyku angielskim dodano polskie t\xB3umaczenia. + \item Przeprowadzono testy maj\xB9ce na celu zweryfikowanie poprawno\x9Cci dzia\xB3ania pakietu programowego. Stwierdzono zgodno\x9C\xE6 aplikacji z formatami plik\xF3w wej\x9Cciowych \ac{N}, \ac{FQT}, REAK, ZIFW i KI. Zweryfikowano mo\xBFliwo\x9C\xE6 importowania i eksportowania podzbioru eksperyment\xF3w kompatybilnych z programami MCell, XLife i Life32. + \item W wyniku ogranicze\xF1 czasowych nie zaimplementowano trybu por\xF3wnawczego dla dw\xF3ch przetwarza\xF1, nie zapewniono zgodno\x9Cci z wszystkimi zak\xB3adanymi formatami plik\xF3w. Dodatkowo pomini\xEAto interpretacj\xEA obrazu na podstawie listy \ac{RE} oraz automatyczne uzupe\xB3nianie \ac{SN} w \ac{KB}. + \item Podczas budowania pakietu programowego ugruntowano umiej\xEAtno\x9Cci programistyczne w zakresie j\xEAzyka C++, grafiki tr\xF3jwymiarowej (biblioteki OpenGL) oraz implementowania aplikacji wieloplatformowych (z u\xBFyciem bibliotek Qt). \end{enumerate} % vim:fencs=cp1250:fenc=cp1250 Modified: trunk/qcell/doc/licenciate_thesis/style.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/style.tex 2007-02-15 13:19:51 UTC (rev 331) +++ trunk/qcell/doc/licenciate_thesis/style.tex 2007-02-16 15:25:32 UTC (rev 332) @@ -77,7 +77,7 @@ \def\przerwa{4.5} %\addtocontents{toc}{\setcounter{\protect\tocdepth}{4}} %\setcounter{secnumdepth}{-1} -\setcounter{secnumdepth}{3} +%\setcounter{secnumdepth}{3} %\setcounter{tocdepth}{4} \renewcommand{\cftchapleader}{\cftdotfill{\przerwa}\author} \renewcommand{\cftsecleader}{\cftdotfill{\przerwa}\author \cftdotfill{\przerwa}} Modified: trunk/qcell/doc/licenciate_thesis/titlepage.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/titlepage.tex 2007-02-15 13:19:51 UTC (rev 331) +++ trunk/qcell/doc/licenciate_thesis/titlepage.tex 2007-02-16 15:25:32 UTC (rev 332) @@ -28,6 +28,9 @@ \end{center} \vspace{\stretch{6}} + \begin{center} + 15.02.2007 + \end{center} % Promotorzy % TODO: Wyjustowa\xE6 do prawej This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-02-15 13:19:54
|
Revision: 331 http://svn.sourceforge.net/qcell/?rev=331&view=rev Author: lessm Date: 2007-02-15 05:19:51 -0800 (Thu, 15 Feb 2007) Log Message: ----------- Modified Paths: -------------- trunk/qcell/baseheaders/basetools.ui trunk/qcell/baseheaders/view3dtools.ui trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex trunk/qcell/doc/licenciate_thesis/chap6/1DTools.png trunk/qcell/doc/licenciate_thesis/chap6/2DTools.png trunk/qcell/doc/licenciate_thesis/chap6/bTools.png trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex trunk/qcell/doc/licenciate_thesis/chap6/observer.png Added Paths: ----------- trunk/qcell/bin/examples/ trunk/qcell/bin/examples/basic3Dexperiment.FQT trunk/qcell/bin/examples/basic3Dexperiment.KI trunk/qcell/bin/examples/basic3Dexperiment.N trunk/qcell/bin/examples/dynamicmodelexample.FQT trunk/qcell/bin/examples/dynamicmodelexample.N Modified: trunk/qcell/baseheaders/basetools.ui =================================================================== --- trunk/qcell/baseheaders/basetools.ui 2007-02-15 10:31:26 UTC (rev 330) +++ trunk/qcell/baseheaders/basetools.ui 2007-02-15 13:19:51 UTC (rev 331) @@ -13,7 +13,7 @@ </rect> </property> <property name="windowTitle" > - <string>BaseTools</string> + <string>Basic Tools</string> </property> <layout class="QVBoxLayout" > <property name="margin" > Modified: trunk/qcell/baseheaders/view3dtools.ui =================================================================== --- trunk/qcell/baseheaders/view3dtools.ui 2007-02-15 10:31:26 UTC (rev 330) +++ trunk/qcell/baseheaders/view3dtools.ui 2007-02-15 13:19:51 UTC (rev 331) @@ -229,7 +229,7 @@ </size> </property> <property name="title" > - <string>Distans</string> + <string>Distance</string> </property> <layout class="QVBoxLayout" > <property name="margin" > Added: trunk/qcell/bin/examples/basic3Dexperiment.FQT =================================================================== --- trunk/qcell/bin/examples/basic3Dexperiment.FQT (rev 0) +++ trunk/qcell/bin/examples/basic3Dexperiment.FQT 2007-02-15 13:19:51 UTC (rev 331) @@ -0,0 +1,5 @@ +FQT +27 2 4 +1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 +4: 10 +5: 32 Added: trunk/qcell/bin/examples/basic3Dexperiment.KI =================================================================== --- trunk/qcell/bin/examples/basic3Dexperiment.KI (rev 0) +++ trunk/qcell/bin/examples/basic3Dexperiment.KI 2007-02-15 13:19:51 UTC (rev 331) @@ -0,0 +1,209 @@ +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 + +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 + +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 + +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000001000000000 +00000000001000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 + +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000001000000000 +00000000010000000000 +00000000010000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 + +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000001000000000 +00000000010000000000 +00000000010000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 + +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000001000000000 +00000000001000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 + +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 + +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 + +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 +00000000000000000000 Added: trunk/qcell/bin/examples/basic3Dexperiment.N =================================================================== --- trunk/qcell/bin/examples/basic3Dexperiment.N (rev 0) +++ trunk/qcell/bin/examples/basic3Dexperiment.N 2007-02-15 13:19:51 UTC (rev 331) @@ -0,0 +1,12 @@ +N3 +3 3 3 27 +1 1 1 +123 +456 +789 +ABC +DRE +FGH +IJK +LMN +OPQ Added: trunk/qcell/bin/examples/dynamicmodelexample.FQT =================================================================== --- trunk/qcell/bin/examples/dynamicmodelexample.FQT (rev 0) +++ trunk/qcell/bin/examples/dynamicmodelexample.FQT 2007-02-15 13:19:51 UTC (rev 331) @@ -0,0 +1,4 @@ +FQT +3 4 4 +1 + Added: trunk/qcell/bin/examples/dynamicmodelexample.N =================================================================== --- trunk/qcell/bin/examples/dynamicmodelexample.N (rev 0) +++ trunk/qcell/bin/examples/dynamicmodelexample.N 2007-02-15 13:19:51 UTC (rev 331) @@ -0,0 +1,4 @@ +N1 +3 3 +1 +213 Modified: trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-15 10:31:26 UTC (rev 330) +++ trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-15 13:19:51 UTC (rev 331) @@ -22,6 +22,9 @@ \item praca krokowa \end{itemize} +\subsubsection {Warunki brzegowe pracy symulatora} +Domy\x9Clnymi warunkami brzegowymi uwzgl\xEAdnionymi w pracy pakietu s\xB9 warunki torusowe. Symulator nie uwzgl\xEAdnia mo\xBFliwo\x9Cci zmiany warunk\xF3w brzegowych. + \subsubsection {Wizualizacja symulacji} Program pozwala wizualizowa\xE6 symulatory LAK(tryb tekstowy), DAK(tryb testowy, tryb graficzny), TAK(tryb graficzny z dwoma trybami perspektywy). @@ -56,14 +59,18 @@ \begin{itemize} \item identyfikator literowy typu funkcji, tj FQT, \item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczba warto\x9Cci argumentu i liczba warto\x9Cci funkcji, -\item numery zmiennych sumowanych, +\item numery zmiennych sumowanych (separowane przecinkiem), -\item Wiersze nast\xEApne podaj\xB9 kolejne sumy s (dziesi\xEAtnie) i ci\xB9gi warto\x9Cci dla ustalonego s: $f(s,w_{max}) f(s,w_{max-1}) ... f(s,w_{min})$. +\item Wiersze nast\xEApne podaj\xB9 kolejne sumy s (dziesi\xEAtnie) i ci\xB9gi warto\x9Cci dla ustalonego s: $f(s,w_{max}) f(s,w_{max-1}) ... f(s,w_{min})$, gdzie $w_{max}$ oznacza maksymalny ci\xB9g wyraz\xF3w wolnych w porz\xB9dku leksykograficznym. \end{itemize} + +\item ZIFW - zawiera w kolejnych wierszach: +\item identyfikator literowy typu funkcji, tj ZIFW, +\item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczba warto\x9Cci argumentu i liczba warto\x9Cci funkcji, +\item kolejne wiersze zawieraj\xB9 zbiory sterowa\xF1 dla kolejnych warto\x9Cci funkcji +\item kreska (my\x9Clnik) oznacza warto\x9C\xE6 nieokre\x9Clon\xB9 (dowoln\xB9) \end{itemize} - - \item s\xB9siedztwo \begin{itemize} \item N - Jest plikiem przeznaczonym do specyfikowania uk\xB3ad\xF3w s\xB9siedztwa, np. kolejno\x9Cci i po\xB3o\xBFenia s\xB9siad\xF3w kom\xF3rki. Ma on nast\xEApuj\xB9c\xB9 struktur\xEA: @@ -80,12 +87,6 @@ \item KI - Plik opisu konfiguracji inicjalnej. Poszczeg\xF3lne wiersze oddzielone s\xB9 znakami ko\xF1ca linii, \x9Cciany zaznaczone s\xB9 poprzez pust\xB9 lini\xEA w pliku. \end{itemize} -\item formaty wewn\xEAtrzne -\begin{itemize} -\item format zapisu KB wykorzystuj\xB9cy j\xEAzyk XML, -\item wewn\xEAtrzny format opisu FL wykorzystuj\xB9cy j\xEAzyk XML \end{itemize} -\end{itemize} - % vim:fencs=cp1250:fenc=cp1250 Modified: trunk/qcell/doc/licenciate_thesis/chap6/1DTools.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/2DTools.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/bTools.png =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-15 10:31:26 UTC (rev 330) +++ trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-15 13:19:51 UTC (rev 331) @@ -91,12 +91,12 @@ \begin{itemize} \item Perspective - tryb perspektywy ludzkiego oka \item Ortho - perspektywa ortogonalna -\item Enable - w\xB3\xB9czenie przekroj\xF3w +\item Enable - przycisk w\xB3\xB9czaj\xB9cy/wy\xB3\xB9czaj\xB9cy tryb przekroju \item xy - przekr\xF3j w p\xB3aszczy\x9Fnie XY \item zy - przekr\xF3j w p\xB3aszczy\x9Fnie ZY \item xz - przekr\xF3j w p\xB3aszczy\x9Fnie XZ -\item przesuni\xEAcie w p\xB3aszczy\x9Fnie przekroju -\item Distans - odleg\xB3o\x9C\xE6 KI od kamery +\item okno przesuni\xEAcie w p\xB3aszczy\x9Fnie stosowanego przekroju +\item Distance - odleg\xB3o\x9C\xE6 \x9Crodka KI od kamery \end{itemize} \subsubsection{2D Text Tools} @@ -107,9 +107,9 @@ \end{figure} Zestaw narz\xEAdzi dla symulatora DAK. Zawiera nast\xEApuj\xB9ce opcje: \begin{itemize} -\item Colors - interpretowanie za pomoc\xB9 kolor\xF3w -\item Symbols - interpretowanie za pomoc\xB9 warto\x9Cci symboli -\item Char - interpretacja za pomoc\xB9 znak\xF3w tekstowych +\item Colors - tryb interpretacji z u\xBFyciem kolor\xF3w +\item Symbols - tryb interpretacji z u\xBFyciem warto\x9Cci symboli +\item Char - tryb interpretacji z u\xBFyciem znak\xF3w tekstowych \item Z Plane - przesuni\xEAcie w p\xB3aszczy\x9Fnie przekroju XY (widocznie jedynie dla KI 3D) \end{itemize} @@ -120,13 +120,10 @@ \caption{1D Tools} \end{figure} Zestaw narz\xEAdzi dla symulatora LAK: -\begin{itemize} -\item Colors - interpretowanie za pomoc\xB9 kolor\xF3w -\item Symbols - interpretowanie za pomoc\xB9 warto\x9Cci symboli -\item Char - interpretacja za pomoc\xB9 znak\xF3w tekstowych -\item Clear - usuni\xEAcie z tabeli poprzednich krok\xF3w symulacji -\end{itemize} +Przyciski "Colors", "Symbols", "Char" odpowiadaj\xB9 funkcjonalno\x9Cci\xB9 odpowiednim przyciskom w oknie "2D Text Tools". +Przycisk "Clear" umo\xBFliwia usuni\xEAcie poprzednich chwil czasowych z tabeli historii widoku 1D. + \subsubsection{Neigborhood Tools} \begin{figure}[!h] \centering @@ -236,7 +233,7 @@ \caption {Wczytywanie konfiguracji z plik\xF3w} \end{figure} -Aby wykona\xE6 kolejne kroi 6.10. +Aby wykona\xE6 kolejne kroi nale\xBFy u\xBFy\xE6 zestawu narz\xEAdzi przedstawionych na rysunku 6.10. \begin{figure}[!h] \centering @@ -246,36 +243,39 @@ \subsection{Podstawowy eksperyment} -Rysunki 6.11 - 6.14 przedstawiaj\xB9 kolejne kroki symulacji. Po analizie por\xF3wnawczej zauwa\xBFy\xE6 mo\xBFna i\xBF widoczne obiekty zaklasyfikowa\xE6 mo\xBFna jako \xB3aziki. +Do przedstawienia poni\xBFszego przyk\xB3adu u\xBFyto plik\xF3w "basic3Dexperiment.FQT", "basic3Dexperiment.N", "basic3Dexperiment.KI" znajduj\xB9cych si\xEA w katalogu "examples". +Po za\xB3adowaniu wszystkich plik\xF3w niezb\xEAdnych do rozpocz\xEAcia eksperymentu uaktywnia si\xEA pasek narz\xEAdzi przedstawiony na rysunku 6.10 i mo\xBFliwe jest wykonywanie kolejnych krok\xF3w eksperymentu. Alternatyw\xB9 dla \xB3adowania pliku KI jest skorzystanie z kreatora konfiguracji znajduj\xB9cego si\xEA w menu "File->New" i r\xEAczna edycja stworzonej KI. + \begin{figure}[!h] \centering \includegraphics[width=4cm]{chap6/iter1} -\caption {Krok 1} +\caption {Przebieg symulacji dla t=0} \end{figure} \begin{figure}[!h] \centering \includegraphics[width=4cm]{chap6/iter2} -\caption {Krok 2} +\caption {Przebieg symulacji dla t=1} \end{figure} \begin{figure}[!h] \centering \includegraphics[width=4cm]{chap6/iter3} -\caption {Krok 3} +\caption {Przebieg symulacji dla t=2} \end{figure} \begin{figure}[!h] \centering \includegraphics[width=4cm]{chap6/iter4} -\caption {Krok 4} +\caption {Przebieg symulacji dla t=3} \end{figure} +Rysunki 6.11 - 6.14 przedstawiaj\xB9 kolejne kroki symulacji z u\xBFyciem KI zawartej w pliku "basic3Dexperiment.KI". Z analizy przebiegu symulacji widoczny obiekt mo\xBFna zaklasyfikowa\xE6 jako \xB3azik. \subsection{Eksperyment dynamicznego dobieranie modelu obliczeniowego} Poni\xBFszy przyk\xB3ad obrazuje spos\xF3b dynamicznego doboru modelu obliczeniowego. -Zadaniem docelowym jest okre\x9Cleni modelu umo\xBFliwiaj\xB9cego obrazowanie kolizji sygna\xB3\xF3w w przestrzeni 1D. Zak\xB3adamy \xBFe sygna\xB3y poruszaj\xB9 si\xEA z pr\xEAdko\x9Cci\xB9 V=1 w przeciwnych kierunkach oraz po kolizj\xB9 pr\xEAdko\x9C\xE6 i kierunek sygna\xB3\xF3w ma pozosta\xE6 bez zmian. Do przedstawienia kolizji niezb\xEAdny jest alfabetu o czterech symbolach oraz s\xB9siedztwo tr\xF3jelementowe. +Zadaniem docelowym jest okre\x9Cleni modelu umo\xBFliwiaj\xB9cego obrazowanie kolizji sygna\xB3\xF3w w przestrzeni 1D. Zak\xB3adamy \xBFe sygna\xB3y poruszaj\xB9 si\xEA z pr\xEAdko\x9Cci\xB9 V=1 w przeciwnych kierunkach oraz po kolizj\xB9 pr\xEAdko\x9C\xE6 i kierunek sygna\xB3\xF3w ma pozosta\xE6 bez zmian. Do przedstawienia kolizji niezb\xEAdny jest alfabetu o czterech symbolach oraz s\xB9siedztwo tr\xF3jelementowe. W poni\xBFszym przyk\xB3adzie u\xBFyto plik\xF3w: "dynamicmodelexample.FQT", "dynamicmodelexample.N". Do stworzenia KI u\xBFyto kreatora KI. \begin{figure}[!h] \centering @@ -283,35 +283,35 @@ \caption {Tabela funkcji nieokre\x9Clonej} \end{figure} -Rysunek {} przedstawia tablice funkcji nieokre\x9Clonej. Stopniowo wykonuj\xB9c kolejne iteracje symulacji u\xBFytkownik wype\xB3nia tablic\xEA funkcji lokalnej. Podczas symulacji ilekro\xE6 nast\xB9pi pr\xF3ba u\xBFycia symbolu nieokre\x9Clonego post\xEAp symulacji zostaje zatrzymany a w tablicy funkcji zaznaczony zostaje symbol nieokre\x9Clony (Rys ). Miejsce wyst\xB9pienia symbolu w wyznaczanej KB r\xF3wnie\xBF zostaje zaznaczone (Rys ). +Rysunek 6.15 przedstawia tablice funkcji nieokre\x9Clonej. Stopniowo wykonuj\xB9c kolejne iteracje symulacji u\xBFytkownik wype\xB3nia tablic\xEA funkcji lokalnej. Podczas symulacji ilekro\xE6 nast\xB9pi pr\xF3ba u\xBFycia symbolu nieokre\x9Clonego post\xEAp symulacji zostaje zatrzymany, a w tablicy funkcji zaznaczony zostaje symbol nieokre\x9Clony (Rys 6.17). Zaznaczenie miejsca wyst\xB9pienia SN w wyznaczanej KB przedstawione zosta\xB3o na rysunku 6.16. \begin{figure}[!h] \centering \includegraphics[width=12cm]{chap6/fview} -\caption {Tabela funkcji nieokre\x9Clonej} +\caption {Obraz KB z zaznaczeniem wyst\xB9pienia SN} \end{figure} \begin{figure}[!h] \centering \includegraphics[width=12cm]{chap6/fdef} -\caption {Tabela funkcji nieokre\x9Clonej} +\caption {Obraz tabeli FL z zaznaczeniem SN} \end{figure} -Rysunek {} uwidacznia tablice funkcji lokalnej zawieraj\xB9cej minimaln\xB9 liczb\xEA okre\x9Clonych warto\x9Cci niezb\xEAdnych do symulacji propagacji sygna\xB3\xF3w bez okre\x9Clenia zachowania podczas kolizji. +Rysunek 6.18 uwidacznia tablice funkcji lokalnej zawieraj\xB9cej minimaln\xB9 liczb\xEA okre\x9Clonych warto\x9Cci funkcji lokalnej niezb\xEAdnych do symulacji propagacji sygna\xB3\xF3w bez okre\x9Clenia zachowania podczas kolizji. \begin{figure}[!h] \centering \includegraphics[width=12cm]{chap6/movelr} -\caption {Tablicy funkcji dla propaguj\xB9cych sygna\xB3\xF3w} +\caption {Obraz tablicy FL dla propaguj\xB9cych sygna\xB3\xF3w} \end{figure} \begin{figure}[!h] \centering \includegraphics[width=12cm]{chap6/compleattable} -\caption {Tablicy funkcji dla propaguj\xB9cych sygna\xB3\xF3w z uwzgl\xEAdnieniem wyst\xB9pienia kolizji} +\caption {Obraz tablicy FL realizuj\xB9cej wyznaczone zadanie} \end{figure} -Rysunek {} przedstawia tablice funkcji okre\x9Clon\xB9 w stopniu wystarczaj\xB9cym do realizacji za\xB3o\xBFe\xF1 docelowego eksperymentu. +Rysunek 6.19 przedstawia tablice funkcji okre\x9Clon\xB9 w stopniu wystarczaj\xB9cym do realizacji za\xB3o\xBFe\xF1 docelowych powy\xBFszego przyk\xB3adu eksperymentu. \begin{figure}[!h] \centering @@ -319,4 +319,6 @@ \caption {Widok pracy AK} \end{figure} +Rysunek 6.20 przedstawia przebieg eksperymentu dla dobranego modelu. Widok poddany zosta\xB3 interpretacji z u\xBFyciem znak\xF3w graficznych w celu osi\xB9gni\xEAcia przejrzysto\x9Cci wynik\xF3w symulacji. + % vim:fencs=cp1250:fenc=cp1250 Modified: trunk/qcell/doc/licenciate_thesis/chap6/observer.png =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-15 10:31:29
|
Revision: 330 http://svn.sourceforge.net/qcell/?rev=330&view=rev Author: dhubleizh Date: 2007-02-15 02:31:26 -0800 (Thu, 15 Feb 2007) Log Message: ----------- - FQT parsing bug Modified Paths: -------------- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-15 09:27:18 UTC (rev 329) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-15 10:31:26 UTC (rev 330) @@ -1,4 +1,4 @@ -/**@file FQTParserPlugin.c +/**@file FQTParserPlugin.cpp * @author czarny * @version 0.4 * @date @@ -159,7 +159,7 @@ } // Now we can calculate the maximal sum value max_sum = arg_nr * (values_nr - 1); - free_args_columns = pow(return_values_nr, (arguments_nr - arg_nr)); + free_args_columns = pow(values_nr, (arguments_nr - arg_nr)); lines.removeFirst(); line_nr++; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-02-15 09:27:20
|
Revision: 329 http://svn.sourceforge.net/qcell/?rev=329&view=rev Author: lessm Date: 2007-02-15 01:27:18 -0800 (Thu, 15 Feb 2007) Log Message: ----------- - local observer bug resolved Modified Paths: -------------- trunk/qcell/basesources/simulationwindow.cpp trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex Modified: trunk/qcell/basesources/simulationwindow.cpp =================================================================== --- trunk/qcell/basesources/simulationwindow.cpp 2007-02-15 09:21:49 UTC (rev 328) +++ trunk/qcell/basesources/simulationwindow.cpp 2007-02-15 09:27:18 UTC (rev 329) @@ -254,34 +254,38 @@ int simulationWindow::calculateDistans(int x, int y, int z, bool box) { + int ox=getStorage()->getSizeX() / 2, oy=getStorage()->getSizeY() / 2, oz=getStorage()->getSizeZ() / 2; - float d1 = sqrt((float)((x - localObserverPosition[0]) * (x - localObserverPosition[0])) * (float)((y - localObserverPosition[1]) * (y - localObserverPosition[1])) * (float)((z - localObserverPosition[2]) * (z - localObserverPosition[2]))); + x += ox - localObserverPosition[0]; + y += oy - localObserverPosition[1]; + z += oz - localObserverPosition[2]; + if(x<0) + x+= getStorage()->getSizeX() - 1; - x += getStorage()->getSizeX()- 1 - localObserverPosition[0]; - y += getStorage()->getSizeY()- 1 - localObserverPosition[1]; - z += getStorage()->getSizeZ()- 1 - localObserverPosition[2]; + if(y<0) + y+= getStorage()->getSizeY() - 1; + if(z<0) + z+= getStorage()->getSizeZ() - 1; + if(x>=getStorage()->getSizeX()) - x -= getStorage()->getSizeX()-1; + x-= getStorage()->getSizeX() - 1; + if(y>=getStorage()->getSizeY()) - y -= getStorage()->getSizeY()-1; + y-= getStorage()->getSizeY() - 1; + if(z>=getStorage()->getSizeZ()) - z -= getStorage()->getSizeZ()-1; -/* + z-= getStorage()->getSizeZ() - 1; + if(box) { - int mx = abs(localObserverPosition[0] - x), my = abs(localObserverPosition[1] - y), mz = abs(localObserverPosition[2] - z); + int mx = abs(ox - x), my = abs(oy - y), mz = abs(oz - z); int tmp = mx>my ? mx : my; return tmp > mz ? tmp : mz; } else -*/ -// return sqrt((float)((x - localObserverPosition[0]) * (x - localObserverPosition[0])) * (float)((y - localObserverPosition[1]) * (y - localObserverPosition[1])) * (float)((z - localObserverPosition[2]) * (z - localObserverPosition[2]))); - - float d2 = sqrt((float)((x - (getStorage()->getSizeX()-1)) * (x - (getStorage()->getSizeX()-1))) * (float)((y - (getStorage()->getSizeY()-1)) * (y - (getStorage()->getSizeY()-1))) * (float)((z - (getStorage()->getSizeZ()-1)) * (z - (getStorage()->getSizeZ()-1)))); - - return d1<d2?d1:d2; + return (int)sqrt((float)((x - ox) * (x - ox)) + (float)((y - oy) * (y - oy)) + (float)((z - oz) * (z - oz))); } void simulationWindow::update2DTable(bool forceUpdate) Modified: trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-15 09:21:49 UTC (rev 328) +++ trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-15 09:27:18 UTC (rev 329) @@ -108,8 +108,8 @@ Zestaw narz\xEAdzi dla symulatora DAK. Zawiera nast\xEApuj\xB9ce opcje: \begin{itemize} \item Colors - interpretowanie za pomoc\xB9 kolor\xF3w -\item Values - interpretowanie za pomoc\xB9 warto\x9Cci symboli -\item Symbols - interpretacja za pomoc\xB9 symboli tekstowych +\item Symbols - interpretowanie za pomoc\xB9 warto\x9Cci symboli +\item Char - interpretacja za pomoc\xB9 znak\xF3w tekstowych \item Z Plane - przesuni\xEAcie w p\xB3aszczy\x9Fnie przekroju XY (widocznie jedynie dla KI 3D) \end{itemize} @@ -122,8 +122,8 @@ Zestaw narz\xEAdzi dla symulatora LAK: \begin{itemize} \item Colors - interpretowanie za pomoc\xB9 kolor\xF3w -\item Values - interpretowanie za pomoc\xB9 warto\x9Cci symboli -\item Symbols - interpretacja za pomoc\xB9 symboli tekstowych +\item Symbols - interpretowanie za pomoc\xB9 warto\x9Cci symboli +\item Char - interpretacja za pomoc\xB9 znak\xF3w tekstowych \item Clear - usuni\xEAcie z tabeli poprzednich krok\xF3w symulacji \end{itemize} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-15 09:21:50
|
Revision: 328 http://svn.sourceforge.net/qcell/?rev=328&view=rev Author: dhubleizh Date: 2007-02-15 01:21:49 -0800 (Thu, 15 Feb 2007) Log Message: ----------- - REAKParserPlugin doesn't show debug anymore Modified Paths: -------------- trunk/qcell/parsers/REAK/REAKParserPlugin.cpp Modified: trunk/qcell/parsers/REAK/REAKParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/REAK/REAKParserPlugin.cpp 2007-02-15 09:12:09 UTC (rev 327) +++ trunk/qcell/parsers/REAK/REAKParserPlugin.cpp 2007-02-15 09:21:49 UTC (rev 328) @@ -236,10 +236,10 @@ { i.next(); lf.setFunctionValue(i.key(), i.value()); - qDebug() << i.key() << " : " << i.value(); +// qDebug() << i.key() << " : " << i.value(); } - qDebug(lf.toXmlString().toAscii()); +// qDebug(lf.toXmlString().toAscii()); return lf.toXmlString(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-15 09:12:10
|
Revision: 327 http://svn.sourceforge.net/qcell/?rev=327&view=rev Author: dhubleizh Date: 2007-02-15 01:12:09 -0800 (Thu, 15 Feb 2007) Log Message: ----------- - KI parsed out ok - function parsing in (REAK, ZIFW, FQT), out (FQT) - function table edditing made clear Modified Paths: -------------- trunk/qcell/basesources/LocalFunction.cpp trunk/qcell/basesources/functiontable.cpp trunk/qcell/parsers/FQT/FQTParserPlugin.cpp trunk/qcell/parsers/KI/KIParserPlugin.cpp trunk/qcell/parsers/REAK/REAKParserPlugin.cpp Modified: trunk/qcell/basesources/LocalFunction.cpp =================================================================== --- trunk/qcell/basesources/LocalFunction.cpp 2007-02-15 00:21:48 UTC (rev 326) +++ trunk/qcell/basesources/LocalFunction.cpp 2007-02-15 09:12:09 UTC (rev 327) @@ -669,7 +669,7 @@ root = doc.createElement("LocalFunction"); root.setAttribute("ArgumentsNumber", getNumberOfArgs()); root.setAttribute("InputAlphabet", getAlphabetSize()); - if(sumArguments.size() > 0) + if(sumArguments.size() > 0 && sumArguments[0].size() > 0) { element = doc.createElement("Sums"); temp.clear(); @@ -677,7 +677,7 @@ { if (sumArguments[i].isEmpty()) { - temp += QString("\n%1").arg(0); + temp += QString("\n%1").arg(-1); } else { @@ -696,7 +696,8 @@ } element = doc.createElement("Values"); - mpv = mostPopularValue(); +// mpv = mostPopularValue(); + mpv = -1; element.setAttribute("FillValue", mpv); temp = "\n"; for(int i=0;i<valueTable.size();++i) @@ -739,21 +740,36 @@ { init(xmlElement->attribute("ArgumentsNumber").toInt(), xmlElement->attribute("InputAlphabet").toInt(), 666); node = xmlElement->firstChild(); - while(!node.isNull()) + element = node.toElement(); + if(element.tagName()=="Sums") { - element = node.toElement(); - if(element.tagName()=="Sums") - setSumsFromString(element.text()); - if(element.tagName()=="Values") - { - if(element.hasAttribute("FillValue")) - { - setDefaultValue(element.attribute("FillValue").toInt()); - setValuesFromString(element.text()); - } - } - node = node.nextSibling(); + setSumsFromString(element.text()); + node = node.nextSibling(); + element = node.toElement(); } + else + { + setSumArguments(QVector<int>()); + } + if(element.hasAttribute("FillValue")) + { + setDefaultValue(element.attribute("FillValue").toInt()); + setValuesFromString(element.text()); + } + +// while(!node.isNull()) +// { +// element = node.toElement(); +// if(element.tagName()=="Values") +// { +// if(element.hasAttribute("FillValue")) +// { +// setDefaultValue(element.attribute("FillValue").toInt()); +// setValuesFromString(element.text()); +// } +// } +// node = node.nextSibling(); +// } return 1; } return 0; Modified: trunk/qcell/basesources/functiontable.cpp =================================================================== --- trunk/qcell/basesources/functiontable.cpp 2007-02-15 00:21:48 UTC (rev 326) +++ trunk/qcell/basesources/functiontable.cpp 2007-02-15 09:12:09 UTC (rev 327) @@ -1,4 +1,5 @@ #include "../baseheaders/functiontable.h" +#include <QDebug> void FunctionTable::init(void) { @@ -65,7 +66,7 @@ { item = ui.functionTable->item( index / ui.functionTable->columnCount(), - index % ui.functionTable->columnCount() % index + index % ui.functionTable->columnCount() ); } else @@ -92,11 +93,22 @@ function->setValueAt(-1, row * ui.functionTable->columnCount() + column); item->setText("?"); } - else + else if(temp.toInt() <= function->getAlphabetSize()) { item->setText(temp); function->setValueAt(temp.toInt(), row * ui.functionTable->columnCount() + column); } + else + { + // Reset original value + item->setText(QString::number(function->getValueAt( + row * ui.functionTable->columnCount() + column)) + ); + qDebug(tr("The inputed return value is greater than the one declared in function header(%1)") + .arg(function->getAlphabetSize()) + .toAscii() + ); + } } } Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-15 00:21:48 UTC (rev 326) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-15 09:12:09 UTC (rev 327) @@ -6,6 +6,7 @@ * Last Update: czw lis 30 14:19:22 CET 2006 */ #include "FQTParserPlugin.h" +#include <QDebug> FQTParserPlugin::FQTParserPlugin() { @@ -348,7 +349,7 @@ } // Get rid of the penging `,' result.chop(1); -// result.append('\n'); + result.append('\n'); /// @todo Get it right next time - this is ugly! QMap<QString, QString> fqt; @@ -364,11 +365,13 @@ int index = 0; QString values_txt = values.text(); values_txt.chop(1); + values_txt.remove(0, 1); foreach(QString sum_line, values_txt.split(";\n")) { QStringList tokens = sum_line.split('='); QStringList sum_and_free = tokens[0].split('+'); QString sum = sum_and_free.takeFirst(); + QStringList free = sum_and_free.first().split(','); if (!fqt.contains(sum)) { @@ -376,9 +379,12 @@ } index = num_combinations-1; - for (int i = 0; i < sum_and_free.size(); i++) + for (int i = 0; i < free.count(); i++) { - index -= sum_and_free[i].toInt() * (pow(lf.getAlphabetSize(), (free_args - i)) - 1); + int farg = free[i].toInt(); + int alphs = lf.getAlphabetSize(); + int wynik = pow(lf.getAlphabetSize(), free_args-i-1); + index -= free[i].toInt() * (pow(lf.getAlphabetSize(), (free_args - i - 1))); } fqt[sum][index] = tokens[1][0]; } Modified: trunk/qcell/parsers/KI/KIParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/KI/KIParserPlugin.cpp 2007-02-15 00:21:48 UTC (rev 326) +++ trunk/qcell/parsers/KI/KIParserPlugin.cpp 2007-02-15 09:12:09 UTC (rev 327) @@ -31,7 +31,7 @@ // dimensions and how large it is, so we need to track counts QVector<QVector<QVector <int> > > world; // Generic type for outputing XML strings - CalculationData* cd = new CalculationData(); + CalculationData cd; // Maximum dimensions values int max_x, max_y, max_z; max_x = max_y = max_z = 0; @@ -95,7 +95,7 @@ } // Char is the maximum value we can get from this file type - cd->setDataType(baseDataTypes::CHAR); + cd.setDataType(baseDataTypes::CHAR); // no Z dimenzion if ( world.count() == 1 ) @@ -103,10 +103,10 @@ // no Y dimension if (world.first().count() == 1 ) { - cd->resizeData(world.first().first().count()); + cd.resizeData(world.first().first().count()); for (int i = 0; i < world.first().first().count(); i++) { - cd->setValueAt(world.first().first()[i], i); + cd.setValueAt(world.first().first()[i], i); } } @@ -114,7 +114,7 @@ else { max_y = world.first().count(); - cd->resizeData(max_x, max_y); + cd.resizeData(max_x, max_y); for ( int i = 0; i < world.first().count(); i++ ) { for ( int j = 0; j < world.first().first().count(); j++ ) @@ -122,9 +122,9 @@ if (world.first()[i].count() > max_x) { max_x = world.first()[i].count(); - cd->resizeData(max_x, max_y); + cd.resizeData(max_x, max_y); } - cd->setValueAt(world.first()[i][j], j, i); + cd.setValueAt(world.first()[i][j], j, i); } } @@ -136,13 +136,13 @@ else { max_z = world.count(); - cd->resizeData(max_x, max_y, max_z); + cd.resizeData(max_x, max_y, max_z); for ( int i = 0; i < world.count(); i++ ) { if (world[i].count() > max_y) { max_y = world[i].count(); - cd->resizeData(max_x, max_y, max_z); + cd.resizeData(max_x, max_y, max_z); } for ( int j = 0; j < world[i].count(); j++ ) @@ -152,10 +152,10 @@ if (world[i][j].count() > max_x) { max_x = world[i][j].count(); - cd->resizeData(max_x, max_y, max_z); + cd.resizeData(max_x, max_y, max_z); } - cd->setValueAt(world[i][j][k], k, j, i); + cd.setValueAt(world[i][j][k], k, j, i); } } @@ -164,7 +164,7 @@ } - return cd->toXmlString(); + return cd.toXmlString(); } QByteArray KIParserPlugin::parseOut(QString content, const QString type, const QString subtype) @@ -172,23 +172,22 @@ // The resulting array to write to file by the backend QByteArray result; // Generic type to parse XML request - CalculationData* cd = (CalculationData*)content.toInt(); + CalculationData cd; // Check if we can use the generic type from the XML string /// @todo Unhack this! -// if(!cd.setFromXmlString(&content)) - if(cd == NULL) + if(!cd.setFromXmlString(&content)) { qDebug(tr("Unable to parse out internal data!").toAscii()); } - switch (cd->getDimension()) + switch (cd.getDimension()) { case 1: { - for (int x = 0; x < cd->getSizeX(); x++) + for (int x = 0; x < cd.getSizeX(); x++) { - result.append((char)('0' + cd->getValueAt_i(x))); + result.append((char)('0' + cd.getValueAt_i(x))); } result.append('\n'); @@ -196,11 +195,11 @@ } case 2: { - for(int y = 0; y < cd->getSizeY(); y++) + for(int y = 0; y < cd.getSizeY(); y++) { - for (int x = 0; x < cd->getSizeX(); x++) + for (int x = 0; x < cd.getSizeX(); x++) { - result.append((char)('0' + cd->getValueAt_i(x,y))); + result.append((char)('0' + cd.getValueAt_i(x,y))); } result.append('\n'); @@ -210,13 +209,13 @@ } case 3: { - for(int z = 0; z < cd->getSizeZ(); z++) + for(int z = 0; z < cd.getSizeZ(); z++) { - for (int y = 0; y < cd->getSizeY(); y++) + for (int y = 0; y < cd.getSizeY(); y++) { - for (int x = 0; x < cd->getSizeX(); x++) + for (int x = 0; x < cd.getSizeX(); x++) { - result.append((char)('0' + cd->getValueAt_d(x, y, z))); + result.append((char)('0' + cd.getValueAt_d(x, y, z))); } result.append('\n'); Modified: trunk/qcell/parsers/REAK/REAKParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/REAK/REAKParserPlugin.cpp 2007-02-15 00:21:48 UTC (rev 326) +++ trunk/qcell/parsers/REAK/REAKParserPlugin.cpp 2007-02-15 09:12:09 UTC (rev 327) @@ -236,10 +236,10 @@ { i.next(); lf.setFunctionValue(i.key(), i.value()); -// qDebug() << i.key() << " : " << i.value(); + qDebug() << i.key() << " : " << i.value(); } -// qDebug(lf.toXmlString().toAscii()); + qDebug(lf.toXmlString().toAscii()); return lf.toXmlString(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-02-15 00:21:51
|
Revision: 326 http://svn.sourceforge.net/qcell/?rev=326&view=rev Author: lessm Date: 2007-02-14 16:21:48 -0800 (Wed, 14 Feb 2007) Log Message: ----------- Modified Paths: -------------- trunk/qcell/doc/licenciate_thesis/chap2/Thumbs.db trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex trunk/qcell/doc/licenciate_thesis/chap6/wczyt.png Added Paths: ----------- trunk/qcell/doc/licenciate_thesis/chap6/compleattable.png trunk/qcell/doc/licenciate_thesis/chap6/const0.png trunk/qcell/doc/licenciate_thesis/chap6/expdm.png trunk/qcell/doc/licenciate_thesis/chap6/fdef.png trunk/qcell/doc/licenciate_thesis/chap6/fview.png trunk/qcell/doc/licenciate_thesis/chap6/movelr.png trunk/qcell/doc/licenciate_thesis/chap6/undef.png trunk/qcell/doc/licenciate_thesis/chap6/undefinedfunction.png Modified: trunk/qcell/doc/licenciate_thesis/chap2/Thumbs.db =================================================================== (Binary files differ) Modified: trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-14 22:01:07 UTC (rev 325) +++ trunk/qcell/doc/licenciate_thesis/chap2/chap2.tex 2007-02-15 00:21:48 UTC (rev 326) @@ -283,7 +283,8 @@ \label{fig:} \end{figure} -Life32 jest symulatorem ukierunkowanym na regu\xB3y "Game of Life". Do g\xB3\xF3wnych zalet tej aplikacji nale\xBF\xB9 maksymalny rozmiar przetwarzanej konfiguracji kt\xF3ry ograniczony jest do planszy o rozmiarach 1000000 x 1000000, oraz du\xBFa pr\xEAdko\x9C\xE6 przetwarzania. Ograniczeniem pakietu jest to \xBFe umo\xBFliwia przetwarzanie jedynie konfiguracji binarnych. Symulator posiada mo\xBFliwo\x9C\xE6 wczytywania plik\xF3w innych popularnych pakiet\xF3w. Przebieg symulacji obrazowany jest za pomoc\xB9 dwu wymiarowych plansz KB. Pakiet pozwala na konfiguracje kolor\xF3w kom\xF3rek. +Life32 jest symulatorem ukierunkowanym na regu\xB3y "Game of Life". Do g\xB3\xF3wnych zalet tej aplikacji nale\xBF\xB9 maksymalny rozmiar przetwarzanej konfiguracji kt\xF3ry ograniczony jest do planszy o rozmiarach 1000000 x 1000000, oraz du\xBFa pr\xEAdko\x9C\xE6 przetwarzania. Ograniczeniem pakietu jest to \xBFe umo\xBFliwia przetwarzanie jedynie konfiguracji binarnych. Symulator posiada mo\xBFliwo\x9C\xE6 wczytywania plik\xF3w innych popularnych pakiet\xF3w. Przebieg symulacji obrazowany jest za pomoc\xB9 dwu wymiarowych plansz KB. Pakiet posiada zestaw narz\xEAdzi umo\xBFliwiaj\xB9cych +konfiguracje kolor\xF3w symboli. \subsection{CelLab} \begin{figure}[!hpt] @@ -307,24 +308,24 @@ \subsection {Por\xF3wnanie dost\xEApnych AK} -Przeprowadzona analiza funkcji szeroko znanych symulator\xF3w AK pokazuje i\xBF wi\xEAkszo\x9C\xE6 symulator\xF3w koncentruje si\xEA na wizualizacji specyficznych . Zakres wizualizacji ogranicza si\xEA do jedno i dwu wymiarowych AK w trybie graficznym z mo\xBFliwo\x9Cci\xB9 zmiany interpretacji symboli. W trakcie analizy dost\xEApnych symulator\xF3w AK nie stwierdzono wyposa\xBFenia symulator\xF3w w funkcje dynamicznego doboru modelu przetwarzania oraz mo\xBFliwo\x9Cci dowolnego definiowania s\xB9siedztwa. Powszechnie stosuje si\xEA dwa rodzaje s\xB9siedztwa von Neumanna oraz Moora z mo\xBFliwo\x9Cci\xB9 modyfikacji s\xB9siad\xF3w. +Przeprowadzona analiza funkcji szeroko znanych symulator\xF3w AK pokazuje i\xBF wi\xEAkszo\x9C\xE6 symulator\xF3w koncentruje si\xEA na wizualizacji wybranych modeli obliczeniowych. Zakres wizualizacji ogranicza si\xEA do jedno i dwu wymiarowych AK w trybie graficznym z mo\xBFliwo\x9Cci\xB9 zmiany interpretacji symboli. W trakcie analizy dost\xEApnych symulator\xF3w AK nie stwierdzono wyposa\xBFenia symulator\xF3w w funkcje dynamicznego doboru modelu przetwarzania oraz mo\xBFliwo\x9Cci dowolnego definiowania s\xB9siedztwa. Powszechnie stosuje si\xEA dwa rodzaje s\xB9siedztwa von Neumanna oraz Moora oba z mo\xBFliwo\x9Cci\xB9 niewielkiej modyfikacji s\xB9siad\xF3w. \begin{landscape} \begin{table}[!p] \centering \caption{Por\xF3wnanie dost\xEApnych AK} -\begin{tabular}{p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}} -AK & Dynamika globalna & Definiowanie dowolnych funkcji lokalnych & Wymiana danych pomi\xEAdzy pakietami & Graficzna reprezentacja symulacji & Tekstowa reprezentacja symulacji & Obserwator lokalny & Wspomaganie doboru modelu\\ +\begin{tabular}{p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}|p{5em}} +AK & Model LAK & Model DAK & Model TAK & Dynamika globalna & Wymiana danych pomi\xEAdzy pakietami & Graficzna reprezentacja symulacji & Tekstowa reprezentacja symulacji & Obserwator lokalny & Wspomaganie doboru modelu\\ \hline -MCell & Nie & Tak & Tak & Tak & Nie & Nie & Nie\\ +MCell & Tak & Tak & Nie & Nie & Tak & Tak & Nie & Nie & Nie\\ \hline -DDLab & Tak & Tak & Nie & Tak & Nie & Nie & Nie\\ +DDLab & Tak & Tak & Nie & Tak & Nie & Tak & Nie & Nie & Nie\\ \hline -Life32 & Nie & Nie & Tak & Tak & Nie & Nie & Nie\\ +Life32 & Nie & Tak & Nie & Nie & Tak & Tak & Nie & Nie & Nie\\ \hline -CelLab & Nie & Tak & Tak & Tak & Nie & Nie & Nie\\ +CelLab & Nie & Tak & Nie & Nie & Nie & Tak & Nie & Nie & Nie\\ \hline -WinLife & Nie & Nie & Nie & Tak & Nie & Nie & Nie +WinLife & Nie & Tak & Nie & Nie & Nie & Tak & Nie & Nie & Nie \end{tabular} \label{tab:} \end{table} Modified: trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-14 22:01:07 UTC (rev 325) +++ trunk/qcell/doc/licenciate_thesis/chap3/chap3.tex 2007-02-15 00:21:48 UTC (rev 326) @@ -4,13 +4,14 @@ \subsection {Podstawowe funkcje programu} \subsubsection {Wczytywanie opisu modelu z pliku} \label{subsec:wkp} -Pakiet umo\xBFliwia wczytywanie plik\xF3w opisu modelu w formatach FQT, N, KI. +Pakiet umo\xBFliwia wczytywanie plik\xF3w opisu modelu w formatach FQT, REAK, ZIFW, N, KI, LIF, LIFE. \subsubsection{Utrwalanie wynik\xF3w przetwarzania} Pakiet daje mo\xBFliwo\x9C\xE6 utrwalania efekt\xF3w eksperyment\xF3w w nast\xEApuj\xB9cych trybach: \begin{itemize} \item zapis poszczeg\xF3lnych element\xF3w modelu do osobnych plik\xF3w(KI, N, FL) \item zapis konfiguracji bie\xBF\xB9cej wraz z historiom przetwarzania do pojedy\xF1czego pliku +\item eksport konfiguracji do pliku LIF \end{itemize} \subsubsection {Tryby pracy symulatora} @@ -53,16 +54,19 @@ \begin{itemize} \item FQT - Jest formatem pliku tekstowego s\xB3u\xBF\xB9cego do opisu funkcji lokalnej, zawieraj\xB9cego w kolejnych wierszach: \begin{itemize} -\item identyfikator literowy typu funkcji -\item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczba warto\x9Cci argumentu i liczba warto\x9Cci funkcji -\item wiersz pliku okre\x9Cla numery zmiennych sumowanych +\item identyfikator literowy typu funkcji, tj FQT, +\item trzy liczby (separowane spacj\xB9): liczba argument\xF3w, liczba warto\x9Cci argumentu i liczba warto\x9Cci funkcji, +\item numery zmiennych sumowanych, + +\item Wiersze nast\xEApne podaj\xB9 kolejne sumy s (dziesi\xEAtnie) i ci\xB9gi warto\x9Cci dla ustalonego s: $f(s,w_{max}) f(s,w_{max-1}) ... f(s,w_{min})$. \end{itemize} -Wiersze nast\xEApne podaj\xB9 kolejne sumy s (dziesi\xEAtnie) i ci\xB9gi warto\x9Cci dla ustalonego s: f(s,wmax) f(s,wmax-1) ... f(s,wmin). \end{itemize} + + \item s\xB9siedztwo \begin{itemize} -\item N - Jest plikiem przeznaczony do specyfikowania uk\xB3ad\xF3w s\xB9siedztwa, np. kolejno\x9Cci i po\xB3o\xBFenia s\xB9siad\xF3w kom\xF3rki. Ma on nast\xEApuj\xB9c\xB9 struktur\xEA: +\item N - Jest plikiem przeznaczonym do specyfikowania uk\xB3ad\xF3w s\xB9siedztwa, np. kolejno\x9Cci i po\xB3o\xBFenia s\xB9siad\xF3w kom\xF3rki. Ma on nast\xEApuj\xB9c\xB9 struktur\xEA: \begin{itemize} \item Litera i cyfra: N{1,2,3} - identyfiktor pliku z rozmiarem przestrzeni s\xB9siad\xF3w; \item do czterech liczb ca\xB3kowitych: \textit{W K S n} - okre\x9Clenie liczby wierszy, kolumn, \x9Ccian oraz s\xB9siad\xF3w. @@ -76,9 +80,10 @@ \item KI - Plik opisu konfiguracji inicjalnej. Poszczeg\xF3lne wiersze oddzielone s\xB9 znakami ko\xF1ca linii, \x9Cciany zaznaczone s\xB9 poprzez pust\xB9 lini\xEA w pliku. \end{itemize} -\item inne formaty +\item formaty wewn\xEAtrzne \begin{itemize} -\item formaty wewn\xEAtrzne oparte na sk\xB3adni j\xEAzyka XML +\item format zapisu KB wykorzystuj\xB9cy j\xEAzyk XML, +\item wewn\xEAtrzny format opisu FL wykorzystuj\xB9cy j\xEAzyk XML \end{itemize} \end{itemize} Modified: trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-14 22:01:07 UTC (rev 325) +++ trunk/qcell/doc/licenciate_thesis/chap6/chap6.tex 2007-02-15 00:21:48 UTC (rev 326) @@ -58,6 +58,8 @@ \item Neigborhood - widok s\xB9siedztwa \end{itemize} +Podczas pracy symulatora w modelu TAK zak\xB3adki "2D Text View" oraz "2D Graphics View" przedstawiaj\xB9 przekr\xF3j sze\x9Ccianu KB w p\xB3aszczy\x9Fnie XY. przesuni\xEAcie p\xB3aszczyzny okre\x9Clone jest polem "Z Plane" w oknie "2D Text Tools". + \subsection{Pasek narz\xEAdzi} Pasek narz\xEAdzi jest domy\x9Clnym obszarem umiejscowienia narz\xEAdzi przypisanych dla poszczeg\xF3lnych funkcji pakietu. @@ -65,7 +67,7 @@ \begin{figure}[!h] \centering \includegraphics[width=3cm]{chap6/bTools} -\caption{Base Tools} +\caption{Basic Tools} \end{figure} Podstawowy zestaw narz\xEAdzi do edycji KB. Zawiera nast\xEApuj\xB9c przyciski: \begin{itemize} @@ -97,7 +99,7 @@ \item Distans - odleg\xB3o\x9C\xE6 KI od kamery \end{itemize} -\subsubsection{2D Tools} +\subsubsection{2D Text Tools} \begin{figure}[!h] \centering \includegraphics[width=3cm]{chap6/2DTools} @@ -108,10 +110,10 @@ \item Colors - interpretowanie za pomoc\xB9 kolor\xF3w \item Values - interpretowanie za pomoc\xB9 warto\x9Cci symboli \item Symbols - interpretacja za pomoc\xB9 symboli tekstowych -\item Z Plane - przesuni\xEAcie w p\xB3aszczy\x9Fnie przekroju XY(tylko dla KI 3D) +\item Z Plane - przesuni\xEAcie w p\xB3aszczy\x9Fnie przekroju XY (widocznie jedynie dla KI 3D) \end{itemize} -\subsubsection{1D Tools} +\subsubsection{1D Text Tools} \begin{figure}[!h] \centering \includegraphics[width=3cm]{chap6/1DTools} @@ -143,20 +145,20 @@ \item Tabela s\xB9siad\xF3w \item Clear Selected - usuwa zaznaczonego s\xB9siada w widoku s\xB9siedztwa -\item Set Selected - ustawia s\xB9siada w miejscu zaznaczonej kom\xF3rki -\item Set Zero point - ustawia punkt odniesienia dla s\xB9siad\xF3w -\item Reload - prze\xB3aduj aktualn\xB9 konfiguracj\xEA +\item Set Selected - wstawia s\xB9siada w miejscu zaznaczonej kom\xF3rki +\item Set reference point - ustawia punkt odniesienia dla s\xB9siad\xF3w +\item Reload - prze\xB3aduj aktualny uk\xB3ad s\xB9siad\xF3w \item Apply - zastosuj zmiany dla s\xB9siedztwa \end{itemize} \subsection{Widok zak\xB3adki} -Widok zak\xB3adki jest obszarem przeznaczonym do wizualizowania poszczeg\xF3lnych funkcjonalno\x9Cci. +Widok zak\xB3adki jest obszarem przeznaczonym do wizualizowania poszczeg\xF3lnych funkcjonalno\x9Cci. \section{Instrukcja obs\xB3ugi} \subsection{Zmiana widoku} -Manipulacji widokiem w oknach TAK i DAK(graficzny) dokonuje si\xEA poprzez przyci\x9Cni\xEAcie odpowiedniej kombinacji przycisk\xF3w myszy a nast\xEApnie przeci\xB9gni\xEAcie kursora w obszarze widok zak\xB3adki. +Manipulacji widokiem w oknach TAK i DAK (graficzny) dokonuje si\xEA poprzez przyci\x9Cni\xEAcie odpowiedniej kombinacji przycisk\xF3w myszy a nast\xEApnie przeci\xB9gni\xEAcie kursora w obszarze widok zak\xB3adki. \begin{itemize} \item przesuni\xEAcie - prawy przycisk myszy \item obr\xF3t(widok 3D) - jednocze\x9Cnie prawy oraz lewy przycisk myszy @@ -168,7 +170,7 @@ Edycja konfiguracji mo\xBFliwa jedynie w trybie obserwatora globalnego po za\xB3adowaniu wszystkich element\xF3w modelu(FL, N, KI). \subsubsection{Edycja bezpo\x9Crednia} -Aby bezpo\x9Crednio edytowa\xE6 KB automatu nale\xBFy wybra\xE6 tryb "Edit" z okna "Base Tools". Ka\xBFdorazowe zaznaczenie za pomoc\xB9 kursora kom\xF3rki KB spowoduje zmian\xEA symbolu na zaznaczony w tabeli symboli. +Aby bezpo\x9Crednio edytowa\xE6 KB automatu nale\xBFy wybra\xE6 tryb "Edit" z okna "Basic Tools". Ka\xBFdorazowe zaznaczenie za pomoc\xB9 kursora kom\xF3rki KB spowoduje zmian\xEA symbolu na zaznaczony w tabeli symboli. \subsubsection{Kopiowanie obszar\xF3w} Aby skopiowa\xE6 obszar nale\xBFy: @@ -176,12 +178,12 @@ \item zaznaczy\xE6 obszar poprzez przyci\x9Cni\xEAcie LPM \item przeci\xB9gni\xEAcie kursora w kopiowanym obszarze \item zwolni\xE6 LPM -\item przycisn\xB9\xE6 przycisk "Copy" z menu "Base Tools" +\item przycisn\xB9\xE6 przycisk "Copy" z menu "Basic Tools" \item zaznaczy\xE6 kom\xF3rk\xEA w miejscu docelowym dla kopiowanego obszaru -\item przycisn\xB9\xE6 przycisk "Paste" z menu "Base Tools" +\item przycisn\xB9\xE6 przycisk "Paste" z menu "Basic Tools" \end{itemize} -Kom\xF3rki zaznaczone zmieniaj\xB9 wygl\xB9d w trybie 3D(Rys. 6.7). W trybie 1-2D zaznaczenie sygnalizowane jest poprzez zmian koloru kom\xF3rek w tabeli na szary. +Kom\xF3rki zaznaczone zmieniaj\xB9 wygl\xB9d w trybie 3D (Rys. 6.7). W trybie 1-2D zaznaczenie sygnalizowane jest poprzez zmian koloru kom\xF3rek w tabeli na szary. \begin{figure}[!h] \centering @@ -189,14 +191,14 @@ \caption{Widok 3D Zaznaczenie} \end{figure} -\subsection{Zmiana po\xB3o\xBFenie obserwatora lokalnego} -Aby dokona\xE6 zmiany po\xB3o\xBFenie obserwator lokalnego nale\xBFy: +\subsection{Zmiana po\xB3o\xBFenia obserwatora lokalnego} +Aby dokona\xE6 zmiany po\xB3o\xBFenia obserwatora lokalnego nale\xBFy: \begin{itemize} \item prze\xB3\xB9czy\xE6 obserwatora w tryb lokalny \item zaznaczy\xE6 dowoln\xB9 kom\xF3rk\xEA planszy za pomoc\xB9 LPM \end{itemize} -W trybie 3D pozycja obserwatora lokalnego sygnalizowana jest poprzez ikon\xEA symbolizuj\xB9ce oko(Rys. 6.8). +W trybie 3D pozycja obserwatora lokalnego sygnalizowana jest poprzez ikon\xEA symbolizuj\xB9c\xB9 oko (Rys. 6.8). \begin{figure}[!h] \centering @@ -205,28 +207,28 @@ \end{figure} \subsection{Edycja funkcji lokalnej} -Edycja funkcji lokalnej mo\xBFliwa jest po za\xB3adowaniu pliku funkcji lokalnej z menu g\xB3\xF3wnego zak\xB3adki "File". +Edycja funkcji lokalnej mo\xBFliwa jest po za\xB3adowaniu pliku funkcji lokalnej z menu g\xB3\xF3wnego "File". -W celu zmiany warto\x9Cci funkcji lokalnej nale\xBFy w zak\xB3adce funkcji wybra\xE6 pole z tabeli funkcji lokalnej a nast\xEApnie wprowadzi\xE6 now\xB9 warto\x9C\xE6 ca pomoc\xB9 klawiatury. +W celu zmiany warto\x9Cci funkcji lokalnej nale\xBFy w "zak\xB3adce funkcji" wybra\xE6 pole z tabeli funkcji lokalnej a nast\xEApnie wprowadzi\xE6 now\xB9 warto\x9C\xE6 za pomoc\xB9 klawiatury. -Wprowadzenie warto\x9Cci ujemnej lub u\xBFycie symbolu "?" oznacza\xE6 b\xEAdzie i\xBF funkcja dla danej warto\x9Cci jest nieokre\x9Clona. Napotkanie na warto\x9C\xE6 nieokre\x9Clon\xB9 podczas obliczania KB spowoduje wstrzymanie oblicze\xF1 i przeniesienie u\xBFytkownika do tabeli funkcji z jednoczesnym zaznaczenie u\xBFytego pola nieokre\x9Clonego. Praca symulatora mo\xBFliwa jest gdy warto\x9C\xE6 funkcji zostanie wprowadzona lub zostanie zmieniona KB tak aby warto\x9C\xE6 nieokre\x9Clona nie by\xB3a u\xBFyta w obliczeniach. +Wprowadzenie warto\x9Cci ujemnej lub u\xBFycie symbolu "?" oznacza\xE6 b\xEAdzie i\xBF funkcja dla danej warto\x9Cci jest nieokre\x9Clona. Napotkanie na warto\x9C\xE6 nieokre\x9Clon\xB9 podczas obliczania KB spowoduje wstrzymanie oblicze\xF1 i przeniesienie u\xBFytkownika do tabeli funkcji z jednoczesnym zaznaczeniem u\xBFytego symbolu nieokre\x9Clonego. Praca symulatora mo\xBFliwa jest gdy warto\x9C\xE6 nieokre\x9Clona zostanie okre\x9Clona lub dokonana zostanie KB tak aby warto\x9C\xE6 nieokre\x9Clona nie by\xB3a u\xBFyta w obliczeniach. \subsection{Edycja symboli} -W celu dokonania zmiany znaku graficznego nale\xBFy zaznaczy\xE6 pole w kolumnie "Char" a nast\xEApnie wprowadzi\xE6 znak z klawiatury. +W celu dokonania zmiany znaku tekstowego nale\xBFy zaznaczy\xE6 pole w kolumnie "Char" a nast\xEApnie wprowadzi\xE6 znak z klawiatury. Aby zmieni\xE6 kolor przypisany do danego symbolu nale\xBFy dwa razy klikn\xB9\xE6 LPM w kolumnie "Colors" a nast\xEApnie z okna dialogowego wybra\xE6 kolor i zatwierdzi\xE6 przyciskiem "Ok". \section{Typowy eksperyment} Typowy eksperyment mo\xBFna podzieli\xE6 na nast\xEApuj\xB9ce fazy: \begin{itemize} -\item dob\xF3r modelu(N, FL) -\item dob\xF3r konfiguracji pocz\xB9tkowej(KI) +\item dob\xF3r modelu (N, FL) +\item dob\xF3r konfiguracji pocz\xB9tkowej (KI) \item iteracje krok\xF3w symulacji \item zapis wynik\xF3w \end{itemize} -Dob\xF3r modelu odbywa si\xEA poprzez wczytanie plik\xF3w konfiguracji funkcji lokalnej oraz s\xB9siedztwa. W tym celu nale\xBFy wybra\xE6 z menu g\xB3\xF3wnego zak\xB3adke "File" nast\xEApnie pozycje "Open". Po wczytaniu s\xB9siedztwa("Neigborhood"), funkcji lokalnej("Function"), oraz konfiguracji inicjalnej("World") mo\xBFliwe jest wykonanie kolejnych iteracji symulacji. +Dob\xF3r modelu odbywa si\xEA poprzez wczytanie plik\xF3w konfiguracji funkcji lokalnej oraz s\xB9siedztwa. W tym celu nale\xBFy wybra\xE6 z menu g\xB3\xF3wnego zak\xB3adk\xEA "File" nast\xEApnie pozycje "Open". Po wczytaniu s\xB9siedztwa ("Neigborhood"), funkcji lokalnej ("Function"), oraz konfiguracji inicjalnej ("World") mo\xBFliwe jest wykonanie kolejnych iteracji symulacji. \begin{figure}[!h] \centering @@ -242,8 +244,8 @@ \caption {Narz\xEAdzia iterowanie krok\xF3w} \end{figure} -\subsection{Podstawowy eksperyment 3D} -Poni\xBFsza +\subsection{Podstawowy eksperyment} + Rysunki 6.11 - 6.14 przedstawiaj\xB9 kolejne kroki symulacji. Po analizie por\xF3wnawczej zauwa\xBFy\xE6 mo\xBFna i\xBF widoczne obiekty zaklasyfikowa\xE6 mo\xBFna jako \xB3aziki. \begin{figure}[!h] @@ -271,12 +273,50 @@ \end{figure} -\subsection{Dynamiczne dobieranie modelu} +\subsection{Eksperyment dynamicznego dobieranie modelu obliczeniowego} Poni\xBFszy przyk\xB3ad obrazuje spos\xF3b dynamicznego doboru modelu obliczeniowego. Zadaniem docelowym jest okre\x9Cleni modelu umo\xBFliwiaj\xB9cego obrazowanie kolizji sygna\xB3\xF3w w przestrzeni 1D. Zak\xB3adamy \xBFe sygna\xB3y poruszaj\xB9 si\xEA z pr\xEAdko\x9Cci\xB9 V=1 w przeciwnych kierunkach oraz po kolizj\xB9 pr\xEAdko\x9C\xE6 i kierunek sygna\xB3\xF3w ma pozosta\xE6 bez zmian. Do przedstawienia kolizji niezb\xEAdny jest alfabetu o czterech symbolach oraz s\xB9siedztwo tr\xF3jelementowe. -Rysunek {} przedstawia tablice funkcji nieokre\x9Clonej. Widzimy na i\xBF wszystkie pola tabeli oznaczone s\xB9 znakiem "?" oznaczaj\xB9cym symbol nieokre\x9Clony. +\begin{figure}[!h] +\centering +\includegraphics[width=12cm]{chap6/undefinedfunction} +\caption {Tabela funkcji nieokre\x9Clonej} +\end{figure} -Rysunek {} uwidacznia tablice funkcji lokalnej zawieraj\xB9cej minimaln\xB9 liczb\xEA okre\x9Clonych warto\x9Cci +Rysunek {} przedstawia tablice funkcji nieokre\x9Clonej. Stopniowo wykonuj\xB9c kolejne iteracje symulacji u\xBFytkownik wype\xB3nia tablic\xEA funkcji lokalnej. Podczas symulacji ilekro\xE6 nast\xB9pi pr\xF3ba u\xBFycia symbolu nieokre\x9Clonego post\xEAp symulacji zostaje zatrzymany a w tablicy funkcji zaznaczony zostaje symbol nieokre\x9Clony (Rys ). Miejsce wyst\xB9pienia symbolu w wyznaczanej KB r\xF3wnie\xBF zostaje zaznaczone (Rys ). +\begin{figure}[!h] +\centering +\includegraphics[width=12cm]{chap6/fview} +\caption {Tabela funkcji nieokre\x9Clonej} +\end{figure} + +\begin{figure}[!h] +\centering +\includegraphics[width=12cm]{chap6/fdef} +\caption {Tabela funkcji nieokre\x9Clonej} +\end{figure} + +Rysunek {} uwidacznia tablice funkcji lokalnej zawieraj\xB9cej minimaln\xB9 liczb\xEA okre\x9Clonych warto\x9Cci niezb\xEAdnych do symulacji propagacji sygna\xB3\xF3w bez okre\x9Clenia zachowania podczas kolizji. + +\begin{figure}[!h] +\centering +\includegraphics[width=12cm]{chap6/movelr} +\caption {Tablicy funkcji dla propaguj\xB9cych sygna\xB3\xF3w} +\end{figure} + +\begin{figure}[!h] +\centering +\includegraphics[width=12cm]{chap6/compleattable} +\caption {Tablicy funkcji dla propaguj\xB9cych sygna\xB3\xF3w z uwzgl\xEAdnieniem wyst\xB9pienia kolizji} +\end{figure} + +Rysunek {} przedstawia tablice funkcji okre\x9Clon\xB9 w stopniu wystarczaj\xB9cym do realizacji za\xB3o\xBFe\xF1 docelowego eksperymentu. + +\begin{figure}[!h] +\centering +\includegraphics[width=14cm]{chap6/expdm} +\caption {Widok pracy AK} +\end{figure} + % vim:fencs=cp1250:fenc=cp1250 Added: trunk/qcell/doc/licenciate_thesis/chap6/compleattable.png =================================================================== (Binary files differ) Property changes on: trunk/qcell/doc/licenciate_thesis/chap6/compleattable.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/qcell/doc/licenciate_thesis/chap6/const0.png =================================================================== (Binary files differ) Property changes on: trunk/qcell/doc/licenciate_thesis/chap6/const0.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/qcell/doc/licenciate_thesis/chap6/expdm.png =================================================================== (Binary files differ) Property changes on: trunk/qcell/doc/licenciate_thesis/chap6/expdm.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/qcell/doc/licenciate_thesis/chap6/fdef.png =================================================================== (Binary files differ) Property changes on: trunk/qcell/doc/licenciate_thesis/chap6/fdef.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/qcell/doc/licenciate_thesis/chap6/fview.png =================================================================== (Binary files differ) Property changes on: trunk/qcell/doc/licenciate_thesis/chap6/fview.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/qcell/doc/licenciate_thesis/chap6/movelr.png =================================================================== (Binary files differ) Property changes on: trunk/qcell/doc/licenciate_thesis/chap6/movelr.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/qcell/doc/licenciate_thesis/chap6/undef.png =================================================================== (Binary files differ) Property changes on: trunk/qcell/doc/licenciate_thesis/chap6/undef.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/qcell/doc/licenciate_thesis/chap6/undefinedfunction.png =================================================================== (Binary files differ) Property changes on: trunk/qcell/doc/licenciate_thesis/chap6/undefinedfunction.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/qcell/doc/licenciate_thesis/chap6/wczyt.png =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-02-14 22:01:12
|
Revision: 325 http://svn.sourceforge.net/qcell/?rev=325&view=rev Author: dhubleizh Date: 2007-02-14 14:01:07 -0800 (Wed, 14 Feb 2007) Log Message: ----------- - I can't even remember all the things changed Modified Paths: -------------- trunk/qcell/baseheaders/basetools.ui trunk/qcell/baseheaders/simulationwindow.h trunk/qcell/baseheaders/simulationwindow.ui trunk/qcell/basesources/LocalFunction.cpp trunk/qcell/basesources/basetools.cpp trunk/qcell/basesources/functiontable.cpp trunk/qcell/basesources/simulationwindow.cpp trunk/qcell/parsers/FQT/FQTParserPlugin.cpp trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/baseheaders/basetools.ui =================================================================== --- trunk/qcell/baseheaders/basetools.ui 2007-02-14 19:10:56 UTC (rev 324) +++ trunk/qcell/baseheaders/basetools.ui 2007-02-14 22:01:07 UTC (rev 325) @@ -8,7 +8,7 @@ <rect> <x>0</x> <y>0</y> - <width>166</width> + <width>171</width> <height>494</height> </rect> </property> @@ -26,8 +26,8 @@ <widget class="QGroupBox" name="ViewModeGroup" > <property name="sizePolicy" > <sizepolicy> - <hsizetype>5</hsizetype> - <vsizetype>5</vsizetype> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -35,7 +35,7 @@ <property name="maximumSize" > <size> <width>16777215</width> - <height>16777215</height> + <height>115</height> </size> </property> <property name="title" > @@ -101,6 +101,9 @@ </item> <item> <widget class="QLabel" name="localObserversLabel" > + <property name="statusTip" > + <string>Shows local observers position (X,Y,Z)</string> + </property> <property name="text" > <string>Observers position:</string> </property> @@ -132,6 +135,15 @@ <property name="enabled" > <bool>false</bool> </property> + <property name="minimumSize" > + <size> + <width>0</width> + <height>15</height> + </size> + </property> + <property name="statusTip" > + <string>Shows local observers position (X,Y,Z)</string> + </property> <property name="text" > <string>(X,Y,Z)</string> </property> Modified: trunk/qcell/baseheaders/simulationwindow.h =================================================================== --- trunk/qcell/baseheaders/simulationwindow.h 2007-02-14 19:10:56 UTC (rev 324) +++ trunk/qcell/baseheaders/simulationwindow.h 2007-02-14 22:01:07 UTC (rev 325) @@ -125,6 +125,7 @@ Renderer *getNeighbourhoodEditor(void); Ui::simulationWindowClass ui; + void back1DTable(); protected slots: void zPlaneChange(int i); Modified: trunk/qcell/baseheaders/simulationwindow.ui =================================================================== --- trunk/qcell/baseheaders/simulationwindow.ui 2007-02-14 19:10:56 UTC (rev 324) +++ trunk/qcell/baseheaders/simulationwindow.ui 2007-02-14 22:01:07 UTC (rev 325) @@ -36,7 +36,7 @@ <enum>QTabWidget::Rounded</enum> </property> <property name="currentIndex" > - <number>4</number> + <number>5</number> </property> <widget class="QWidget" name="view3D" > <attribute name="title" > @@ -115,6 +115,14 @@ <attribute name="title" > <string>Function</string> </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + </layout> </widget> <widget class="QWidget" name="NeighbourhoodTab" > <attribute name="title" > Modified: trunk/qcell/basesources/LocalFunction.cpp =================================================================== --- trunk/qcell/basesources/LocalFunction.cpp 2007-02-14 19:10:56 UTC (rev 324) +++ trunk/qcell/basesources/LocalFunction.cpp 2007-02-14 22:01:07 UTC (rev 325) @@ -24,7 +24,7 @@ } valueTable.resize(numElements); - valueTable.fill(0); + valueTable.fill(-1); } int LocalFunction::mostPopularValue(void) Modified: trunk/qcell/basesources/basetools.cpp =================================================================== --- trunk/qcell/basesources/basetools.cpp 2007-02-14 19:10:56 UTC (rev 324) +++ trunk/qcell/basesources/basetools.cpp 2007-02-14 22:01:07 UTC (rev 325) @@ -136,12 +136,12 @@ QString label("("); for (int i = 0; i < coords.size(); i++) { - if (coords[i] > 0) - { +// if (coords[i] > 0) +// { label.append(QString("%1,") .arg(QString::number(coords[i])) ); - } +// } } label.chop(1); label.append(')'); Modified: trunk/qcell/basesources/functiontable.cpp =================================================================== --- trunk/qcell/basesources/functiontable.cpp 2007-02-14 19:10:56 UTC (rev 324) +++ trunk/qcell/basesources/functiontable.cpp 2007-02-14 22:01:07 UTC (rev 325) @@ -28,6 +28,7 @@ ++counter; } } + headers = function->rowsHeaders(); ui.functionTable->setVerticalHeaderLabels(headers); headers = function->columnHeaders(); @@ -56,20 +57,24 @@ void FunctionTable::selectCell(int index) { - int counter = 0; - QTableWidgetItem *item; - for(int i=0;i<ui.functionTable->rowCount();++i) - { - for(int j=0;j<ui.functionTable->columnCount();++j) - { - item = ui.functionTable->item(i, j); - if(counter==index) - item->setSelected(1); - else - item->setSelected(0); - counter++; - } - } + // The item we will be editing + QTableWidgetItem *item; + + // As dividing by 0 is bad + if (index > 0) + { + item = ui.functionTable->item( + index / ui.functionTable->columnCount(), + index % ui.functionTable->columnCount() % index + ); + } + else + { + item = ui.functionTable->item(0, 0); + } + + // Edit proper cell + ui.functionTable->editItem(item); } void FunctionTable::functionEdit(int row, int column) Modified: trunk/qcell/basesources/simulationwindow.cpp =================================================================== --- trunk/qcell/basesources/simulationwindow.cpp 2007-02-14 19:10:56 UTC (rev 324) +++ trunk/qcell/basesources/simulationwindow.cpp 2007-02-14 22:01:07 UTC (rev 325) @@ -773,7 +773,7 @@ ui.tabWidget->setTabEnabled(6, 0); // for test only - ui.functionTab->setLayout(new QVBoxLayout(ui.functionTab)); +// ui.functionTab->setLayout(new QVBoxLayout(ui.functionTab)); ft = new FunctionTable(ui.functionTab); ui.functionTab->layout()->addWidget(ft); @@ -1659,3 +1659,9 @@ // } } +void simulationWindow::back1DTable() +{ + table1DMem->removeRow(table1DMem->rowCount()-1); + table1DMem->removeRow(table1DMem->rowCount()-1); +} + Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-14 19:10:56 UTC (rev 324) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-02-14 22:01:07 UTC (rev 325) @@ -178,7 +178,7 @@ // Main function parsing lines[0] = lines[0].trimmed(); - format = QRegExp("^(\\d)+: [0-9A-z]{" + QString::number(free_args_columns-1) + "}[0-9A-z]$"); + format = QRegExp("^(\\d)+: [\\-0-9A-z]{" + QString::number(free_args_columns-1) + "}[\\-0-9A-z]$"); QStringList tmp; int tmp_sum,value_index; QVector<int> tmp_values; @@ -234,8 +234,12 @@ // Collecting this lines values tmp_sign = (int)value.toAscii(); - if(tmp_sign >= (int)'A') + if (tmp_sign == (int)'-') { + tmp_values.append(-1); + } + else if(tmp_sign >= (int)'A') + { tmp_values.append(tmp_sign - (int)'A' + 10); } @@ -293,7 +297,7 @@ switch(lf.getFunctonType()) { case LocalFunction::SUM_AND_SWITCH: - lf.setDefaultValue(0); + lf.setDefaultValue(-1); foreach(int sum, results.keys()) { for(int i=0; i < results[sum].size(); ++i) Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-02-14 19:10:56 UTC (rev 324) +++ trunk/qcell/visgui/MainWindow.cpp 2007-02-14 22:01:07 UTC (rev 325) @@ -818,7 +818,9 @@ iteration--; calc = *(data[iteration]); -// data.removeLast(); + data.removeLast(); + sw->back1DTable(); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |