pobierz

Transkrypt

pobierz
GRZEGORZ PAWEŁ KORBAŚ
Katedra Automatyzacji i Diagnostyki Układów Elektromechanicznych
PROJEKT SYSTEMU MINIMALIZACJI DLA ŚRODOWISKA
ZORIENTOWANEGO OBIEKTOWO
streszczenie: W artykule przedstawiono projekt systemu minimalizacji funkcji
wielu zmiennych o wartościach rzeczywistych. Projekt wykonano dla
środowiska zorientowanego obiektowo przy zastosowaniu zagadnień
programowania obiektowego i wzorców projektowych. Poszczególne elementy
systemu zobrazowano diagramami UML. Ostatecznie uzyskano prosty,
elastyczny i efektywny system, który zaimplementowano w środowisku Delphi
firmy Borland.
1. WSTĘP
W wielu dziedzinach nauki spotykamy się z koniecznością minimalizacji
funkcji wielu zmiennych. Zagadnienie to jest w szczególności podstawą
szeroko pojętej optymalizacji. Istnieje wiele numerycznych metod
minimalizacji – są one tworzone dla różnych założeń i pozwalają na odszukanie
minimum funkcji (funkcji celu) z różną szybkością i dokładnością. Jakość
funkcjonowania znanych algorytmów zależy od wielu czynników, np. od
rodzaju funkcji celu, punktu startowego, prawdopodobieństwa itp. Waga
zagadnienia powoduje, że istniejące metody są udoskonalane i wciąż powstają
nowe. Nie istnieje jedna metoda, która byłaby jednoznacznie najefektywniejsza
dla wszystkich problemów minimalizacji. Korzystne jest zatem posiadanie
wielu metod zgrupowanych w jednym przejrzystym systemie, w którym w
zależności od potrzeb można wybrać właściwą ze względu na zagadnienie i
związane z nim założenia.
Istnieją systemy, w których znajduje się wiele metod minimalizacji. Jako
przykład można wymienić programy Matlab i Mathematica. Są również
biblioteki programistyczne, do których można sięgnąć np. [1, 6]. Wydaje się
jednak, że istnieje potrzeba zaprojektowania kompleksowego systemu
minimalizacji, który nie tylko będzie efektywny i da możliwość szerokiego
wyboru właściwej metody minimalizacji, ale również będzie bardzo elastyczny.
Przez elastyczność rozumie się tu łatwość rozbudowy lub zmian. Przykładem
może być sytuacja, kiedy trzeba dodać nową metodę minimalizacji, nowe
założenia lub wykorzystać istniejące rozwiązania (biblioteki .dll, programy
typu Matlab lub inne systemy) z poziomu zaprojektowanego systemu
minimalizacji.
W ramach artykułu przedstawiono propozycję projektu elastycznego systemu
minimalizacji dla środowiska zorientowanego obiektowo. Implementacja
projektu może być dokonana w dowolnym środowisku obiektowym.W ramach
tej pracy zaimplementowano system w języku programowania Delphi firmy
Borland [2]. Opis projektu uzupełniany jest diagramami klas w języku UML
[7,8]. W projekcie wykorzystuje się zagadnienia dotyczące programowania
obiektowego oraz wzorców projektowych [9].
2. PROJEKT SYSTEMU MINIMALIZACJI
2.1.Metodologia projektowania i opis systemu
Projektowanie systemów w środowisku obiektowym może odbywać się w
oparciu o różne reguły. Ciekawe informacje dotyczące projektowania można
odnaleźć w [9]. Najbardziej podstawową kwestią wydaje się być dostrzeżenie
niezależnych obiektów wchodzących w skład systemu - samodzielnych bytów.
Określa się zatem zakres odpowiedzialności obiektu, co pociąga za sobą analizę
cech zmiennych obiektu i metod, które są konieczne do jego funkcjonalności
obiektu. Metody, które zostaną uznane za konieczne dla pewnej klasy obiektów
stanowią swoisty interfejs (czyli podstawowy zbiór poleceń klasy). Dla cech
zmiennych stosuje się regułę hermetyzacji (ukrywania) i na tej podstawie
zazwyczaj tworzy się nowe klasy. Właściwa analiza prowadzi do
odpowiedniego podziału systemu na klasy, co tworzy: z jednej strony - system
elastyczny, a z drugiej - funkcjonalny i przejrzysty. Klasy, na których opiera się
system są zasadniczo klasami abstrakcyjnymi lub interfejsami. Dopiero klasy
pochodne realizują konkretne implementacje klas abstrakcyjnych i stanowią o
rzeczywistym działaniu systemu. Zastosowanie klas abstrakcyjnych i
hermetyzacji pozwala oddzielić warstwę abstrakcyjną systemu od warstwy
implementacji.
Przeprowadzono szczegółową analizę systemu, w wyniku której uzyskano
podział systemu na klasy oraz ich powiązania w warstwie abstrakcyjnej – rys.
1. Podczas projektowania zdecydowano się wydzielić klasy: IPoczątkowe,
IKońcowe, IZałożenia oraz IInformacje – odpowiedzialne kolejno: za warunki
początkowe (np. punkt startowy), końcowe (np. dokładność) minimalizacji,
założenia dotyczące procesu minimalizacji (np. ograniczenia) i informacje
zwrotne (np. znalezione minimum). Kolejne klasy: IFunkcjaCelu i
IMetodaMini, są odpowiedzialne za realizację funkcji celu i metody
minimalizacji. Całość jest „spięta” klasą ISystemMini, której interfejs jest
zbliżony do IMetodaMini, ale pełni odmienne zadanie – zarządzające. Decyzja
o doborze minimalnego zestawu metod dla klas abstrakcyjnych jest efektem
wcześniejszych doświadczeń autora związanych z metodami minimalizacji np.
[3,4].
Rysunek 1. Diagram systemu w warstwie abstrakcyjnej
Rysunek 2. Diagram przykładowej implementacji elementów systemu
Elementy analizy poszczególnych klas można znaleźć w kolejnych
podpunktach artykułu. Przedstawiono tam również, w formie diagramów,
propozycje implementacji poszczególnych klas abstrakcyjnych. W
konsekwencji – dla przykładowych klas pochodnych (potomków) uzyskuje się
system, którego diagram klas przedstawia rysunek 2. Należy pamiętać, że
przedstawiono jedynie propozycję implementacji, natomiast o elastyczności
systemu stanowi fakt, że można dokonać zupełnie odmiennej implementacji dla
tego samego układu warstwy abstrakcyjnej. W dalszych punktach artykułu
pominięto (dla przejrzystości) kwestię konstruktorów i destruktorów – należy
jednak pamiętać, że w rzeczywistości metody te występują we wszystkich
omawianych klasach.
2.2.Projekt klasy IMetodaMini i przykładowej klasy pochodnej
TMetodaMini1
Klasa IMetodaMini jest abstrakcyjną klasą, która reprezentuje interfejs metody
minimalizacji. Klasy pochodne od IMetodaMini są odpowiedzialne za
właściwą implementację metod i użycie odpowiednich pól, aby zapewnić
odpowiednie działanie konkretnej realizacji metody minimalizacji. Zakres
odpowiedzialności systemu minimalizacji określono następująco (w treści
podkreślono elementy zmienne i pogrubiono podstawowe metody):
„Metoda minimalizacji (MM) jest odpowiedzialna za minimalizację różnych
funkcji celu. MM może przyjmować zbiór różnych warunków startowych, zbiór
różnych założeń dotyczących pracy, zbiór różnych warunków końca i może
zwracać zbiór różnych informacji zwrotnych. MM dostarcza metody ustalxx
pozwalające ustalić wszystkie wymienione wcześniej parametry – metody te
zwracają komunikaty, np. czy podane parametry są odpowiednie. MM wie jakie
parametry są odpowiednie. MM dostarcza metodę minimalizacja, która
dokonuje minimalizacji funkcji celu, aż do spełnienia warunków końca, lub
komunikuje brak ustawienia odpowiednich parametrów. MM dostarcza metody
start i krok, które umożliwiają dokonanie minimalizacji w formie krokowej.
Jeśli nie ustawiono odpowiednich parametrów lub konkretna realizacja MM nie
obsługuje trybu krokowego, wymienione metody zwracają odpowiednie
komunikaty.”
Projekt klasy IMetodaMini przedstawiono na rysunku 3. Metody ustalxx. jako
parametry otrzymują obiekty zgodne z innymi interfejsami, które zostaną
omówione w dalszej części artykułu. Przykładem realizacji metody o takim
interfejsie jest klasa TMetodaMini1 (potomek IMetodaMini). Klasa realizuje
klasyczną metodę minimalizacji algorytmem genetycznym [5]. Jej projekt
pokazano na rysunku 4.
Rysunek 3. Abstrakcyjna klasa IMetodaMini
Rysunek 4. Klasa TMetodaMini1
Można zaobserwować pola, które służą do przechowania informacji podanych
w metodach ustalxx. Pozostałe pola przechowują elementy charakterystyczne
dla algorytmu genetycznego: populację osobników, liczność populacji,
prawdopodobieństwo krzyżowania i mutacji. Dodatkowo dodana została
metoda ustalParametry, która ustala parametry algorytmu genetycznego. Warto
zauważyć, że istnieje inny (być może lepszy) sposób ustalania parametrów
algorytmu genetycznego. Sposób ten polega na konstrukcji klasy
TPoczatkoweGA pochodnej w stosunku do IPoczatkowe i przesłaniu
charakterystycznych dla danej metody parametrów, przy czym tylko ta metoda
(lub zbliżone) komunikowałyby gotowość współpracy z TPoczatkoweGA.
Wskazanie tu dwóch sposobów rozwiązania tego zagadnienia ma na celu
ukazanie elastyczności systemu nawet w kwestii tak subtelnych zagadnień.
2.3.Projekt klasy ISystemMini i przykładowej klasy pochodnej
TSystemMini1
Klasa ISystemMini jest klasą abstrakcyjną, która reprezentuje interfejs systemu
minimalizacji. Ta klasa jest klasą pochodną względem IMetodaMini, więc
interfejs systemu minimalizacji jest zbliżony do opisanego wcześniej interfejsu
metody minimalizacji. Różnica polega na tym, że system zarządza
minimalizacją, a metoda minimalizacji dokonuje jej zgodnie ze swoim
algorytmem. Różne systemy mogą używać tych samych lub różnych metod,
mogą też w ogóle nie korzystać z pochodnych IMetodaMini. Klasy pochodne
od ISystemMini są odpowiedzialne za właściwą implementację metod i użycie
odpowiednich pól, aby zapewnić odpowiednie działanie konkretnej realizacji
systemu minimalizacji. Zakres odpowiedzialności systemu minimalizacji
określono następująco:
„System minimalizacji (SM) jest odpowiedzialny za zarządzanie minimalizacją
różnych funkcji celu, przy użyciu zbioru różnych metod minimalizacji. SM
może przyjmować zbiór różnych warunków startowych, zbiór różnych założeń
dotyczących pracy, zbiór różnych warunków końca i może zwracać zbiór
różnych informacji zwrotnych. SM dostarcza metody ustalxx pozwalające
ustalić wszystkie wymienione wcześniej parametry – metody te zwracają
komunikaty, np. czy podane parametry są odpowiednie. SM dostarcza metodę
minimalizacja, która dokonuje minimalizacji funkcji celu, aż do spełnienia
warunków końca, lub komunikuje brak ustawienia odpowiednich parametrów.
SM dostarcza metody start i krok, które umożliwiają dokonanie minimalizacji
w formie krokowej. Jeśli nie ustawiono odpowiednich parametrów lub używana
metoda minimalizacji nie obsługuje trybu krokowego, wymienione metody
zwracają odpowiednie komunikaty.”
Projekt klasy ISystemMini przedstawiono na rysunku 5. Metody ustalxx jako
parametry otrzymują obiekty zgodne z innymi interfejsami, które zostaną
omówione w dalszej części artykułu.
Rysunek 5. Abstrakcyjna klasa ISystemMini
Rysunek 6. Klasa TSystemMini1
Przykładem realizacji klasy pochodnej ISystemMini jest klasa TSystemMini1.
Jej projekt pokazano na rysunku 6. W klasie TSystemMini1 informacje podane
za pomocą metod ustalxx zostają zapamiętane w prywatnych polach klasy. W
najprostszym przypadku TSystemMini1 może poza zapamiętaniem informacji
wywoływać jedynie metody podanej klasy MM (metody minimalizacji).
2.4.Projekt klasy IFunkcjaCelu i przykładowej klasy pochodnej
TFunkcjaCelu1
Abstrakcyjna klasa IFunkcjaCelu zapewnia interfejs funkcji celu, czyli funkcji,
której minimum jest poszukiwane. Zakres odpowiedzialności funkcji celu
określono następująco:
„Funkcja celu (FC) reprezentuje funkcję o wartościach rzeczywistych określoną
dla n zmiennych rzeczywistych. FC dostarcza metodę licz, której argumentem
jest wektor (klasy IWektor). Metoda ta zwraca wartość funkcji dla podawanego
wektora lub podaje komunikat o błędzie (w zmiennej) jeśli wektor ma zły
wymiar lub nie należy do dziedziny funkcji. ”
Projekt klasy IFunkcjaCelu przedstawiono na rysunku 7. Metoda licz jako
parametry otrzymuje obiekty zgodne z interfejsem IWektor, który
przedstawiono na rysunku 8.
Rysunek 7. Klasa abstrakcyjna IFunkcjaCelu i klasa TFunkcjaCelu1
Rysunek 8. Pomocnicza klasa abstrakcyjna IWektor
Rysunek 9. Klasa TWektor1
Przykładem realizacji funkcji celu o interfejsie zgodnym z IFunkcjaCelu jest
klasa pochodna TFunkcjaCelu1, która w ramach metody licz dokonuje
sprawdzenia poprawności podanych danych i oblicza wartość pewnej funkcji
wielu zmiennych (rys. 7). Na rysunku 9 przedstawiono przykładową klasę
TWektor1 (pochodną od IWektor). Klasa ta reprezentuje wektor
przechowywany w dynamicznej tablicy liczb zmiennoprzecinkowych.
2.5.Projekty pozostałych klas
Można założyć, że w szczególnym przypadku użytkownik systemu
minimalizacji nie poda żadnych warunków startowych i końcowych oraz
żadnych założeń licząc na to, że odpowiednio zaimplementowany system
zachowa się w pełni automatycznie i znajdzie minimum (globalne lub lokalne) przerywając pracę w odpowiednim czasie. Można także przyjąć, że w pewnych
sytuacjach użytkownik nie będzie wymagał żadnych informacji zwrotnych.
Dlatego też klasy abstrakcyjne IPoczatkowe, IKoncowe, IZalozenia oraz
IInformacje nie dostarczają żadnych metod. Z założenia nie są za nic
odpowiedzialne – odpowiedzialność spoczywa na obiektach, które
wykorzystują obiekty tych klas. Różnica pomiędzy wymienionymi klasami
związana jest wyłącznie z celem ich zastosowania i konkretnymi klasami
pochodnymi. Projekty wymienionych klas i ich przykładowych klas
pochodnych przedstawiono na rysunkach 10 i 11.
Rysunek 10. Pozostałe klasy abstrakcyjne systemu
Rysunek 11. Przykładowe klasy pochodne
Klasa TPoczatkowe1 reprezentuje warunek punktu startowego minimalizacji.
Klasa TKoncowe1 reprezentuje warunek maksymalnej liczby iteracji procesu
minimalizacji. Klasa TZalozenia1 reprezentuje ograniczenia dolne i górne
obszaru poszukiwania minimum. Klasa TInformacje1 reprezentuje informację o
znalezionym minimum.
Bez naruszania już zaprojektowanej warstwy abstrakcyjnej można
zmodyfikować system dodając wspólnego przodka dla klas IPoczatkowe,
IKoncowe, IZalozenia oraz IInformacje. Wynika to z jednakowego (pustego)
interfejsu tych klas. Wspomniane rozwiązanie może wprowadzić do systemu
dodatkowe możliwości.
3. PRZYKŁADY ROZBUDOWY SYSTEMU
3.1.Dodanie nowej metody minimalizacji
Rysunek 12. Dodanie nowej metody minimalizacji
Rozważono możliwość rozbudowy systemu o nową metodę minimalizacji, do
obsługi której tworzy się nową klasę TMetodaMiniN101. Założono, że metoda
obsługuje niektóre istniejące już w systemie warunki początkowe, końcowe,
założenia i informacje wyjściowe, ponadto obsługuje jeden dodatkowy
warunek początkowy (klasa TPoczątkoweN16) i dostarcza dodatkowych
informacji wyjściowych (klasa TInformacjeN13). Dodawana metoda ma
(zgodnie z wcześniejszą specyfikacją) rozpoznawać obsługiwane przez siebie
założenia. Musi też mieć zaimplementowane wszystkie metody dziedziczone od
klasy IMetodaMini. Na rysunku 12 przedstawiono diagram klas dla dodanych
do systemu elementów.
3.2.Adaptacja niedostosowanej klasy lub funkcji minimalizacji
Rysunek 13. Adaptacja klasy o niewłaściwym interfejsie
Rysunek 14. Adaptacja funkcji z pliku dll
Rozważono możliwość wykorzystania zaimplementowanej już metody
minimalizacji. Przyjęto jednak, że metoda ta dostarczona została w formie
klasy niezgodnej z interfejsem IMetodaMini lub jest dostępna jako zewnętrzna
funkcja (np. w pliku dll). Stosowane tu rozwiązanie jest zgodne ze wzorcami
projektowymi i nosi nazwę wzorca adaptera. Na rysunkach 13 i 14
przedstawiono diagram dla dodanych do systemu klas TMetodaMiniN102a i
TMetodaMiniN102b dotyczących obydwu opisanych powyżej sytuacji.
3.3.Wykorzystanie istniejącego zewnętrznego systemu minimalizacji
Rysunek 15. Wykorzystanie zewnętrznego systemu minimalizacji
Rozważono możliwość wykorzystania gotowego zewnętrznego systemu
minimalizacji (np. TMinuit, Matlab). Jest wiele możliwości rozwiązań tego
zagadnienia. Jako przykład utworzono nową klasę TSystemMiniN3 (pochodną
ISystemMini). Klasa ta realizuje komunikację z istniejącym zewnętrznym
systemem minimalizacji, wykrywa jego istnienie i wywołuje odpowiednie
metody minimalizacji. Użytkownik musi jednak zakomunikować systemowi,
której metody chce używać. W tym celu tworzy się klasy TMetodaMini1S3,
TMetodaMini2S3 i TMetodaMini3S3. Klasy te nie przechowują rzeczywistych
metod minimalizacji – są jedynie informacjami dla TSystemMiniN3. Klasy te
muszą jednak implementować odpowiedni dla nich interfejs zgodny z
IMetodaMini. W najprostszym przypadku – dla każdej ze swoich metod
zwracają informację o błędzie. Dzięki temu system inny niż TSystemMiniN3
nie może ich niewłaściwie wykorzystać. Na rysunku 15 pokazano diagram
zgodny z opisaną sytuacją dodając także pochodną klasy IInformacje.
3.4.Rozbudowa istniejącego systemu
Rozważono możliwość rozbudowy istniejącego systemu minimalizacji
TSystemMiniN3, będącego pochodną ISystemMini. Może to mieć miejsce, gdy
pojawia się nowa wersja zewnętrznego systemu minimalizacji i posiadana klasa
realizująca obsługę tego systemu nie jest już w pełni aktualna. Oczywiście jeśli
zmiany systemu są duże warto napisać zupełnie nową klasę. Jeśli jednak
zmiany nie są wielkie (pewne metody minimalizacji dodano, niektóre usunięto,
ale większość jest taka sama) opłaca się zastosować wzorzec adaptera i
hermetyzować TSystemMiniN3 w nowej klasie TSystemMiniN4. Odpowiedni
diagram przedstawiono na rysunku 16.
Rysunek 16. Rozbudowa istniejącego systemu minimalizacji
4. IMPLEMENTACJA PROJEKTU
Opisany system został zaimplementowany za pomocą obiektowego języka
programowania Delphi firmy Borland. Forma implementacji była zbliżona do
przykładów podawanych w ramach artykułu. Wprowadzono kilkanaście metod
minimalizacji: deterministycznych (gradientowych i bezgradientowych),
ewolucyjnych i hybrydowych. Sprawdzono również możliwość rozbudowy
systemu zgodnie z opisanymi wcześniej punktami. W konsekwencji uzyskano
bibliotekę programistyczną zawierającą klasy zaprojektowanego systemu. W
oparciu o bibliotekę napisano aplikację, dzięki której z powodzeniem dokonano
minimalizacji kilkudziesięciu funkcji wielu zmiennych za pomocą różnych
metod.
Poniżej przedstawiony został najprostszy przykład zastosowania opisanych
wcześniej klas w środowisku Delphi – w ramach pojedynczej procedury
tworzone są, wykorzystywane i niszczone konkretne klasy związane z
minimalizacją wybranej funkcji celu.
Procedure przyklad;
var MetodaMini1:TMetodaMini1;
Koncowe1:TKoncowe1;
Zalozenia1:TZalozenia1;
Informacje1:TInformacje1;
FunkcjaCelu1:TFunkcjaCelu1;
Begin
... {wywołanie konstruktorów poszczególnych klas}
MetodaMini1.ustalKoncowe([Koncowe1]);
MetodaMini1.ustalZalozenia([Zalozenia1]);
MetodaMini1.ustalInformacje([Informacje1]);
MetodaMini1.ustalFCelu(FunkcjaCelu1);
MetodaMini1.minimalizacja;
...{pobranie i wyświetlenie wyników z Informacje1}
...{wywołanie destruktorów poszczególnych klas}
End;
Przykładowe klasy odpowiadają opisanym w ramach artykułu. Wykorzystuje
się zatem obiekt MetodaMini1 reprezentujący algorytm genetyczny. Ustala się
warunek zakończenia minimalizacji przekazując obiekt Koncowe1, który
reprezentuje maksymalną ilość iteracji. Ustala się założenia przekazując obiekt
Zalozenia1,
który
reprezentuje
ograniczenia
prostokątne
obszaru
poszukiwania minimum. Ustala się żądane informacje wyjściowe przekazując
obiekt Informacje1, który reprezentuje znalezione minimum. W końcu ustala
się funkcję celu przekazując obiekt FunkcjaCelu1 i wywołuje proces
minimalizacji.
5. PODSUMOWANIE
W artykule przedstawiono projekt systemu minimalizacji funkcji wielu
zmiennych o wartościach rzeczywistych. Główny nacisk położono zarówno na
efektywność i prostotę systemu jak i na jego elastyczność. W ramach projektu
wykorzystano reguły rządzące środowiskami obiektowymi ze szczególnym
uwzględnieniem nurtu wzorców projektowych. Najistotniejszy efekt
projektowy uzyskano w warstwie abstrakcyjnej, gdzie system jest
reprezentowany przez grupę odpowiednio powiązanych abstrakcyjnych klas.
Przedstawiono także przykłady implementacji poszczególnych elementów
systemu i wskazano na różne możliwości jego rozbudowy. Praktyczna
realizacja prezentowanego systemu zarówno w formie tworzenia bibliotek
programistycznych jak i tworzenia opartej na systemie aplikacji potwierdza, że
system posiada zakładane wcześniej zalety:
– Jest prosty i przejrzysty z punktu widzenia programisty. Tworzenie kodu
odpowiadającego konkretnej implementacji jest dzięki temu znacznie
prostsze. Co więcej – mniej jest sytuacji w której programista może
popełnić błąd, a jeśli już sytuacja taka zaistnieje, to zarówno lokalizacja jak
i poprawa błędu jest łatwiejsza.
– Jest efektywny, czyli potrafi dokonać minimalizacji różnych funkcji celu za
pomocą różnych metod minimalizacji, przy różnych założeniach i
warunkach. Zaprojektowany interfejs umożliwia nie tylko przeprowadzenie
minimalizacji jednostanowiskowej metodą (procedurą) minimalizacja.
Istnienie metod start i krok ułatwia z założenia pracę wielowątkową lub
tworzenie aplikacji do minimalizacji w sieci. Założenia te są potwierdzone
w wymiarze praktycznym. Na przydatność włączenia tych metod do
podstawowego interfejsu ISystemMini oraz IMetodaMini wskazywały
wcześniejsze doświadczenia autora np. [4]. Jednocześnie system
przewiduje, że metody te mogą nie być obsługiwane (odpowiednie
komunikaty – zależne od implementacji).
– Ogromną zaletą systemu jest jego elastyczność. Projekt został wykonany w
ten sposób, aby rozbudowa lub zamiana poszczególnych elementów systemu
nie sprawiała problemu. W praktyce oznacza to, że programista chcąc coś
dodać lub zmienić może pisać nową klasę (która może używać już
istniejących elementów) bez jakiejkolwiek zmiany w kodzie, który został
napisany wcześniej. Taka metodologia umożliwia pracę nad implementacją
systemu przez wielu programistów przy zachowaniu pewności, że tworzone
przez nich (zupełnie niezależnie) klasy będą kompatybilne.
6. LITERATURA
[1] BARON B., MARCOL A., PAWLIKOWSKI S.: Metody numeryczne w
Delphi 4, Helion, Gliwice 1999
[2] CANTU M.: Delphi 4 – praktyka programowania, Mikom, Warszawa 1999
[3] KORBAŚ G.P.: Badanie efektywności wyznaczania parametrów modeli
matematycznych za pomocą gradientowych i bezgradientowych metod
minimalizacji, Ogólnopolskie Warsztaty Doktoranckie, Istebna 2003
[4] KORBAŚ G.P.: Sieciowa implementacja hybrydowej metody minimalizacji
GA-HJmod, Międzynarodowe Warsztaty Doktoranckie, Wisła 2004
[5] MICHALEWICZ Z.: Algorytmy genetyczne + struktury danych = programy
ewolucyjne, WNT, Warszawa 1996
[6] MINUIT – reference manual, CERN, Geneva 1992
[7] OMG Unified Modeling Language Specification, version 1.5,
http://www.uml.com z dnia 10.11.2004
[8] MILLER R.: Practical UML: A Hands-On Introduction for Developers,
http://www.borland.com z dnia 12.11.2004
[9] SHALLOWAY A., TROTT J.R.: Programowanie zorientowane obiektowo.
Wzorce projektowe, Helion, Gliwice 2001
Project of the minimization system for an object oriented environment.
summary: The paper presents the project of the minimization system. It is
designed for object oriented environment with the use of object oriented
programming rules and design patterns. UML diagrams of project parts are
presented. The system is simple, effective and flexible. It has been implemented
in Borland's Delphi.