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)