1. Dany będzie fragment kodu w C++.
?2. Czym różnią się od siebie zmienne statyczne, automatyczne i dynamiczne? Podaj przykłady.
Zmienne automatyczne
Zmienna tworzona „na nowo” przy każdym uruchomieniu funkcji
Domyślny rodzaj zmiennych lokalnych
Są automatycznie tworzone i usuwane w czasie wykonywania programu
int zmienna
Zmienne statyczne
Wartość zmiennej zapamiętywana pomiędzy kolejnymi wywołaniami funkcji
Każda zmienna globalna jest jednocześnie zmienna statyczna (wystarczy zadeklarować ją w programie poza obszarem funkcji)
Są tworzone raz, przy wywołaniu programu
Static int zmienna
Zmienne dynamiczne
Mogą być tworzone i usuwanie w dowolnym momencie działania programu
Maksymalny rezerwowany obszar zależy od systemu i dostępności pamięci
Dają możliwość kontroli nad przydziałem pamięci (np. reakcję, gdy nie uda się utworzyć odpowiednio dużej tablicy
Dostęp do zmiennych dynamicznych możliwy jest wyłącznie z użyciem wskaźników
Nie mają nazw - powstają w czasie działania programu
typ *wskaznik;
wskaznik=new typ;
3. Czym są i do czego służą zmienne wskaźnikowe? Kiedy ich używany? Jakie mają zalety? Jakie niosą niebezpieczeństwa?
Rodzaj zmiennych służący do przechowania adresów innych zmiennych określonego typu.
używamy ich przy:
- Operacjach na tablicach, ciągach znaków, strukturach, obiektach
- Operacjach na zmiennych dynamicznych
- Przekazywaniu parametrów do funkcji
ZALETY:
Zmienne są identyfikowane przez ich nazwy
Podanie nazwy zmiennej w wyrażeniu, oznacza, że chcemy pobrać / przypisać wartość z / do pewnej komórki pamięci W tym celu wykorzystuje się zmienne wskaźnikowe (pointers)
Wewnętrznie program operuje jednak na adresach komórek, a nie na ich nazwach
Język C/C++ daje możliwość bezpośredniego operowania także na adresach komórek pamięci
Zmienne wskaźnikowe można umieszczać jako część innych struktur, tablic, obiektów
Można utworzyć wskaźnik do wskaźnika
Niebezpieczeństwa:
Błędne użycie wskaźników może mieć katastrofalne skutki dla programu
Wskaźnik niezainicjowany lub wskaźnik o błędnej wartości wskazuje niewłaściwe miejsce w pamięci! \\nie wiemy co tam się znajduje
Można nadpisać / usunąć sobie dane lub fragment programu z pamięci
Wskaźnik o typie niezgodnym z typem zmiennej spowoduje błędne odczytanie danych (np. obcięcie bitów)
4. Do czego służą zmienne dynamiczne? Jak je utworzyć i w jaki sposób uzyskać do nich dostęp (w C++)? Jakie mają zalety?
• Do dynamicznego przydzielania i zwalniania
pamięci w C++ służą polecenia:
new - utworzenie zmiennej dynamicznej
delete - usunięcie zmiennej dynamicznej
- Składnia:
typ *wskaznik;
wskaznik=new typ;
delete wskaznik;
delete[] wskaznik; - jeżeli wskaznik wskazuje na tablicę
ZALETY:
• Zmienne dynamiczne mogą być tworzone i usuwanie w dowolnym momencie działania programu
- Są umieszczane w obszarze sterty (heap)
- Maksymalny rezerwowany obszar zależy od systemu i dostępności pamięci
• Np. w Windows XP można zadeklarować tablice do 2GB każdą
- Dają możliwość kontroli nad przydziałem pamięci
• Np. reakcję, gdy nie uda się utworzyć odpowiednio dużej tablicy
• Można zmieniać ich rozmiar w czasie działania programu
- Dostęp do zmiennych dynamicznych możliwy jest wyłącznie z użyciem wskaźników
• Nie mają nazw - powstają w czasie działania programu
5. Czym są klasy i obiekty w programowaniu obiektowym? Z czego się składają? Czym są właściwości, metody i zdarzenia? (6)
Obiekt (zmienna obiektowa)
- Struktura łącza w sobie:
Dane / zmienne i stałe (właściwości)
- Przechowują wartości
- Opisują stan obiektu i „konfigurują” jego zachowanie gdy zostanie wywołana któraś z metod
Funkcje (metody)
- Pozwalają operować na danych i zmieniać właściwości
Klasa (typ obiektowy) „Typ” obiektu
- Pozwala utworzyć wiele obiektów o tej samej strukturze (Tak, jak tworzy się wiele zmiennych tego samego typu)
Właściwości (property, properties)
-Odpowiednik zmiennych - w szczególności pól struktury
-Przechowujące pewne wartości i / lub „konfigurują” zachowanie się obiektu
Metody (method, methods)
- Są odpowiednikiem funkcji
- Pobierają lub ustawiają nowe wartości właściwości obiektu
- Można do nich przekazywać parametry i „odebrać” od nich wynik działania
Zdarzenia (event, events)
- Mogą być wywołane przez użytkownika (np. kliknięcie, przesunięcie wskaźnika myszy, wciśnięcie klawisza, rozwinięcie listy)
- Mogą być wywołane przez zmianę stanu obiektu (np. w wyniku działania jakiejś metody)
6. Co to jest konstruktor i destruktor obiektu? 2
Konstruktor-jest to specjalna funkcja danej klasy w programowaniu obiektowym, wywoływana w przy okazji tworzenia każdego obiektu danej klasy. Nie musimy jawnie go wywoływać, w momencie tworzenia obiektu, zostanie on wywołany automatycznie. W języku C++ funkcja może stać się konstruktorem, jeśli ma identyczną nazwę jak nazwa klasy oraz nie zwraca żadnej wartości (nawet void). Jeśli nie zadeklarujemy konstruktora sami, to zrobi to za nas kompilator, gdyż każda klasa musi mieć swój konstruktor.
Destruktor-jest funkcją, którą wykonuje się w celu zwolnienia pamięci przydzielonej dodatkowym obiektom lub innych zasobów. Zasady "przemiany" zwykłej funkcji do destruktora, są podobne do tych tyczących się konstruktora. Jedyna zmiana tyczy się nazwy funkcji: Musi się ona zaczynać od znaku tyldy ~. Należy pamiętać, że destruktor nie ma typu ani parametrów wejściowych.
Jeśli nie zadeklarujemy go sami, to zrobi to za nas kompilator, gdyż każda klasa musi mieć swój destruktor.
7. Jakie zalety ma programowanie obiektowe? 2
Zalety w stosunku do programowania strukturalnego
Bardziej naturalny podział i grupowanie elementów programu
Lepsze logiczne pogrupowanie danych i metod na nich operujących (klasy i obiekty)
Łatwe tworzenie drzewa zależności między klasami (dziedziczenie)
Możliwość „zabezpieczenia” danych przed ich przekształceniem przez „niepowołaną” funkcję (enkapsulacja)
Łatwiejsze modyfikowanie kodu
Zmiany wewnątrz klasy niosą mniejsze niebezpieczeństwo uszkodzenia innych elementów programu - klasy są w dużym stopniu „samowystarczalne”
Ułatwia zarządzenie kodem programu: Zwłaszcza w dużych projektach
Ułatwia współpracę w dużych zespołach projektowych: Każdy zespół zajmuje się swoimi klasami
8. Na czym polega mechanizm dziedziczenia w programowaniu obiektowym? 2
Dziedziczenie (inheritance)
Polega na utworzeniu nowej klasy (podklasy, potomka, klasy pochodnej, child class) na bazie klasy już istniejącej (nadklasy, rodzica, klasy bazowej, base class)
Przy dziedziczeniu elementy klasy bazowej są „kopiowane” do nowej, pochodnej klasy
W nowej klasie wystarczy dodać brakujące elementy, których nie było w klasie bazowej
Dzięki dziedziczeniu nie trzeba tworzyć nowej, podobnej klasy od podstaw
Proces dziedziczenia może być „wielopoziomowy”
Klasa pochodna może być klasą bazową dla kolejnej klasy pochodnej
Powstaje drzewiasta zależność kolejnych klas
9. Na czym polega enkaspulacja / hermetyzacja w programowaniu obiektowym? W jaki sposób jest realizowana w języku C++? 5
Hermetyzacja polega na ukrywaniu pewnych danych składowych lub metod obiektów danej klasy tak, aby były one dostępne tylko metodom wewnętrznym danej klasy. Jest to mechanizm „zabezpieczania” elementów
obiektu przed dostępem do nich przez obiekty innej klasy. W języku C++ jest to realizowane ze pomocą przydzielania, a raczej określania własności poszczególnych składowych klasy. Własności, te dzielimy na: publiczne - czyli takie do których dostęp mają także obiekty innych klas (deklarujemy ich „przydział” poprzez dodanie przed nazwą metody, zmiennej itd. słowa „public”) oraz prywatne - do których dostęp jest ograniczony do metod należących do obiektów tej samej klasy lub klas pochodnych. Deklarujemy je poprzez dodanie przed nazwą metody, zmiennej itd. słowa „private” lub „protected”. Różnica pomiędzy tymi modyfikatorami jest taka, że atrybut czy metoda oznaczona jako „private” jest niewidoczna, ale również nie może być dziedziczona, natomiast oznaczona jako „protected” może być dziedziczona.
10. W jaki sposób, w języku C++ utworzyć klasę i klasę pochodną? Do czego służą atrybuty członków klasy i specyfikatory dostępu przy dziedziczeniu?
• Utworzenie klasy pochodnej
class naz_k_pochodnej: spec_dostepu naz_k_bazowej { };
• Atrybuty - określają sposób dostępu do elementów obiektu
• Specyfikator dostępu Określa:
• sposób w jaki elementy klasy bazowej zostaną odziedziczone
przez klasę pochodną
• jaki będzie dostęp do nich w klasie pochodnej
• jaki będzie dostęp do nich w dalszych klasach pochodnych
• Specyfikatory - sposób dziedziczenia atrybutów
11. Jak działa i do czego służy mechanizm wyjątków?
• Sygnalizowanie błędów
- Wyjątki (exceptions)
• Funkcja zgłasza błąd / anomalię „rzucając” wyjątek
- Instrukcja throw
• Wyjątki są łapane przez kod wyższego poziomu
- Konstrukcja try…catch
» Blok try {} - zawiera instrukcje / funkcje, które potencjalnie
mogą zgłaszać błąd
» Blok catch () {} - zawiera instrukcje obsługi błędu
• Instrukcja throw
- Może rzucać wyjątek dowolnego typu
» Np. w zależności od błędu raz int, a innym razem tekst
• Blok catch
- „Łapie” wyjątek określonego typu
» Jeśli przypiszemy go na zmienną, wiemy jaka wartość została rzucona
- Może być kilka kolejnych bloków catch, dla różnych typów
wyjątków
- catch (...) „łapie” wyjątek dowolnego typu
» Ograniczenie: nie można przypisać rzuconej wartości na
zmienną
- Jeśli nie ma bloku odpowiadającego typowi wyjątku, wyjątek
przekazywany jest do kodu wyższego rzędu. Jeśli nigdzie nie
zostanie napotkany odpowiedni blok catch - program zgłasza
wyjątek do systemu operacyjnego i kończy pracę.
- Kolejność bloków catch ma znaczenie - wybierany jest pierwszy
Pasujący
- Uwagi dodatkowe:
• Rzucenie wyjątku przerywa dalsze instrukcje - program
przechodzi od razu do odpowiedniego bloku catch
• Wyjątki powinny być łapane jak najbliżej miejsca ich rzucenia
- …ale musi to być miejsce, w którym już możliwe jest obsłużenie
danego wyjątku
• Po obsłużeniu wyjątku program powinien podejmować
normalną pracę
• Mechanizmu wyjątków nie należy stosować „na siłę”
- Np. gdy program inaczej obsługuje błędy i działa to poprawnie
• Mechanizm wyjątków
- Zalety:
• Zwiększa niezawodność programu
- Pozwalają łatwo zauważyć i zareagować na anomalie i błędy
- Program może „sensownie” zachować się w przypadku
wystąpienia błędu (zamiast od razu się kończyć)
- Wiemy że wystąpił błąd oraz jaki to błąd
» Większość funkcji standardowych i systemowych wykorzystuje
mechanizm wyjątków do sygnalizowania błędów
12. Na czym polega analiza, modelowanie i projektowanie obiektowe? 4
Analiza obiektowa
Zajmuje się badaniem i klasyfikacją obiektów pojęciowych
Obiekty pojęciowe reprezentują pojęcia i koncepcje ze świata rzeczywistego, z dziedziny, która jest analizowana (nie są to obiekty w sensie programistycznym)
Projektowanie
Polega na określeniu koncepcji rozwiązania, które zrealizuje wymagania stawiane programowi
Trudność polega na tym, że istnieje wiele możliwości
Istnieją tzw. wzorce projektowe, wskazujące możliwe rozwiązania typowych problemów
Najważniejszym elementem projektowania obiektowego jest określenie co mają zawierać poszczególne klasy, jak ze sobą współpracować i jak być ze sobą powiązane
Publiczność i prywatność pól
Sposób dziedziczenia
Rozwiązaniem może być np. opis schematu bazy danych lub klas programowych
Modelowanie:
Tworzenie uproszczonego opisu świata rzeczywistego
Cele modelowania obiektowego:
Przeanalizowania istniejących obiektów i zależności między nimi
Zaprojektowania nowych obiektów i określeniu zależności między nimi
13. Czym jest .NET? Jakie ma zalety? Czym różni się klasyczny program komputerowy od programu napisanego dla .NET? Podpowiedź: chodzi przede wszystkim o sposób uruchamiania - należy wyjaśnić różnice .NET
.NET Framework
Platforma programistyczna opracowana przez Microsoft
Pozwala stworzyć programy przenośne na różne systemy operacyjne (Windows, Linux, MacOS)
Obejmuje:
Środowisko Uruchomieniowe Wspólnego Języka (Common Language Runtime - CLR)
Biblioteki klas
Zadaniem platformy jest:
Uruchomienie aplikacji (Kompilacja i wykonanie kodu)
Zarządzanie wykonywaną aplikacją (Kodem aplikacji; Pamięcią; Zabezpieczeniami)
Jest rozwiązaniem konkurencyjnym dla Javy. Opracowany przez Microsoft, Hewlett-Packard i Intel w 2000r.
Nie jest związane z żadnym konkretnym językiem programowania
• „Klasyczne” programy
- Kompilacja do kodu maszynowego procesora
- Komunikacja z systemem operacyjnym poprzez API
(zestaw funkcji, dostarczanych przez system)
• Programy dla .NET
- Kompilacja kodu źródłowego do postaci kodu uniwersalnego
(kodu pośredniego - CIL)
- Kod pośredni kompilowany jest do kodu maszynowego
w momencie wywołania
• tzw. kompilacja w locie (Just in Time)
• kompilowane są tylko fragmenty potrzebne w danym momencie
• kompilacja wykonywana jest tylko przy pierwszym wywołaniu danej metody
• Zalety
- Przenośność programów
- Możliwość optymalizacji kodu pod konkretny typ procesora
w momencie wykonywania
- Bardzo bogate biblioteki klas
- Unifikacja klas pomiędzy różnymi językami programowania
• Łatwiejsze łączenie różnych języków w jednej aplikacji
- Zwiększone bezpieczeństwo aplikacji i systemu
• Funkcje związane z prawami dostępu użytkownika i aplikacji
• Nadzorowane wykonanie kodu
• Wady
- Kompilacja w locie może spowalniać program
- Wymaga zainstalowania środowiska uruchomieniowego
• W nowych systemach jest już zainstalowane
14. Co oznacza skrót GUI? Podaj cechy dobrze zaprojektowanego GUI? 7
Graphic User Interface- Graficzny interfejs użytkownika
Dobry interfejs pozwala pracować z systemem bez czytania instrukcji obsługi
Cechy dobrego GUI
Intuicyjność
Od razu widać, do czego służą przyciski i polecenia
Przejrzystość
Jasna i czytelna organizacja programu
Treściwe komunikaty
Nie „zatłoczone” okna
Uporządkowanie
Grupowanie logicznie powiązanych ze sobą kontrolek
Spójność i konsekwencja
Jednolity wygląd poszczególnych okien, modułów itp., zwłaszcza tych, które wykonują podobne zadania
Łatwość nawigowania
Obsługa klawiatury (nie tylko myszy)
Np. Ustawienie skrótów klawiaturowych i kolejności przechodzenia (właściwości TabIndex) zgodnej z kolejnością wprowadzania danych w oknie
Zgodność ze standardami w informatyce i w danej dziedzinie
Użycie typowych i znanych użytkownikowi kontrolek
Terminologia (polecenia, przyciski, komunikaty)
Symbole (ikonki)
Odpowiednia pomoc dla użytkownika
Pliki pomocy (help)
Komunikaty „Za mało pamięci do wczytania danych z pliku” zamiast „Błąd nr. 342”
Ergonomia
Rozmiary kontrolek i czcionek dostosowane do rozdzielczości (np.. zmieniające rozmiar w zależności od rozdzielczości i rozmiaru okna programu - o ile ma to sens)
Kontrolki pogrupowane i wyrównane
Stonowane i dobrze dobrane palety kolorów
Ciemne teksty na jasnym tle (i odwrotnie)
Sprawność działania
Jeśli operacja trwa więcej niż 1-2 sekundy - pasek postępu
Ostrzeganie przed operacją mogącą trwać bardzo długo
Możliwość przerwania operacji trwającej długo (o ile jest to możliwe)
Inne
Ostrzeganie przed „niebezpiecznymi” operacjami (np. Usuwaniem danych)
…ale, bez nadmiernej liczby potwierdzeń i ostrzeżeń
Program nie może wymagać by użytkownik zapamiętał / zapisania sobie na kartce jakieś dane, potrzebne w innym miejscu programu (np. numeru klienta)
Komunikaty muszą być poprawne językowo
Reasumując program tworzy się po to, by ułatwić komuś pracę, dlatego powinien:
Działać poprawnie (także pod względem merytorycznym)
Automatyzować często wykonywane czynności
Być wygodny i ergonomiczny
15. Co to jest i do czego służy UML? Jakie ma zalety? Jakie perspektywy widzenia systemu obejmuje UML? 10
Ujednolicony Język Modelowania - UML Unified Modeling Language
Język służący do opisu obiektów w analizie obiektowej oraz programowaniu obiektowym
Stosowany jest wraz z reprezentacją graficzną
Pozwala przedstawić obiekty i zależności na diagramach
- UML określa sposób opisu modeli
Perspektywy widzenia systemu:
Perspektywa przypadków użycia
Opisuje funkcjonalność, jaką powinien dostarczać system, widzianą przez jego użytkowników
Perspektywa logiczna
Opisuje sposób realizacji funkcjonalności, czyli strukturę systemu widzianą przez projektanta
Perspektywa implementacyjna
Opisuje poszczególne moduły i ich interfejsy wraz z zależnościami; perspektywa programisty
Perspektywa procesowa
Opisuje podział systemu na procesy (czynności) i procesory (jednostki wykonawcze); opisuje właściwości poza funkcjonalne systemu; służy programistom i integratorom
Perspektywa wdrożenia
Opisuje fizyczny podział elementów systemu i ich rozmieszczenie w infrastrukturze; służy integratorom i instalatorom systemu
Zalety UML
Jest notacja systemową, która stała się światowym standardem w procesach tworzenia systemów (nie tylko informatycznych)
Pozwala opisać system z różnych punków widzenia (klienta, analityka, integratora, programisty, i innych)
13 rodzajów diagramów - W konkretnym projekcie nie wszystkie muszą wystąpić
Model UML pokazuje, co system ma robić, ale nie wyjaśnia, jak to ma być wykonane
Wady UML
Duża złożoność języka
Podobieństwo niektórych symboli i rodzajów linii powodujące trudności z rozróżnieniem znaczenia „na pierwszy rzut oka”
Wada pośrednia - Bywa nadużywany (budowa wspaniałego modelu kosztem rzeczywistej realizacji zadania)
16. Wybierz dwa dowolne rodzaje diagramów UML - opisz co przedstawiają i do czego służą. Podaj ich podstawowe elementy.10
UML obejmuje 13 rodzajów diagramów:
Diagram pakietów
Diagram klas
Diagram obiektów
Diagram struktur złożonych
Diagram komponentów
Diagram wdrożenia
Diagram przypadków użycia
Diagram czynności
Diagram stanów (maszyny stanowej)
Diagram interakcji
Sekwencji (przebiegu)
Komunikacji
Przeglądu interakcji
Diagram uwarunkowań czasowych
Przypadek użycia
Opis zachowania systemu z punktu widzenia użytkownika
Diagram przypadków użycia
Służy do uchwycenia założeń systemu z punktu widzenia użytkownika
Wymienia użytkowników systemu i jego granice
Przedstawia funkcje dostępne dla użytkowników (funkcjonalność)
Określa zależności i powiązania między użytkownikami i funkcjami
Składniki diagramu
Aktor
Człowiek lub inny system, który inicjuje użycie systemu lub
w jakiś sposób wymienia informacje z systemem
- symbol: „ludzik”
Opisuje rolę a nie konkretną osobę
Uwaga: jedna „osoba fizyczna” może pełnić w systemie role kilku aktorów,
np.: „Zbigniew Nowak” pracujący w sklepie może być raz aktorem - sprzedawcą, a innym razem aktorem - klientem
Pozostaje poza zakresem systemu
Przypadek użycia
Kompletna funkcja systemu dostępna dla aktora ( symbol: elipsa)
Przypadek użycia musi być:
Kompletny (realizować pewną funkcjonalność w pełni) i dostarczyć aktorowi pewną „wartość”
Inicjowany (bezpośrednio lub przez zależności) przez aktora i wykonany w jego imieniu
-------------------------------------------------------------
Obiekt
Egzemplarz należący do klasy
Diagram obiektów
Podobny do diagramu klas, ale…
Prezentuje możliwą konfigurację obiektów w określonym momencie (pokazuje wybrane przypadki)
Przydatny w przypadku szczególnie skomplikowanych zależności, których nie można przedstawić na diagramie klas
Składniki diagramu (Nazwa egzemplarza : Nazwa klasy)
--------------------------------
Sekwencja (przebieg)
Kolejność wykonywania akcji
Diagram sekwencji
Pokazuje kolejność wykonywania akcji, przesyłania komunikatów i interakcje pomiędzy obiektami
Składniki diagramu
Obiekty
Linie użycia obiektów
Komunikaty- przesyłane między obiektami
Bloki
alt - odpowiednik if…else
opt - odpowiednik if (bez else)
loop - odpowiednik for lub while
17. Co to jest i jakie zadania spełnia System Zarządzania Bazą Danych? 9
Systemem zarządzania bazą danych - SZBZ (DataBase Management System - DBMS)
- Zapewnia obsługę (dostęp do) danych zawartych w bazie danych
Dostęp do danych
Aplikacja przekazuje polecenie (zapytanie) do DBMS
Używa do tego odpowiedniego języka zapytań
DBMS interpretuje i wykonuje polecenie
Następuje „fizyczny” odczyt / zapis danych
Zadania DBMS:
Zapewnia wsparcie dla języka bazy danych, który umożliwia wykonywanie operacji dotyczących struktury bazy danych oraz danych, m.in.:
Wstawianie
Modyfikowanie
Usuwanie
Wyszukiwanie
Zapewnia efektywne składowanie i przetwarzanie dużych ilości danych
Optymalizuje dostęp do danych
Synchronizuje dostęp do danych przy dostępie współbieżnym
Zapewnienie bezpieczeństwo danych w przypadku awarii sprzętowo-programowej
Autoryzuje dostęp do danych
18. Opisz 2 i 3 warstwową architekturę dostępu do bazy danych 6
2- warstwowa: Systemy klient-serwer
Aplikacje działają na wielu komputerach i odwołują się do wspólnej bazy
Np. system obsługi kont bankowych
Dwie warstwy oprogramowania:
-warstwa serwera -proces serwera
-warstwa klienta - proces klienta
Lokalizacja obu procesów:
- mogą one znajdować się na jednym komputerze (baza lokalna)
-zazwyczaj serwer umieszczany jest na innym komputerze niż procesy klienta, komunikując się poprzez LAN
3 - warstwowa:
-Aplikacja działa na serwerze, klienci łącza się z nią używając przeglądarek WWW
- Dzieli aplikacje bazy danych na trzy, współpracujące ze sobą części:
-Warstwa dolna, realizującą dostęp do bazy danych,
- Warstwę środkowa, zawierająca reguły dziedziczenia danych,
-Warstwę górna, stanowiąca interfejs użytkownika
-Warstwa górna i dolna powinny mieć charakter bezkontekstowy.
-Warstwa środkowa powinna zawierać reguły, według których przetwarzane są dane.
-Warstwa dolna to prawie zawsze programy wykonywane na serwerze, obsługujące
zlecenia warstwy środkowej
- Warstwy górna i środkowa mogą być scalone w jeden program bądź rozdzielone
- Warstwa środkowa może być klientem lub serwerem
-Warstwa górna jest zawsze klientem
- Gdy w warstwie klienta lokowany jest jedynie interfejs użytkownika, który realizuje prezentacje danych i przekazywanie danych do warstwy aplikacji mówi się o tzw. „chudym (cienkim) kliencie” ze względu na mała ilość funkcji, jaka w tej technologii realizuje strona klienta.
19. Opisz podstawowe elementy (z czego się składa i jak wyglądają) relacyjnego modelu danych 10
W najprostszym ujęciu w modelu relacyjnym dane grupowane są w relacje, które reprezentowane są przez tablice. Relacje są pewnym zbiorem rekordów o identycznej strukturze wewnętrznie powiązanych za pomocą związków zachodzących pomiędzy danymi. Relacje zgrupowane są w tzw. schematy bazy danych. Relacją może być tabela zawierająca dane teleadresowe pracowników, zaś schemat może zawierać wszystkie dane dotyczące firmy. Takie podejście w porównaniu do innych modeli danych ułatwia wprowadzania zmian, zmniejszenie możliwość pomyłek, ale dzieje się to kosztem wydajności.
Struktura bazy danych:
-dane są przechowywane w polach uporządkowanych dwuwymiarowych
-każda tabela zawiera 0 lub więcej wierszy
-każda tabela zawiera jedną lub więcej kolumn
-każda tabela ma stałą liczbę kolumn i dowolną liczbę wierszy
-wiersze (krotki) są przechowywane w porządku całkowicie dowolnym
Baza danych składa się:
-baza danych-zbiór relacji (zbiór tabel)
-relacja-zbiór krotek (tabela)
-krotka-lista wartości (wiersz tabeli)
-schemat relacji-zbiór składający się z atrybutów (zbiór kolumn tabeli)
-schemat bazy-zbiór schematów relacji
Krotka, to pozioma struktura danych opisująca jeden obiekt. Rekord składa się z pól opisujących dokładnie cechy obiektu np. pojedynczego pracownika.
Tabela - nazywamy zbiór krotek opisujących obiekty w sposób ujednolicony tj. każdy rekord posiada te same nazwy pól. Uwaga: w niektórych systemach baza danych np. dBase każda tabela nazywana jest bazą danych i jest przechowywana w oddzielnych plikach.
Atrybut (kolumna) to struktura danych opisująca pojedynczą daną w krotce np. nazwisko pracownika.
20. Na czym polega problem spójności danych w bazie danych? Jak zapobiegać takim problemom? 10
Baza danych może utracić spójność w wyniku różnych działań. Mogą do tego przyczynić się awarie, powodujące utratę części danych, działania użytkowników, którzy omyłkowo zmodyfikują czy usuną dane, wreszcie współbieżny dostęp do danych. Ten ostatni czynnik będzie stanowił przedmiot dalszych rozważań.
Często w bazie danych jednocześnie pracuje wielu użytkowników, uruchamiających polecenia w ramach swoich transakcji. Transakcje wykonywane są równolegle, często również zdarza się, że w ramach różnych transakcji użytkownicy żądają wykonania operacji na tych samych danych. Np. użytkownik ALA chce usunąć wszystkie rekordy ze swojej relacji PRACOWNICY, tymczasem równolegle użytkownik OLEK chce podnieść płace podstawowe wszystkim pracownikom z relacji PRACOWNICY użytkownika ALA. Konflikty w dostępie do danych operacji z równoległych transakcji mogą spowodować utratę spójności bazy danych. Może dojść do wystąpienia tzw. anomalii współbieżnego dostępu.
Z anomalią o nazwie „brudny odczyt” mamy do czynienia wtedy, gdy transakcja odczytuje dane, zmienione przez inną transakcję, która potem zostaje wycofana. Tak więc pierwsza transakcja odczytała dane, które już nie istnieją.
Anomalia o nazwie „utracona modyfikacja” powstaje w sytuacji, gdy dwie transakcje równolegle przystępują do aktualizacji tych samych danych i zmiany, wprowadzone przez jedną z transakcji, zostają nadpisane przez zmiany z drugiej transakcji.
„Niepowtarzalny odczyt” to sytuacja, w której transakcja wielokrotnie wykonuje tą samą operację odczytu rekordu z relacji bazy danych i otrzymuje różne wartości atrybutów rekordu, gdyż równolegle inna transakcja modyfikuje wartości atrybutów tego samego rekordu.
Ostatnia z anomalii, „fantomy”, jest podobna do niepowtarzalnego odczytu: transakcja wielokrotnie wykonuje to samo zapytanie do bazy danych i otrzymuje różne zbiory rekordów. Dzieje się tak dlatego, że równolegle inna transakcja wstawia nowe rekordy czy też modyfikuje istniejące w ten sposób, że zbiór rekordów, spełniających kryteria zapytania pierwszej transakcji, wciąż się powiększa.
Anomalie „brudny odczyt” i „utracona modyfikacja” są poważnymi zagrożeniami dla spójności, natomiast „niepowtarzalny odczyt” i „fantomy” są anomaliami tolerowanymi w większości systemów zarządzania bazami danych.
Zapobieganie problemom spójności danych
Odpowiednio zaprojektowany schemat bazy
i schematy relacji
Użycie mechanizmu transakcji
Kolejkowanie transakcji
21. Co to są transakcje w bazach danych? Jakie mają zalety? Przed jakimi problemami chronią? Jak są realizowane od strony technicznej?10
Transakcja:
Ciąg logicznie powiązanych operacji na bazie danych, która przeprowadza bazę danych z jednego stanu spójnego w inny stan spójny
Cechy transakcji:
ACID = Atomicity, Conistency, Isolation, Durability(atomowość, Spójność, Izolacja, Trwałość)
Atomowość - Ciąg operacji wchodzących w skład transakcji jest niepodzielny. Zostaną wykonane wszystkie operacje transakcji albo żadna
Spójność - Transakcja przeprowadza bazę danych z jednego stanu spójnego do innego stanu spójnego. W trakcie wykonywania transakcji baza danych może być przejściowo niespójna. Transakcja nie może naruszać ograniczeń integralnościowych
Izolacja - Transakcje są od siebie logicznie oddzielone. Transakcje nie oddziałują na siebie bezpośredni. Mogą oddziaływać tylko poprzez zmianę danych. Mimo współbieżnego wykonywania, transakcje widzą stan bazy danych tak, jak gdyby były wykonywane w sposób sekwencyjny
Trwałość - Wyniki zatwierdzonych transakcji nie mogą zostać utracone w przypadku awarii systemu
Transakcje chronią zarówno przed brudnymi odczytami jak i przed niepowtarzalnymi odczytami.
-ułatwiają proces uaktualniania baz danych
-pomagają w zachowaniu spójności
Przebieg transakcji::
Rozpoczęcie transakcji (zablokowanie tabel lub krotek, do których odwołuje się transakcja)
Odczyt danych
Zapis danych
Akceptacja (zatwierdzenie) transakcji lub Wycofanie transakcji
Odblokowanie po zakończeniu transakcji
22. Czym to jest SQL? Do czego służy? Gdzie i kiedy się go stosuje? Z czego się składa? Jak można z niego korzystać?10
SQL - Structured Query Language to język który jest wykorzystywany do wyświetlania, wstawiania i modyfikowania danych w bazie danych. Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi zarządzania bazą danych (DBMS)
Za pomocą SQL tworzone są tekstowe zapytania przesyłane do DBSM
W języku SQL nie można napisać samodzielnego programu (tak jak np. w C)
Sposoby wykorzystania SQL
Interakcyjny
Bezpośrednie pisanie poleceń w konsoli DBMS
Bezpośrednie wprowadzanie lub podbieranie danych
Wykorzystywany np. do:
Wykonywania zapytań nietypowych lub nie przewidzianych w aplikacji
Testowania bazy
Testowania zapytań na etapie tworzenia aplikacji
Statyczny
Używany w aplikacjach
W kodzie aplikacji wpisane są zapytania o określonej, stałej treści (zmienne są tylko dane)
Dynamiczny
Używany w aplikacjach
Zapytania SQL generowane w czasie pracy aplikacji
Często treść zapytania zależy od wyboru użytkownika (np. kolejność sortowania danych)
Może stanowić zagrożenie dla bezpieczeństwa systemu
Szczególnie, gdy zapytanie zawiera fragmenty wpisywane przez użytkownika
Zwłaszcza w aplikacjach internetowych (możliwość tzw. wstrzyknięcia kodu)
Polecenia SQL dzieli się na 3 grupy
DML (Data Manipulation Language) służy do wykonywania operacji na danych - do ich umieszczania w bazie, kasowania, przeglądania, zmiany. Najważniejsze polecenia z tego zbioru to:
SELECT - pobranie danych z bazy,
INSERT - umieszczenie danych w bazie,
UPDATE - zmiana danych,
DELETE - usunięcie danych z bazy.
Dane tekstowe muszą być zawsze ujęte w znaki pojedynczego cudzysłowu (').
Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane - czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy to:
CREATE (np. CREATE TABLE, CREATE DATABASE, ...) - utworzenie struktury (bazy, tabeli, indeksu itp.),
DROP (np. DROP TABLE, DROP DATABASE, ...) - usunięcie struktury,
ALTER (np. ALTER TABLE ADD COLUMN ...) - zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli).
DCL (Data Control Language) ma zastosowanie do nadawania uprawnień do obiektów bazodanowych. Najważniejsze polecenia w tej grupie to:
GRANT (np. GRANT ALL PRIVILEGES ON EMPLOYEE TO PIOTR WITH GRANT OPTION) - przyznanie wszystkich praw do tabeli EMPLOYEE użytkownikowi PIOTR z opcją pozwalającą mu nadawać prawa do tej tabeli.
REVOKE - odebranie użytkownikowi wszystkich praw do tabeli, które zostały przyznane poleceniem GRANT.
DENY.
23. Czym są hurtownie danych? Jak są zbudowane? 6
Hurtownia danych - data warehouse - Rodzaj bazy danych (niekoniecznie relacyjna), integrująca i przechowująca bardzo dużą ilość danych.
Cechy charakterystyczne
Składowane dane nie są modyfikowane przez użytkowników (wyłącznie przez nich odczytywane)
Zawartość jest zorientowana tematycznie
np. hurtownia danych giełdowych, produkcji sprzedaży produktów firmy
Zawiera wszystkie dane historyczne i bieżące
(z określonego zakresu tematycznego)
Zawiera dane zagregowane na wielu poziomach szczegółowości
Oprócz hurtowni potrzebne są specjalistyczne aplikacje wyszukujące, analizujące i prezentujące dane
Aplikacje analityczne - OLAP - On-Line Analytical Processing
Wspomaganie decyzji - decision support
Odkrywanie wiedzy / eksploracja danych - data mining
W praktyce
Hurtownie integrują dane z wszystkich źródeł (zwłaszcza innych baz danych) w instytucji
Aktualizacja danych źródłowych dotyczy oryginalnych plików, lokalnych baz danych, itp..
Integracja polega najczęściej na cyklicznym dodawaniu / aktualizacji hurtowni danymi z systemów lokalnych
Architektura hurtowni jest zorientowana na:
Optymalizację szybkości wyszukiwania
Efektywną analizę danych
Dla podniesienia szybkości i efektywność dzieli się dane w hurtowni na mniejsze hurtownie tematyczne
Użytkownicy końcowi hurtowni korzystają z danych poprzez systemy OLAP
24. Co to jest Sztuczna Inteligencja? Jakie techniki zalicza się do SI? Podaj przykładowe zastosowania (min 5przykładów) 8
Sztuczna Inteligencja nauka obejmująca zagadnienia logiki rozmytej, obliczeń ewolucyjnych, sieci neuronowych, sztucznego życia i robotyki. Sztuczna inteligencja to dział informatyki, którego przedmiotem jest badanie reguł rządzących inteligentnymi zachowaniami człowieka, tworzenie modeli formalnych tych zachowań i - w rezultacie - programów komputerowych symulujących te zachowania. Można ją też zdefiniować jako dział informatyki zajmujący się rozwiązywaniem problemów, które nie są efektywnie algorytmizowane
Jakie techniki zalicza się do SI?
Pierwsze to tworzenie modeli matematyczno-logicznych analizowanych problemów i implementowanie ich w formie programów komputerowych, mających realizować konkretne funkcje uważane powszechnie za składowe inteligencji. W tej grupie, tzw. podejścia symbolicznego, są np. algorytmy genetyczne, metody logiki rozmytej i wnioskowania bazującego na doświadczeniu.
Drugie to podejście subsymboliczne polegające na tworzeniu struktur i programów "samouczących się", bazujących na modelach sieci neuronowej i sieci asocjacyjnych, oraz opracowywanie procedur "uczenia" takich programów, rozwiązywania postawionych im zadań i szukania odpowiedzi na wybrane klasy "pytań
Obszary zastosowań
Sterowanie urządzeniami i pojazdami
Np. sterowanie robotami autonomicznymi, sterowanie automatycznymi skrzyniami biegów, system wspomagający pilotowanie uszkodzonego w walce samolotu
Sterowanie procesami przemysłowymi
Zwłaszcza w warunkach niepełnych lub niepewnych danych
Diagnostyka urządzeń i procesów
Podejmowanie decyzji gospodarczych i finansowych
Np. ocena wniosków kredytowych, przewidywanie kursów giełdowych
Diagnozy medyczne
Np. wykrywanie chorób na podstawie objawów i wyników badań
Automatyczne wyszukiwanie zależności
Np. poszukiwanie opisu zjawiska fizycznego na podstawie obserwacji tego zjawiska
Zarządzenie
Np. układanie harmonogramów prac
Rozumienie języka naturalnego
Np. tłumaczenia, streszczenia
Analiza obrazu i dźwięku
Np. rozpoznawanie tekstu, rozpoznawanie komend głosowych, wykrywanie twarzy, wykrywanie obiektów
Optymalizacja złożonych problemów
Szkolenia i testy
Np. dla kontrolerów ruchu lotniczego
Zabawki i gry komputerowe
Sieci neuronowe - stosowane z powodzeniem w wielu zastosowaniach łącznie z programowaniem "inteligentnych przeciwników" w grach komputerowych.
Uczenie się maszyn - dział sztucznej inteligencji zajmujący się algorytmami potrafiącymi uczyć się podejmować decyzje bądź nabywać wiedzę.
Eksploracja danych - omawia obszary, powiązanie z potrzebami informacyjnymi, pozyskiwaniem wiedzy, stosowane techniki analizy, oczekiwane rezultaty.
Rozpoznawanie obrazów - stosowane są już programy rozpoznające osoby na podstawie zdjęcia twarzy lub rozpoznające automatycznie zadane obiekty na zdjęciach satelitarnych.
Rozpoznawanie pisma- stosowane już masowo np. do automatycznego sortowania listów, oraz w elektronicznych notatnikach.
Sztuczna twórczość - istnieją programy automatycznie generujące krótkie formy poetyckie, komponujące, aranżujące i interpretujące utwory muzyczne, które są w stanie skutecznie "zmylić" nawet profesjonalnych artystów, w sensie, że nie rozpoznają oni tych utworów jako sztucznie wygenerowanych.
W ekonomii, powszechnie stosuje się systemy automatycznie oceniające m.in. zdolność kredytową, profil najlepszych klientów, czy planujące kampanie reklamowe.
25. Opisz budowę prostego (pojedynczego) sztucznego neuronu? (wraz ze wzorami) Jak działa? Co to jest funkcja aktywacji?9
Do neuronu dostarczamy sygnały wejściowe, które są mnożone przez wagi i następnie dodawane w sumatorze. Tak otrzymujemy sumę s, która jest parametrem funkcji aktywacji odpowiedzialnej za przydzielenie wartości na wyjściu neuronu.
Działanie neuronu - Polega na klasyfikowaniu (sumowaniu) danych pojawiających się na wejściu i ustawianiu wartości na wyjściu
Wartość na wyjściu zależy od: (Wartości wejściowych, Wag, Funkcji aktywującej)
Funkcja aktywacji pozwala określić wartość na wyjściu neuronu.
Rodzaje i przykłady funkcji
Progowa
Liniowa
Nieliniowa
Wybór funkcji aktywacji - Zależy od rodzaju problemu jaki stawiamy przed siecią do rozwiązania
Wymagane cechy funkcji aktywacji:
Ciągłość
Ciągłe przejście pomiędzy swoją wartością maksymalną, a minimalną
Różniczkowalność
Możliwa do wyznaczenia i ciągła pochodna
Monotoniczność
Możliwość wprowadzenia do argumentu parametru do ustalania kształtu krzywej
26. Opisz algorytm uczenia pojedynczego perceptronu? 8
Prosty neuron z progową funkcją aktywacji nazywamy perceptronem
Uczenie perceptronu
Uczenie polega na podaniu na wejścia sygnałów wzorcowych , dla których znane są prawidłowe, oczekiwane wartości wyjść d(t) (Zbiór takich sygnałów - ciąg uczący)
Wagi modyfikuje się w ten sposób, by minimalizować błąd między wyjściem perceptronu a wartością wzorcową
Taki sposób to uczenie z nauczycielem
27. W JAKIM CELU BUDUJE SIĘ SIECI NEURONOWE? (JAKA JEST ZALETA SIECI W STOSUNKU DO POJEDYNCZEGO NEURONU?)
Sieci neuronowe buduje się, aby móc sprostać bardziej skomplikowanym operacjom, które nie mogą zostać wykonane za pomocą pojedynczego neuronu. Sieć neuronowa może być zbudowana z wielu warstw połączonych szeregowo. Neurony w warstwie są równoległe, nie połączone ze sobą.
Zalety:
- większe możliwości (np. funkcja XOR);
- istnieje prosta rozdzielająca (granica decyzyjna);
- występowanie warstwy ukrytej
28. Opisz ogólną zasadę działania algorytmu wstecznej propagacji błędów. (nie trzeba pamiętać
szczegółowych wzorów)
Jest to podstawowy algorytm optymalizacji określonej funkcji celu. Podaje on przepis na zmianę wag wij (proporcjonalnie do wartości pochodnej cząstkowej funkcji celu) dowolnych połączeń elementów przetwarzających (Neronów) rozmieszczonych w sąsiednich warstwach sieci. Oparty jest on na minimalizacji sumy kwadratów błędów uczenia z wykorzystaniem optymalizacyjnej metody największego spadku. Gradient funkcji wskazuje kierunek jej najszybszego wzrostu (lub spadku) funkcji.
Działanie algorytmu:
- na wejście podajemy ciąg uczący
- sygnał jest przetwarzane przez kolejne warstwy sieci
- sygnał wyjściowy ostatniej warstwy porównujemy ze wzorcem
-modyfikujemy wagi ostatniej warstwy, a następnie poprzednich, aż do pierwszej (wsteczna propagacja błędu)
29. Na czym polega zdolność uogólniania Sieci Neuronowej
Sieć potrafi uogólnić wiedzę dla nowych, nieznanych wcześniej danych (nie prezentowanych w trakcie nauki)
Wygenerować poprawne wartości mimo, że wcześniej uczona była tylko wybranymi, innymi wartościami
Wykazują tolerancję na nieciągłości, przypadkowe zaburzenia lub braki w zbiorze uczącym
Zdolność ta jest podstawową różnica między sieciami neuronowymi, a rozwiązaniami algorytmicznymi
30. Dlaczego najczęściej stosuje się sieci 3-warstowowe?
Trzy warstwy mogą odwzorować dowolny obszar. Sieć trójwarstwowa potrafi rozwiązać każdy problem klasyfikacji lub aproksymacji i większość innych zadań
W jaki sposób określa się liczbę neuronów w warstwie ukrytej?
Zaczyna się od małej liczby neuronów, która zwiększa się w razie potrzeby (na podstawie symulacji)
Jeżeli neuronów jest mało: siec uczy się szybko, sieć może nie rozwiązywać zadania poprawnie
Jeżeli neuronów jest za dużo: sieć uczy się dłużej, działa wolniej, może być „przeuczona” podaje błędne wartości dla danych innych niż uczące
31. Jakie są wady, zalety i ograniczenia Sieci Neuronowych? 3
Zalety:
Zdolność uogólniania / generalizacji
Sieć potrafi uogólnić wiedzę dla nowych, nieznanych wcześniej danych (nie prezentowanych w trakcie nauki)
Wygenerować poprawne wartości mimo, że wcześniej uczona była tylko wybranymi, innymi wartościami
Wykazują tolerancję na nieciągłości, przypadkowe zaburzenia lub braki w zbiorze uczącym
Zdolność ta jest podstawową różnica między sieciami neuronowymi, a rozwiązaniami algorytmicznymi
Uniwersalność struktury
Jedna struktura do wielu zadań
Możemy nauczyć sieć realizacji różnych zadań
W praktyce - struktura sieci też musi być dobrana do zadania
Nie piszemy programu realizującego zadanie tylko uczymy sieć
Zaprogramować musimy model neuronu i sieci oraz algorytm uczenia
Robimy to raz albo korzystamy z gotowego rozwiązania - np. Matlab z Neural Networks Toolbox
Obliczenia wykonywane równolegle
„Naturalne” przystosowanie do wykorzystania w środowiskach wieloprocesorowych
Wady ograniczenia:
Nie jest całkowicie uniwersalna
Do różnych zadań należy wybrać rożne architektury sieci i algorytmy uczenia
Etap projektowania i uczenia sieci może być pracochłonny
Nie nadają się:
Do obliczeń dokładnych - znacznie lepsze są tradycyjne algorytmy
Do operowania na symbolach - np. edycji tekstu
32. Czym są, jakie mają cechy charakterystyczne i gdzie są stosowane Algorytmy Ewolucyjne? 10
Algorytmy ewolucyjne to zbiór metod optymalizacji inspirowanych analogiami biologicznymi (ewolucja naturalna). Przeszukuje się przestrzeń alternatywnych rozwiązań problemu w celu odnalezienia rozwiązań najlepszych lub potencjalnie najlepszych. Algorytmy ewolucyjne zalicza się do klasy algorytmów heurystycznych. Przeszukiwanie odbywa się za pomocą mechanizmów ewolucji oraz doboru naturalnego.
Cechy:
-realizują takie mechanizmy jak:
Dziedziczenie (krzyżowanie i mutacja)
Dobór naturalny (selekcja)
Są wzorowane na cyklu życia organizmów żywych(ewolucja)
przetwarzanie osobników najlepiej przystosowanych
Pozwalają poprzez krzyżowanie i mutacje stworzyć / znaleźć satysfakcjonujące rozwiązanie problemu z grupy losowych zestawów danych początkowych
Różnice względem algorytmów klasycznych:
Nie przetwarzają bezpośrednio parametrów zadania, ale ich postać zakodowaną (chromosomy, osobniki)
Prowadzą poszukiwanie wychodząc z pewnej liczby (populacji) losowych punktów początkowych
Korzystają tylko z funkcji celu (a nie jej pochodnych!)
Stosują probabilistyczne, a nie deterministyczne metody selekcji rozwiązań
Główne zalety
Zdolność przeszukiwania dużej przestrzeni rozwiązań
Odporne na występowanie minimów lokalnych
Nie schematyczne „myślenie” (człowiek sugeruje się już znanymi rozwiązaniami i schematami)
Zastosowanie: Problemy, w których dobrze określony jest sposób oceny jakości rozwiązania, ale nie ma dobrych algorytmów rozwiązania
Główne zastosowanie:
Zagadnienia z zakresu optymalizacji (rozumianej bardzo szeroko), np.:
Znajdowanie ekstremów funkcji
Diagnostyka
Planowanie produkcji, harmonogramy
Wyznaczanie przebiegu rurociągów i linii energetycznych
Synteza drzew decyzyjnych
Inne przykłady:
Problemy kombinacyjne
Problem komiwojażera - znajdowania optymalnej drogi przez określone punkty, każdy punkt można przejść tylko raz - Np.: Nawigacja / Wyznaczanie trasy dla dostawców
Projektowanie sieci neuronowych
Dobór architektury sieci
Dobór wag w sieci
Dobór architektury i wag w sieci
Projektowanie genetyczne - Przykłady:
Projektowanie i optymalizacja obwodów elektrycznych
Projektowanie i optymalizacja maszyn (w szczególności robotów)
Projekt Golem - Program projektuje roboty, a następnie sprawdza, jak się zachowują w symulowanym środowisku
Dobór nastaw regulatorów w automatyce
33. Opisz zasadę działania klasycznego algorytmu genetycznego. 10
Inicjalizacja
Utworzenie początkowej populacji
Losowy wybór pewnej liczby osobników (chromosomów)
Osobniki reprezentowane są jako ciągi binarne o określonej długości (wektory)
Przykładowe osobniki: [10010011], [01101001], [11110101]
Ocena przystosowania
Oblicza się wartość funkcji przystosowania dla każdego chromosomu z populacji
Im większa wartość, tym lepszy chromosom
Sprawdzenie warunku zatrzymania
Najczęściej zatrzymanie następuje:
Po osiągnięciu wartości optymalnej (z zadaną dokładnością)
Gdy działanie algorytmu nie przynosi dalszej poprawy wyniku
Po określonym czasie trwania obliczeń lub liczbie generacji
Selekcja
Wybór chromosomów (osobników), które będą brały udział w tworzeniu następnego pokolenia
Wybór na podstawie obliczonych wartości funkcji przystosowania
Ogólna zasada wyboru - naturalna selekcja
Największe szanse mają chromosomy o największej wartości funkcji przystosowania
Istnieje wiele metod selekcji (Najbardziej popularna - metoda ruletki)
Operacje na genach zastosowanie operatorów genetycznych
Chromosomy wybrane w wyniku selekcji poddaje się krzyżowaniu i mutacji
Krzyżowanie polega na zamianie części genów pomiędzy chromosomami
Prawdopodobieństwo krzyżowania pk<0,5;1>
Mutacja polega na zmianie wartości wybranych genów
Prawdopodobieństwo mutacji pm<0;0,1>
Utworzenie nowej populacji
W wyniku operacji na genach tworzona jest nowa populacja
Nowa populacja staje się populacją bieżącą
Cała poprzednia populacja chromosomów zastępowana jest przez tak samo liczną, nową populację potomków
Zastosowanie najlepszego osobnika
Gdy spełniony jest warunek zatrzymania algorytmu, należy podać wynik - rozwiązanie problemu
Najlepszym rozwiązaniem jest osobnik o największej wartości funkcji przystosowania
34. Opisz metodę koła ruletki w selekcji osobników w algorytmie genetycznym. Podaj jej wady 5
Zasada działania
Każdemu chromosomowi chi (i=1, 2, …, K) można przydzielić wycinek koła o wielkości proporcjonalnej do wartości funkcji przystosowania F(chi) dla danego chromosomu
Im większa wartość tym większy wycinek v(chi)
Udział wycinka w całym kole wyraża się procentowo
Wybranie chromosomu polega na „obrocie” koła
w wyniku czego wybrany zostaje chromosom
Im większy wycinek koła tym większe prawdopodobieństwo wybrania
Realizacja praktyczna
Każdemu chromosomowi przypisywany jest wycinek <a;b>
z zakresu <0;100> (lub <0;1>), zależnie od v(chi)
Losujemy liczbę z zakresu <0;100> (lub <0;1>)
Sprawdzamy, do którego zakresu należy liczba
Wybieramy chromosom, w którego zakres „trafiliśmy”
Wykonuje się K losowań co oznacza, że pula rodzicielska będzie miała taką samą liczebność jak bieżąca populacja
Wady metody
Jeżeli osobniki mają podobną wartość funkcji przystosowania, to każdy dostaje podobny wycinek koła i ewolucja zwalnia - algorytm słabiej rozróżnia osobniki dobre od słabszych
Metoda wymaga, by funkcja przystosowania była dodatnia (nie może zmieniać znaku)
35. Opisz metody krzyżowania w algorytmie genetycznym. 4
Zasady ogólne
Grupujemy chromosomy w pary
Np.: w kolejności, w której były wylosowane do puli rodzicielskiej
Wybieramy (arbitralnie) wartość graniczną prawdopodobieństwa krzyżowania pk
Dla każdej pary losujemy liczbę z zakresu <0;1>
Do krzyżowania wybiera się pary, dla których wylosowana liczba <pk
Krzyżowanie jednopunktowe
Dla każdej pary losuje się punkt krzyżowania
(locus, lk) z zakresu <1;L-1>
gdzie L jest liczbą genów w chromosomie
Pomiędzy parą chromosomów zamienia się geny na pozycjach ≥ niż lk
Krzyżowanie dwupunktowe
Losuje się dwie wartości lk
Wymienia się geny z pozycji leżących pomiędzy tymi punktami
Krzyżowanie wielopunktowe
Losuje się wiele wartości lk
Wymienia się kilka fragmentów chromosomów
Krzyżowanie równomierne
Losuje się wzorzec określający, które geny są wymieniane
aktor
przypadek użycia
Sprzedawca
Wystaw fakturę
Zegar
Znajdź produkt
Klient
Zmień stan magazynu
Znajdź fakturę
Magazynier