Programowanie Ograniczeniowe Plik
Transkrypt
Programowanie Ograniczeniowe Plik
(pieczęć wydziału) KARTA PRZEDMIOTU 1. Nazwa przedmiotu: PROGRAMOWANIE 2. Kod przedmiotu: OGRANICZENIOWE 3. Karta przedmiotu ważna od roku akademickiego: 2012/2013 4. Forma kształcenia: studia drugiego stopnia 5. Forma studiów: studia stacjonarne 6. Kierunek studiów: AUTOMATYKA I ROBOTYKA; WYDZIAŁ AEiI 7. Profil studiów: ogólnoakademicki 8. Specjalność: Komputerowe systemy sterowania 9. Semestr: 2,3 10. Jednostka prowadząca przedmiot: Instytut Automatyki, RAu1 11. Prowadzący przedmiot: dr inż. Szymon Ogonowski 12. Przynależność do grupy przedmiotów: przedmioty specjalnościowe 13. Status przedmiotu: obowiązkowy 14. Język prowadzenia zajęć: polski 15. Przedmioty wprowadzające oraz wymagania wstępne: Zakłada się, że przed rozpoczęciem nauki niniejszego przedmiotu student posiada podstawy w programowaniu obiektowym (C++, Java) oraz znajomość podstaw dotyczących optymalizacji dyskretnej. 16. Cel przedmiotu: Celem przedmiotu jest zaznajomienie studentów z technikami rozwiązywania problemów kombinatorycznych z klasy tzw. problemów spełniania ograniczeń (ang. Constraint Satisfaction Problems). Zastosowania tych technik są w trakcie wykładu przedstawiane na wielu rzeczywistych przykładach. Podstawy teoretyczne prezentowane na wykładzie wspierane są przykładowymi prezentacjami rozwiązań programistycznych z wykorzystaniem języka Java (biblioteki JaCoP). Student po ukończeniu przedmiotu powinien umieć wykorzystać dowolne narzędzie programistyczne w celu deklaratywnego opisania problemu i sparametryzowania w nim metody poszukiwania. 17. Efekty kształcenia: Nr W1 W2 W3 U1 U2 U3 K1 K2 Opis efektu kształcenia Metoda sprawdzenia efektu kształcenia Forma Odniesienie prowadzenia do efektów zajęć dla kierunku studiów Zna i rozumie pojęcia: ograniczenie, domena zmiennej, dystrybucja, metoda poszukiwania, propagacja ograniczeń. Rozumie funkcjonalność ograniczeń: arytmetycznych, reifikowanych, alldifferent, cumulative, circuit, element, count i ma wiedzę w zakresie modelowania ograniczeń miękkich. Rozumie funkcjonalność metod poszukiwania: depth first search, limited discrepancy search, credit serach, branchand-bound. Potrafi opisać zadany problem z wykorzystaniem ograniczeń oraz wybrać odpowiednią metodę poszukiwania rozwiązania. Potrafi rozwiązywać zadania harmonogramowania i problemy typu job-shop. Potrafi tworzyć oprogramowanie w strukturze modułowej. SP WM SP WM SP WM K_W1/2; W17/2 SP,CL L CL L K_U1/2; U2/2; U3/2; U22/2 K_U24/2 CL L K_U9/3 Ma świadomość zakresu problemów, które mogą być rozwiązane za pomocą CLP. Potrafi odpowiednio określić priorytety służące realizacji SP WM, L K_K1/3; K5/1 K_K4/3 CL K_W1/2; W17/2 K_W1/2; W17/2 L postawionego przez siebie lub innych zadania. 18. Formy zajęć dydaktycznych i ich wymiar (liczba godzin) W. : 30 L.: 15 19. Treści kształcenia: Wykład Programowanie Ograniczeniowe wpisuje się w szeroko pojęte pojęcie sztucznej inteligencji. Główna idea PO opiera się na programowaniu deklaratywnym – od programisty wymaga się jedynie opisu tego co jest do obliczenia a nie jak należy te obliczenia wykonać (gdyż ta część jest już zaimplementowana w soilverach). Wykład z PO bazuje na prezentacji multimedialnej wspieranej licznymi przykładami tesotwania przygotowanych wcześniej programów, realizujących omawiane w trakcie wykładu mechanizmy. W czasie kursu przedstawiane są pojęcia: ograniczeń i ich propagacji, różnych domen zmiennych, ograniczeń globalnych, takich jak: alldifferent, count, element, cumulative, diff2, circuit, knapsack, among, regular, dystrybucji – first-fail, most-constrained, max-regret, poszukiwań, takich jak – branch-and-bound, depth first search, limited discrepancy search, specjalnych metod poszukiwań (w tym sposobów tworzenia własnych metod poszukiwań), modelowania i rozwiązywania zadań optymalizacji oraz stosowania ograniczeń miękkich - ważony CSP, Fuzzy/Possibilistic CSP, Probabilistic CSP, harmonogramowania oraz planowania. Szczegóły powyższych zagadnień przedstawiane są na podstawie prostych akademickich oraz bardziej złożonych, rzeczywistych problemów kombinatorycznych z wykorzystaniem języka Java i dedykowanej biblioteki JaCoP (Java Constraint Programming). Zastosowanie znanego i dobrze udokumentowanego języka programowania pozwala studentom skupić się na poznaniu idei programowania ograniczeniowego. Dzięki temu w szybki sposób możliwe jest przejście do testowania poznanych podstaw teoretycznych w praktyce. Laboratorium Wszystkie ćwiczenia laboratoryjne skupiają się na różnych zagadnieniach Programowania Ograniczeniowego. Ich implementacja jest realizowana w postaci osobnych modułów Javy. Moduły te w trakcie każdego laboratorium włączane są do głównej aplikacji tworzonej przez studentów, tworząc kompaktowy i skalowalny projekt. 1. Opracowanie podstawowej struktury aplikacji 2. Rozwiązywanie prostych zadań kombinatorycznych 3. Różne metod poszukiwań 4. Ograniczenia miękkie 5. Harmonogramowanie/planowanie zadań 6. Zadania optymalizacji 20. Egzamin: nie 21. Literatura podstawowa: Antoni Niederliński “Programowanie w logice z ograniczeniami”, Website www.jacop.eu (JaCoP API and documentation). 22. Literatura uzupełniająca: Francesca Rossi, Peter Van Beek, Toby Walsh “Handbook of constraint programming”, Peter van Hentenryck “Constraint-based Local Search”. 23. Nakład pracy studenta potrzebny do osiągnięcia efektów kształcenia Lp. Forma zajęć 1 Wykład 2 Ćwiczenia 3 Laboratorium 4 Projekt 0/0 5 Seminarium 0/0 6 Inne 10/10 Suma godzin 55/35 24. Suma wszystkich godzin: 90 Liczba godzin kontaktowych / pracy studenta 30/5 0/0 15/20 25. Liczba punktów ECTS: 3 26. Liczba punktów ECTS uzyskanych na zajęciach z bezpośrednim udziałem nauczyciela akademickiego: 2 27. Liczba punktów ECTS uzyskanych na zajęciach o charakterze praktycznym (laboratoria, projekty): 1 26. Uwagi: Zatwierdzono: ……………………………. ………………………………………………… (data i podpis prowadzącego) (data i podpis dyrektora instytutu/kierownika katedry/ Dyrektora Kolegium Języków Obcych/kierownika lub dyrektora jednostki międzywydziałowej)