Instrukcja projektowa cz. 2

Podobne dokumenty
LABORATORIUM 7: Problem komiwojażera (TSP) cz. 2

Instrukcja laboratoryjna nr.4

Metody Programowania

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Algorytmy genetyczne dla problemu komiwojażera (ang. traveling salesperson)

Dokumentacja projektu Makao karciana gra sieciowa

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Instrukcja postępowania użytkownika programów LiderSim i ProLider w związku z wprowadzeniem od r. nowych stawek VAT.

1 Wstęp teoretyczny. Temat: Obcinanie odcinków do prostokąta. Grafika komputerowa 2D. Instrukcja laboratoryjna Prostokąt obcinający

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Procedura zgłaszania problemów z obsługą oraz nieprawidłowości w funkcjonowaniu systemu PEFS 2007 w zakresie Programu Operacyjnego Kapitał Ludzki

Kilka prostych programów

W dowolnej przeglądarce internetowej należy wpisać poniższy adres:

Aplikacja projektu Program wycinki drzew i krzewów dla RZGW we Wrocławiu

Tworzenie prezentacji w MS PowerPoint

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Podręcznik użytkownika

Algorytmy stochastyczne laboratorium 03

Ćwiczenie 1: Pierwsze kroki

Programowanie współbieżne Wykład 2. Iwona Kochańska

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Instrukcja obsługi programu Do-Exp

Algorytmy genetyczne

Instrukcja wprowadzania graficznych harmonogramów pracy w SZOI Wg stanu na r.

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

Task Parallel Library

Wyznaczanie optymalnej trasy problem komiwojażera

Analiza efektywności przetwarzania współbieżnego

I. Program II. Opis głównych funkcji programu... 19

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Instrukcja poprawy wniosku

Serwis NaviExpert Biznes. Instrukcja obsługi

Szeregowanie zadań. Wykład nr 3. dr Hanna Furmańczyk

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

Rysunek 1: Okno z lista

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.

Dell Display Manager podręcznik użytkownika

Instrukcja pierwszego logowania do Mobilnego Banku. Strona 1

Elektroniczny Urząd Podawczy

Instrukcja obsługi. SpinRyb v0.87. Maciej Nalewczyński

Spis treści. Wydajność i stabilność... 6 Nowe ustawienia / opcje... 7

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert)

1. Pamięć wirtualna. 2. Optymalizacja pliku pamięci wirtualnej

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Przeglądarka IW-SIRZ

1. Logowanie do Systemu BCW

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Podręcznik użytkownika Wprowadzający aplikacji Wykaz2

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

wersja 1.0 ośrodek komputerowy uj cm ul. mikołaja kopernika 7e, Kraków tel

Zespół Szkół Technicznych w Suwałkach. Pracownia Systemów Komputerowych. Ćwiczenie Nr 13 ARCHITEKTURA SYSTEMU WINDOWS. Opracował Sławomir Zieliński

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Współpraca z platformą Emp@tia. dokumentacja techniczna

Przewodnik po Notowaniach Statica mdm 4

Operacje. instrukcja obsługi wersja 2.9.2

Praca w sieci z serwerem

WinSkład / WinUcz 15.00

Co nowego w programie DEPOZYT OPON w wersji 1.40

INSTRUKCJA DO OPROGRAMOWANIA KOMPUTEROWEGO

Algorytmy genetyczne

Metody uporządkowania

Instrukcje dotyczące systemu Windows w przypadku drukarki podłączonej lokalnie

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Równoległość i współbieżność

Równoległość i współbieżność

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

DIF Freedom WEB (CFD) Komputer, Tablet oraz Telefon Szybki Start

1. Cel i zakres dokumentu Słownik pojęć użytych w instrukcji... 3

Przewodnik użytkownika (instrukcja) AutoMagicTest

Informacje o aktualizacji Wersja 2.3

ibcslabel v2 Instrukcja instalacji systemu

Matematyka od zaraz zatrudnię

Samsung Universal Print Driver Podręcznik użytkownika

Wykaz stali z projektu.

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Zapamiętywanie haseł w przeglądarce Internet Explorer (elearning)

PLAN WYKŁADU OPTYMALIZACJA GLOBALNA ZADANIE KOMIWOJAŻERA METODY ROZWIĄZYWANIA. Specyfika zadania komiwojażera Reprezentacje Operatory

Instrukcja obsługi portalu wersja dla aptek. Logowanie do portalu:

Poradnik instalacyjny sterownika CDC-ACM Dla systemów Windows

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM

Projekty zaliczeniowe Podstawy Programowania 2012/2013

System Gokart Timing

INSTRUKCJA OBSŁUGI DO PROGRAMU I-ANALITYK GT WERSJA i-sys Integracja Systemów Spółka z o.o. ul. Zwoleńska 127 lok. 32, Warszawa

Instrukcja do modułu Kontroli Zarządczej (KZ)

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu?

Moduł rozliczeń w WinUcz (od wersji 18.40)

Algorytm dyskretnego PSO z przeszukiwaniem lokalnym w problemie dynamicznej wersji TSP

Zastosowanie Informatyki w Medycynie

AZACO Eksporter. Instrukcja konfiguracji oraz automatycznego eksportu danych. Przygotowanie środowiska...2. Konfiguracja zadań eksportu danych...

Zadanie 1: Piętnastka

Transkrypt:

Programowanie lokalnych aplikacji.net 2018/19 Instrukcja projektowa cz. 2 Wielozadaniowość w Windows Prowadzący: Tomasz Goluch Wersja: 7.0

I. Zadania projektowe 02. Cel: Utrwalenie wiedzy zdobytej podczas wykładu. Zadanie projektowe z przetwarzania wielowątkowego polega na napisaniu programu służącego do wyświetlania GUI (WPF) pozwalającego na wprowadzenie ustawień początkowych, uruchomienie obliczeń równoległych w nowym procesie oraz ich zakończenie, a także na wyświetlanie na bieżąco najlepszego aktualnie znalezionego rozwiązania. Jak łatwo wywnioskować drugi program/proces będzie pracował w trybie konsolowym i jego głównym zadaniem będzie prowadzenie obliczeń równoległych z wykorzystaniem puli zadań i/lub wątków. Ogólnie rzecz biorąc zadanie polega na optymalizacji narodowego problemu komiwojażera (ang. NTSP - National Traveling Salesman Problem). Na stronie: http://www.tsp.gatech.edu/world/countries.html można znaleźć dane w formacie: EUC_2D, jest to zbiór wektorów dwuwymiarowych opisujących położenie danego miasta pewnego wybranego kraju 1. Ponieważ problem komiwojażera jest problemem NP-zupełnym napisanie algorytmu wielomianowego jest niemożliwe, przy założeniu, że N!=NP. W takim przypadku musimy zadowolić się rozwiązaniem przybliżonym. Może to być pewna permutacja wierzchołków (miast). Jakość zadania określa suma odległości pomiędzy wszystkimi, kolejnymi wierzchołkami (tj. kolejno odwiedzanymi miastami). Odległością pomiędzy miastami jest moduł różnicy ich wektorów. W pierwszej turze algorytmu program losuje rodziców dwie permutacje wierzchołków (miast). 1 Dane pochodzą z NIMA (National Imagery and Mapping Agency). 2

Następnie używamy algorytmu genetycznego PMX (partially matched crossover), którego działanie zostało przedstawione na powyższym rysunku. W pierwszym kroku wybierany jest podciąg o określonej długości (wierzchołki zielone), który w niezmienionej postaci kopiowany jest do potomka. W kolejnym kroku szukamy miejsca dla wierzchołków, które znajdują się w tym samym podciągu drugiego z rodziców a nie znalazły się jeszcze w potomku (wierzchołki czerwone). Dla każdego z takich wierzchołków sprawdzamy gdzie znajduje się wierzchołek, który zajmował to samo miejsce w drugim z rodziców. Jeśli znajduje się ono na zewnątrz początkowo wybranego podciągu, to właśnie znaleźliśmy poszukiwane miejsce. Jeśli nie to kontynuujemy poszukiwania dla kolejnego wierzchołka, i tak aż do skutku. Pozostałe wierzchołki kopiujemy bez zmian z drugiego rodzica (wierzchołki niebieskie). Drugiego potomka tworzymy zamieniając rodziców miejscami i przeprowadzając jeszcze raz całą procedurę PMX. Następnie, jeśli nie skończy się czas przewidziany na tę turę algorytmu, powtarzamy procedurę PMX. W drugiej turze program stara się poprawić znalezione wcześniej rozwiązanie przy pomocy algorytmu 3-opt 2. Polega na wyszukaniu najlepszego wyniku jaki można uzyskać poprzez wymianę trzech krawędzi z dotychczas znalezionego cyklu. Wymaga to rozważenia wszystkich możliwych wymian, których złożoność jest rzędu O(n 3 ). Operacje wymiany kolejnych krawędzi należy przeprowadzać na zmianę dla każdego z rodziców. Krawędzie należy usuwać oraz dodawać, tak aby całe rozwiązanie nadal było cyklem. Poniższy rysunek demonstruje ten krok algorytmu. Krawędzie łączące niebieskie, czerwone i zielone wierzchołki zostają usunięte. Następnie wierzchołki o dwóch różnych kolorach łączone są krawędziami na jeden z dwóch możliwych sposobów. Oczywiście takie podejście nie musi zawsze doprowadzić do najlepszego rozwiązania niemniej na potrzeby niniejszego zadania absolutnie wystarczy. 2 Traveling salesman problem heuristics: Leading. methods, implementations and latest advances 3

Jeśli znalezione w trzeciej fazie rozwiązanie jest lepsze od aktualnie wyświetlanego globalnie, należy powiadomić o tym proces rodzicielski (GUI) przekazując mu lepsze rozwiązanie. Powinien on natychmiast wyświetlić nowe, lepsze rozwiązanie oraz informację o tym, który watek z puli je znalazł. Watki w puli powinny posiadać identyfikator. Pozwoli to zaobserwować, czy rywalizują one między sobą, czy raczej szybko wyłaniany jest jeden lider, którego trudno pokonać. Uwagi:. Obie fazy tj. krzyżowanie PMX alg. 3-opt wykonywane są naprzemiennie i powinny zostać zrównoleglone. Obie tury algorytmu powinna wykonywać się przez określony czas podany przez użytkownika (najlepiej dynamicznie możliwość zmiany czasu w trakcie prowadzenia obliczeń). Druga tura kończy się w momencie kiedy została przejrzana cała przestrzeń kombinacji lub upłynął czas przewidziany na obliczenia również ustalany, najlepiej dynamicznie, przez użytkownika. Lepsze rozwiązanie (znalezione pod koniec drugiej tury każdej fazy zadania) powinno być przekazywane do wątku GUI w celu natychmiastowego wyświetlenia. Na początek proponuję rozważyć Zachodnią Saharę ponieważ posiada zaledwie 29 miast. Jeśli program będzie pozwalał na wczytywanie danych z pliku to można łatwo zacząć badać bardziej złożone problemy. Wymagania techniczne odnośnie programów: Interfejs użytkownika powinien by napisany w technologii WPF i powinien zawierać następujące elementy wizualne: o przycisk uruchamiający obliczenia równoległe, o pole z liczbą uruchamianych zadań wykorzystywanych do zrównoleglenia obliczeń 3, o pole z czasem przeznaczonym na obliczenia dla pierwszej i drugiej tury algorytmu, o pole z wynikami: pole z najlepszą obliczoną wartością, pole z informację o numerze wątku, który obliczył aktualnie wyświetlaną wartość, pole z liczbą policzonych instancji problemu, o pole z Optimal Tour, o przycisk pozwalający na zakończenie obliczeń. o przycisk umożliwiający zamknięcie aplikacji (uaktywniany dopiero po zakończeniu obliczeń). 3 Najbardziej optymalnym wykorzystaniem systemu jest uruchomienie 2n wątków, gdzie n liczba rzeczywistych procesorów dostępnych w systemie. 4

o okno wyświetlające najkrótszy, aktualnie znaleziony cykl komiwojażera wykorzystując całą dostępna przestrzeń okna (przykład poniżej) lub pozwalać na przesuwanie wyświetlanego ekranu. Okno powinno dynamicznie reagować na zmianę rozmiaru (property SizeChanged). Poniżej zamieszczono przykład. Interfejs użytkownika nie powinien ulegać zamrożeniu (wykorzystanie słów kluczowych async i await). Początkowo powinny zostać uruchomione obliczenia równoległe polegające na dwukrotnym wyznaczeniu losowej permutacji wierzchołków, które będą podstawą do dalszych obliczeń w kolejnych turach algorytmu. Następnie wynik dotychczasowych obliczeń powinien podlegać ulepszeniu zgodnie z wcześniej opisanych algorytmem. Po kliknięciu przez użytkownika przycisku kończącego obliczenia powinny zostać przerwane, a najlepszy wynik powinien być nadal wyświetlany w GUI. Zadania powinny mieć dostęp do współdzielonej zmiennej, dostępnej w zakresie procesu, informującej o wartości aktualnie znalezionego, globalnie najlepszego rozwiązania. Dostęp do niej odbywa się na zasadzie scenariusza problemu czytelników i pisarzy. Do zrównoleglenia rozpraszania należy wykorzystać Taski (należy wykorzystać TPL (Task Parallel Library)) lub pulę wątków. Do komunikacji pomiędzy procesami można zastosować potoki nazwane, pliki, kolejki MSMQ itp GUI aktywuje przycisk zakończenie aplikacji po zakończeniu obliczeń i odebraniu wyników. 5

Mile widziane są dodatkowe nietrywialne funkcjonalności, które mogą skutkować podwyższoną liczb punktów, np.:. Implementacja obliczeń z wykorzystaniem procesów zamiast TPL i porównanie wydajności. Wydajność rozumiemy jako liczbę przebiegów algorytmu a nie wynik. Przykład interfejsu programu realizującego wymagania techniczne wraz z dodatkowym: 6