Ewa Niewiadomska-Szynkiewicz Rozszerzony konspekt przedmiotu Modelowanie i symulacja komputerowa Warszawa 2009 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Jednostki dydaktyczne przedmiotu: wykład 2, ćwiczenia 0, laboratorium 0, projekt 1 proponowane punkty ECTS: 4 Streszczenie (cel i zakres przedmiotu) Wykład jest poświęcony modelowaniu i symulacji komputerowej systemów fizycznych. Obejmuje szerokie spektrum zagadnień od budowy modeli formalnych, konstruowania modeli symulacyjnych, środowisk informatycznych do symulacji, po konkretne aplikacje. Celem wykładu jest przedstawienie róŝnych technik symulacji komputerowej, moŝliwości i obszaru zastosowań współczesnych narzędzi do symulacji, pokazanie ich róŝnorodności oraz przygotowanie słuchaczy do właściwego wykorzystywania, stosowania i prowadzenia eksperymentu symulacyjnego. W czasie wykładu prezentowane są liczne przykłady zastosowań symulacji komputerowej do rozwiązania zadań projektowania i zarządzania systemami oraz przykłady komercyjnych i niekomercyjnych środowisk informatycznych do symulacji. Wykład składa się z czterech głównych części. Część pierwsza dotyczy zagadnień ogólnych modelowania matematycznego, tworzenia modeli systemów o róŝnym charakterze oraz budowy modeli symulacyjnych. Szczególna uwaga jest zwrócona na modelowanie systemów zdarzeń dyskretnych. Przedstawione są równieŝ trzy sposoby prezentacji graficznej układów dynamicznych. Część druga jest poświęcona technikom symulacji. Omówione są róŝne techniki symulacyjne, etapy tworzenia i weryfikacji modeli symulacyjnych oraz metody oceny wyników symulacji. Zaprezentowane są techniki projektowania symulatorów w wersji równoległej i rozproszonej (synchroniczne i asynchroniczne). Szczególna uwaga jest zwrócona na problemy związane z dekompozycją, alokacją i synchronizacją obliczeń. Część trzecia jest poświęcona narzędziom informatycznym do symulacji. Przedstawiony jest krótki przegląd języków symulacyjnych oraz zintegrowanych środowisk oprogramowania do symulacji. Ostatnia część wykładu jest poświęcona prezentacji przykładowych zastosowań symulacji komputerowej w projektowaniu, optymalizacji, komputerowej analizie systemów sterowania oraz systemach wspomagania decyzji i planowania. Uwaga koncentruje się na przykładach zastosowań w złoŝonych strukturach sterowania systemem wodnym, sieciach komputerowych, w tym mobilnych sieciach ad hoc, i innych. Przedstawione jest zastosowanie modeli symulacyjnych w złoŝonych zadaniach optymalizacji. Omówiony jest schemat symulator-optymalizator oraz podstawowe algorytmy do rozwiązywania tak sformułowanych problemów. W ramach projektu przewiduje się realizację symulatora dla zadanego przykładu. Aplikacja będzie mogła być wykonana w jednym z wybranych języków programowania bądź z wykorzystaniem udostępnionego środowiska do symulacji.
Wykład Część I: Modelowanie systemów Część pierwsza wykładu jest poświęcona zagadnieniom modelowania systemów. Rozpoczyna się od ogólnego wprowadzenia do modelowania i symulacji systemów. Następnie omawiane są róŝne kategorie modeli, graficzne metody reprezentacji układów dynamicznych oraz etapy budowy modeli symulacyjnych. Wykład 1 (2 godz.): Wprowadzenie do modelowania i symulacji. Wykład jest poświęcony wprowadzeniu do modelowania i symulacji systemów. Definiowane są podstawowe pojęcia, prezentowany krótki rys historyczny zastosowania symulacji w pracach badawczych i aplikacjach inŝynierskich. Definicja pojęcia systemu, wyodrębnienie jego wielkości wejściowych i wyjściowych. Dynamika systemów. Klasyfikacja i omówienie systemów ciągłych, dyskretnych i zdarzeń dyskretnych. Prezentacja przykładów wymienionych typów systemów. Przykłady systemów złoŝonych z wielu podsystemów. Struktury systemów złoŝonych i oddziaływania między podsystemami (systemy wielowarstwowe i wielopoziomowe). Wprowadzenie do technik symulacji. Modelowanie a symulacja. Definicja symulacji komputerowej. Krótki rys historyczny (symulacja analogowa i cyfrowa). Kiedy naleŝy stosować narzędzia symulacyjne. Eksperyment symulacyjny jako narzędzie wspierające budowę modeli systemów, planowanie i projektowanie systemów, wspieranie procesów decyzyjnych. Wykład 2 (2 godz.) Klasyfikacja modeli i metody opisu. Omawiane są kategorie modeli oraz prezentowane graficzne metody reprezentacji układów dynamicznych. Zasady i etapy budowy modeli. Typy modeli (modele fizyczne, sformalizowane i intuicyjne; modele korelacyjne i przyczynowe; modele ciągłe i dyskretne; modele statyczne i dynamiczne; modele deterministyczne i probabilistyczne; modele analityczne, numeryczne i symulacyjne). Graficzna reprezentacja układów dynamicznych: schematy blokowe, grafy przepływu sygnałów, grafy powiązań. Wykład 3 (2 godz.) Budowa modeli symulacyjnych. Wykład jest poświęcony omówieniu etapów tworzenia modeli symulacyjnych i badaniu ich poprawności. Zagadnienia ogólne budowy modeli matematycznych: poprawność budowy modelu matematycznego i analiza wraŝliwości modeli. Zasady konstruowania modeli symulacyjnych i etapy ich tworzenia. Weryfikacja i badanie zgodności modeli. Przykłady modeli symulacyjnych.
Część II: Symulacja komputerowa Część druga wykładu dotyczy symulacji komputerowej i jej realizacji. Obejmuje prezentację zasad i sposobów planowania eksperymentu oraz statystycznej obróbki wyników badań. Omówione są róŝne techniki symulacyjne, szczególna uwaga jest poświęcona symulacji systemów zdarzeń dyskretnych oraz realizacji symulatorów w wersji rozproszonej. Wykład 4 (2 godz.): Techniki symulacyjne. Wykład jest poświęcony technikom symulacji (systemów ciągłych i dyskretnych). Uwaga koncentruje się na realizacji symulatorów systemów zdarzeń dyskretnych. Techniki symulacyjne (symulacja z czasem ciągłym, symulacja z czasem dyskretnym, symulacja zdarzeń dyskretnych) ujednolicony formalizm zaproponowany w pracy [Zeigler, Praehofer, Kim]. RóŜne realizacje symulatorów systemów zdarzeń dyskretnych. Lista zdarzeń. Szeregowanie zdarzeń na liście. Przetwarzanie zdarzeń z listy róŝne implementacje komputerowe (uŝycie tablic, dynamicznych list i inne). Wykład 5 (2 godz.) Rozproszona symulacja zdarzeń dyskretnych. Wykład prezentuje róŝne techniki realizacji symulatorów systemów zdarzeń dyskretnych na maszynach równoległych lub w sieci maszyn. Realizacja symulatorów systemów zdarzeń dyskretnych w wersji równoległej i rozproszonej. Techniki dekompozycji i alokacji obliczeń do procesorów. Dwa podejścia do realizacji symulacji rozproszonej: symulacja synchroniczna i asynchroniczna. Symulacja asynchroniczna a asynchroniczna realizacja algorytmów numerycznych. Protokoły synchronizacji obliczeń: puste komunikaty (ang. null messages), okna czasowe (ang. windows), zawijanie czasu (ang. time warp), rozwiązania hybrydowe. Wykład 6 (2 godz.): Symulacyjna analiza systemów kolejkowych. Wykład dotyczy systemów kolejkowych. Obejmuje krótkie wprowadzenie do systemów kolejkowych. Uwaga koncentruje się na technikach symulacyjnych do analizy tego typu systemów. Wprowadzenie do systemów kolejkowych. Przykład systemu kolejkowego (np. linia montaŝowa, sieć komputerowa kolejka zgłoszeń do serwera usług). Krótka prezentacja teorii kolejek: podstawowe wielkości charakteryzujące systemy kolejkowe (strumień zgłoszeń, proces obsługi, regulamin kolejki, nasycenie systemu kolejkowego), klasyfikacja systemów kolejkowych (klasyfikacja według Kendalla, klasyfikacja według Lee). Proces Poissona. Symulacyjne metody badania systemów kolejkowych.
Wykład 7 (2 godz.): Systemy wieloagentowe i sieci społeczne. Wykład stanowi krótkie wprowadzenie do nowych technik stosowanych w symulacji komputerowej, tj. symulacji wieloagentowej i sieci społecznych. Definicja systemu wieloagentowego. Wymagania i cechy charakterystyczne dla tego typu systemów. Przykład systemu wieloagentowego (np. sieć urządzeń mobilnych - robotów wykonujących zadanie eksploracji terenu). Budowa modelu systemu z wykorzystaniem podejścia wieloagentowego. Symulacja systemu wieloagentowego. Definicja sieci społecznych. Własności i moŝliwości zastosowań tego typu opisu do modelowania i symulacji systemów fizycznych z róŝnych dziedzin. Przykłady zastosowań podejścia wieloagentowego i technik sieci społecznych do symulacji wydarzeń globalnych (wydarzenia historyczne) wojna w Wietnamie (1963-1965), rozwój ruchu Solidarność (lata 1980-1989). Wykład 8 (2 godz.): Planowanie eksperymentu i ocena wyników symulacji. Wykład dotyczy zagadnień związanych z planowaniem eksperymentu symulacyjnego oraz analizą uzyskanych wyników badań. Uwaga jest zwrócona na wymagania na wielkości wejściowe symulatora, jego parametry, zakres wykonywanych badań, które pozwalają na uzyskanie wiarygodnych rezultatów. Prezentowane są równieŝ techniki analizy danych wyjściowych wyników eksperymentu. Definicje dwóch skal czasowych: czas symulacji i czas symulowany. Planowanie eksperymentu symulacyjnego. Opracowanie modelu danych wejściowych do symulacji cztery etapy: zebranie historycznych danych pomiarowych, wyznaczenie rozkładu prawdopodobieństwa wejść, estymacja parametrów rozkładu, testy zgodności. Sposoby przygotowania modelu danych wejściowych w przypadku braku danych pomiarowych z symulowanego systemu (wiedza ekspercka, uwzględnienie ograniczeń fizycznych na system, uwzględnienie cech charakterystycznych procesu). Określenie czasu trwania eksperymentu i liczby powtórzeń testów. Wskaźniki oceny wyników symulacji i ich estymacja. Techniki stosowane do analizy wyników badań. Ocena wiarygodności wyników. Symulacja Monte Carlo (metoda prób statystycznych). Porównanie wyników wielu eksperymentów. Część III: Oprogramowanie do symulacji Część trzecia wykładu koncentruje się na oprogramowaniu do symulacji. Prezentowane są wymagania na systemy informatyczne, róŝne paradygmaty stosowane przy ich budowie. Omawiane są wybrane środowiska oprogramowania - narzędzia komercyjne i niekomercyjne. Wykład 9 (2 godz.): Wprowadzenie do symulatorów i platform symulacyjnych. Wykład jest poświęcony narzędziom do prowadzenia eksperymentów symulacyjnych w komputerze. Omawiane są zasady i paradygmaty tworzenia tego typu systemów informatycznych. Prezentowane podejścia są ilustrowane przykładowymi narzędziami dostępnymi w sieci Internet.
Charakterystyka narzędzi do symulacji. Zasady projektowania (otwarta architektura systemów), konstrukcja systemu oprogramowania, analiza wymagań oprogramowania. Krótki rys historyczny. Języki symulacyjne, biblioteki i środowiska zintegrowane. Systemy specjalizowane, uniwersalne i rozwiązania pośrednie. Przykład rozwiązań uniwersalnych - narzędzia wspomagające projektowanie (np. Matlab, Simulink). Wykład 10 (2 godz.): Tworzenie środowisk informatycznych do symulacji rozproszonej. Omawiane są zasady tworzenia systemów informatycznych do realizacji eksperymentów symulacyjnych na maszynach wieloprocesorowych i w sieciach maszyn. Uwaga koncentruje się na podejściu zakładającym tworzenie zespołów symulatorów wielokrotnego wykorzystania (federacja), korzystających z tej samej aplikacji do zarządzania komunikacją międzyprocesową RTI (Run-Time Infrastructure). Budowa takiego symulatora jest prezentowana na przykładzie narzędzia wykonanego w IAiIS PW. Charakterystyka środowisk do symulacji równoległej i rozproszonej. Etapy konstrukcji oprogramowania. Wady i zalety tego typu rozwiązań. Federacja wielu symulatorów róŝnych podsystemów. Standard HLA (High Level Architecture) opracowany w Ministerstwie Obrony Stanów Zjednoczonych. Przykład symulatora ASimJava środowisko i biblioteka modułów do tworzenia symulatorów systemów zdarzeń dyskretnych na maszynach wieloprocesorowych i w sieciach komputerów (oprogramowanie wykonane w IAiIS PW). Charakterystyka systemu, jego architektura i dostępne moduły biblioteczne. Sposób konstruowania symulatora w środowisku ASimJava. Przykładowa aplikacja w systemie ASimJava - symulator sieci ATM. Wydajność narzędzia. Symulatory wieloagentowe: zasady projektowania, cechy, własności i struktura systemów. Prezentacja wybranego narzędzia (np. Massie Software komercyjne narzędzie do symulacji 3D). Wykład 11 (2 godz.): Wybrane środowiska zintegrowane do symulacji systemów. Na wykładzie prezentowane są wybrane zintegrowane środowiska do symulacji systemów fizycznych. Celem jest przedstawienie szerokich moŝliwości dostępnego obecnie oprogramowania i ich róŝnorodność, zarówno zastosowań jak i wykorzystanych technik i rozwiązań. Omawiane są narzędzia komercyjne i publicznie dostępne. Uwaga koncentruje się na systemach do symulacji sieci komputerowych oraz sieci mobilnych. Systemy informatyczne do symulacji sieci komputerowych. Architektury i realizacje wybranych narzędzi: OPNET (narzędzie komercyjne), NS (Network Simulator narzędzie publicznie dostępne), OMNET++ (dwie wersje oprogramowania: publicznie dostępna i komercyjna). Środowiska do symulacji sieci mobilnych: MobAsim (narzędzie publicznie dostępne wykonane w IAiIS PW), wybrane symulatory robotów mobilnych.
Część VI: Zastosowania symulacji komputerowej Część czwarta wykładu obejmuje róŝne zastosowania symulacji komputerowej. Uwaga koncentruje się na zadaniach projektowania, optymalizacji i zarządzania systemami, w tym sieciami komputerowymi i bezprzewodowymi sieciami typu ad hoc. Wykład 12 (2 godz.): Układ symulator-optymalizator, część 1. Omawiane są rozwiązania stosowana w przypadku, gdy wartości wskaźników jakości oceniających działanie systemu są wyznaczane przez symulatory - podejście symulatoroptymalizator (simulation-optimization lub optimization via simulation). Prezentowane są metody deterministyczne i stochastyczne. Zwrócona jest uwaga na ograniczenia wynikające z moŝliwości zastosowań praktycznych. Wprowadzenie do podejścia symulacja-optymalizacja (metoda wyznaczania optymalnych decyzji wykorzystująca symulację działania optymalizowanego systemu). Sformułowanie zadania minimalizacji/maksymalizacji rozwiązywanego w układzie symulatoroptymalizator. Postać wskaźnika jakości w przypadku róŝnych sposobów wpływania zmiennych wejściowych na wyniki działania symulatora. Optymalizacja z wykorzystaniem metamodelu. Metody rozwiązywania zadań symulator-optymalizator: aproksymacja stochastyczna (róŝne metody estymacji gradientów), metoda z ustalonym zestawem próbek (sample path metod), metoda powierzchni odpowiedzi (response surface metod). Wykład 13 (2 godz.): Układ symulator-optymalizator, część 2. Wykład jest kontynuacją wykładu poprzedniego. Prezentowane są kolejne metody do rozwiązywania zadań optymalizacji typu symulacja-optymalizacja. Uwaga koncentruje się na metodach poszukiwań losowych oraz heurystykach i metaheurystykach. Metody rozwiązywania zadań symulator-optymalizator. Metody poszukiwań prostych: algorytmy deterministyczne (Hooka-Jevesa, Neldera-Meada, Complex Boxa), metody stochastyczne (metoda prostych poszukiwań losowych Monte-Carlo, sterowane przeszukiwanie losowe CRS), metody wykorzystujące heurystyki (symulowane wyŝarzanie, algorytmy genetyczne, strategie ewolucyjne). Prezentacja działania róŝnych metod optymalizacji przy wykorzystaniu środowiska informatycznego GOOL (Global Object-oriented Optimization Library, narzędzie wykonane w IAiIS PW). Przykład podejścia symulacja-optymalizacja: sterowanie systemem zbiorników retencyjnych w czasie powodzi. Wykład 14 (2 godz.) Symulacja komputerowa w zadaniach projektowania układów sterowania Wykład pokazuje rolę symulacji komputerowej w zadaniach syntezy sterowania. Omawiane są wymagania stawiane przed symulatorem oraz wymagania na dane wejściowe i sposoby interpretacji wyników badań.
Metodyka wspomaganej komputerem analizy symulacyjnej działania złoŝonego układu sterowania. Rola i miejsce analizy komputerowej w projektowaniu układu sterowania, elementy niezbędne do przeprowadzenia takiej analizy. Organizacja i wymagania dotyczące eksperymentu komputerowego, zapewniające jego wiarygodność i wszechstronność. Symulacja procesów zbierania danych i prognozowania przyszłych wartości wejść swobodnych. Przykład projektowanie układu sterowania systemem zbiorników podczas powodzi. Wykład 15 (2 godz.) Symulacja systemów sieci komputerowych i sieci ad hoc Wykład jest poświęcony symulacji systemów sieci komputerowych. Pokazuje rolę symulacji komputerowej w zadaniach projektowania i zarządzania sieciami. RozwaŜane są sieci o stałej infrastrukturze oraz sieci dynamiczne o zdecentralizowanej strukturze, składające się z węzłów, które autonomicznie organizują się w sieć. Omawiane są problemy związane z symulacją tego typu sieci. Prezentowane są przykłady symulatorów wykonanych w wybranych środowiskach do symulacji. Symulacja sieci komputerowych o stałej strukturze. Modele danych wejściowych opisujące ruch. Proces Poisson i inne generatory. Implementacje protokołów warstw modelu OSI dostępne w systemach NS i OMNET++. Tworzenie symulatorów oraz wykonywanie eksperymentów w tych środowiskach. Symulacja sieci typu ad hoc. Sieci czujników bezprzewodowych WSNs (Wireless Sensor Networks) i sieci mobilne MANETs (Mobile Networks). Zastosowanie symulacji komputerowej do projektowania tego typu sieci i zarządzania informacją w sieciach. Problemy związane z lokalizacją i rozmieszczeniem węzłów, energooszczędną transmisją, ograniczonym zasięgiem. Wybrane modele propagacji sygnału radiowego. Implementacja warstwy MAC. Modele opisujące przemieszczanie się węzłów. Realizacja symulatora sieci MANET w środowisku MobAsim (narzędzie wykonane w IAiIS). Prezentacja działającego symulatora na przykładzie zadania budowy zastępczej infrastruktury komunikacyjnej (bezprzewodowej) wspierającej akcję ratunkową w warunkach katastrofy. Ćwiczenia (jeŝeli dotyczy) Nie dotyczy Laboratorium (jeŝeli dotyczy) Nie dotyczy Projekt W ramach projektu zadaniem studenta jest zapoznanie się z wybranym narzędziem do symulacji, realizacja przykładowej aplikacji w tym środowisku oraz przeprowadzenie eksperymentów symulacyjnych. Do wyboru jest moŝliwych pięć wariantów projektu: 1. Zapoznanie się z wybranym środowiskiem do symulacji dostępnym w sieci Internet (np. NS, OMNET++ i inne). Instalacja systemu. Implementacja wybranej aplikacji w tym środowisku, wykonanie eksperymentów symulacyjnych dla wygenerowanych danych wejściowych i analiza wyników badań. 2. Instalacja systemu ASimJava. Realizacja przykładowej aplikacji w środowisku ASimJava. Wykonanie eksperymentów symulacyjnych i analiza wyników badań.
3. Instalacja systemu MobAsim. Realizacja przykładowej sieci czujników (WSN) lub sieci mobilnej (MANET). Wykonanie eksperymentów symulacyjnych i analiza wyników badań. 4. Wykonanie własnego symulatora w dowolnym języku programowania. Przykładowe systemy do symulacji zostaną zaproponowane przez wykładowcę. 5. Realizacja wybranej metody optymalizacji (omawianej na wykładzie), która moŝe być zastosowana w zadaniach decyzyjnych typu symulacja-optymalizacja. MoŜliwość wykorzystania środowiska GOOL (prezentowanego na wykładzie). Rozwiązanie przykładowego zadania i ocena efektywności zrealizowanej metody. Literatura Literatura zalecana J. Banks, J.S. Garson, B. L. Nelson, D.M. Nicol, Discrete-event systems simulation, V edycja, Pearson Education, 2009. B. Filipowicz, Modele stochastyczne w badaniach operacyjnych. Analiza i synteza systemów obsługi i sieci kolejkowych, WNT, Warszawa, 1996. W. Findeisen, Struktury sterowania dla złoŝonych systemów, Oficyna Wydawnicza PW, Warszawa, 1997. J. Gutenbaum, Modelowanie matematyczne systemów, Akademicka Oficyna Wydawnicza EXIT, Warszawa, 2003. B.P. Zeigler, H. Praehofer, T.G. Kim, Theory of Modeling and Simulation, Academic Press, 2000. Literatura uzupełniająca J. Arabas, Wykłady z algorytmów ewolucyjnych, WNT, Warszawa, 2001. F.E. Cellier, Continuous System Modeling, Springer-Verlag, 1991. A. Karbowski, E. Niewiadomska-Szynkiewicz, (ed.), Obliczenia równoległe i rozproszone, Oficyna Wydawnicza PW, Warszawa, 2001. N.A. Kheir, Systems Modeling and Computer Simulation, Marcel Dekker, Inc., New York, 1996. J.C. Spall, Introduction to Stochastic Search and Optimization, John Wiley & Sons, New Jersey, 2003.