Szablon do prezentacji i terminarz

Szablon latex przydatny do zrobienia prezentacji na seminarium

Terminarz prezentacji:

  1. 11 marca
  2. 18 marca
  3. 25 marca
  4. 8 kwietnia
  5. 15 kwietnia
  6. 22 kwietnia
  7. 6 maja
  8. 13 maja

Gotowe slajdy (tex i pdf) muszą być do mnie przesłane najpóźniej w ostatni piątek przed środą, kiedy mają być prezentowane – do akceptacji. Dopiero po naniesieniu wszystkich moich uwag można być dopuszczonym do prezentacji.

Wejściówka na zajęcia nr 2

Napisz program szyfrujący tekst wprowadzany przez użytkownika. W tym celu przygotuj tablicę kwadratową A o wymiarze 5 na 5 przechowującą wartości typu char, oraz tablicę jednowymiarową B, przechowującą wskaźniki do zmiennych typu char. Do tablicy B wpisz wartości NULL, a do tablicy kwadratowej A wpisz litery alfabetu (z pominięciem liter zawierających znaki diakrytyczne), np. tak:

a f k p w
b g l r x
c h m s y
d i n t z
e j o u  

Następnie wczytaj od użytkownika ciąg znaków reprezentujący dowolny napis składający się ze znaków z tablicy A, którego długość nie jest większa niż długość tablicy jednowymiarowej B (zakładamy przy tym, że dane wprowadzane przez użytkownika są zawsze poprawne co do ich wartości i rozmiaru). Przyjmij, że zdarzeniem oznaczającym koniec wprowadzania napisu jest wciśnięcie przez użytkownika “Enter”. Po wprowadzeniu każdej kolejnej litery znajdź w tablicy A komórkę, przechowującą tę literę, po czym adres znalezionej komórki w A zapisz w kolejnej komórce tablicy B. Po zakończeniu wpisywania tablica B powinna zawierać wskaźniki do odpowiednich komórek tablicy A z kolejnymi literami wprowadzonego napisu.

Wypisz w oknie konsoli napis podany przez użytkownika korzystając z tablicy B, tj. za pomocą wskaźników z B sięgaj do odpowiednich komórek w A i wypisz ich zawartość kolejno na ekranie.

Następnie zaszyfruj wiadomość poprzez przestawienie wartości w wierszach tablicy A. Przykładowe przestawienie to przesunięcia wartości: z wiersza 1 do 2, z 2 do 3, z 3 do 4, z 4 do 5, a z 5 do 1, np. tak:

e j o u  
a f k p w
b g l r x
c h m s y
d i n t z

Po przestawieniu wierszy ponownie wypisz w oknie konsoli napis korzystając ze wskaźników z tabeli B.

Na koniec przywróć w tablicy właściwy porządek wierszy i jeszcze raz korzystając z tablicy B wypisz napis, tym razem w postaci odszyfrowanej.

Przetestowany, działający program (tylko plik z kodem źródłowym) uploaduj do systemu moodle jako rozwiązanie zadania “Wejściówka” zajęć nr 2.

Programowanie Obiektowe: składy grup na laboratoriach

Jak co roku, na początku semestru pojawia się kwestia składów grup na laboratoriach z PO. W planie jest 10 możliwych terminów. Do każdego z terminów przypisana jest jedna grupa. Jeżeli jednak jakaś grupa jest mniej liczna, niż liczba komputerów w pracowni (standardowo: 20 komputerów), to nie ma przeszkód, aby opuścić swoją grupę i uczęszczać na zajęcia z inną, o ile są tam wolne miejsca. Propozycja zmiany grupy dotyczy zwłaszcza studentów z tych grup, gdzie zapisanych jest więcej niż 20 osób. W takim przypadku, jeżeli na zajęcia stawi się więcej niż 20 osób, sam prowadzący dokona autorskiej selekcji, kto musi wyjść, przy czym kryterium eliminacji może być dowolne: kolor butów, rozmiar plecaka, itp.

Poniżej lista liczebności poszczególnych grup oraz inicjały prowadzącego (stan wg USOSa):
1. DD 16
2. DD 12
3. HZ 31
4. HZ 17
5. DD 28
6. DD 21
7. KT 17
8. MS 27
9. MS 16
10.MS 18

Proponuję studentom grup 3, 5, 6 i 8 już teraz pomyśleć nad zmianą terminu. Jest to ważne zwłaszcza dla grup p. Doroty Dąbrowskiej, które mają zajęcia w piątek. Osoby, które nie zmieszczą się w pracowni we środę, mogą jeszcze próbować wejść na zajęcia w piątek. Natomiast, kto nie zdoła uczestniczyć w zajęciach w ten piątek, otrzymuje pierwsze zero, ponieważ od następnego tygodnia na ćwiczeniach realizowane są już zadania nr 2. Generalnie zajęcia realizowane są w cyklach tygodniowych: od poniedziałku do piątku jest to ten sam materiał w każdej z grup. Dlatego właśnie jest możliwa zmiana przypisania do grup w obrębie tygodnia.

Aby obraz sytuacji był pełny, muszę wspomnieć o jeszcze jednym zjawisku. Co roku pewna niewielka liczba studentów rezygnuje już na etapie pierwszego semestru. Dlatego stany formalne grup niekoniecznie odzwierciedlają stan rzeczywisty. Żeby jednak nie było za łatwo, rezygnujący zwykle nie informują nikogo, że rezygnują, wiec tylko naocznie można ustalić, że ktoś jeszcze chodzi na zajęcia, albo już przestał.

Najbliższe seminarium licencjackie

Najbliższe seminarium licencjackie odbędzie się w terminie już wg nowego planu, tj. we środę, 18 lutego, od 11:30 do 13:00 w sali 1244, bud. 12. Będzie można pokazać kod programu (niezbędny do zaliczenia), a także zostaną ustalone terminy prezentacji w nadchodzącym semestrze (uwaga: nieobecni nie mają głosu, tj. każdy może wypowiadać się wyłącznie w swoim imieniu).

Literatura obowiązkowa

Nakazuję w najbliższym czasie zapoznać się dokładnie z książką:
Optymalizacja. Wybrane metody z przykładami zastosowań. Jan Kusiak, Anna Danielewska-Tułecka, Piotr Oprocha. Wydawnictwo Naukowe PWN, Warszawa 2009.

Z naszego punktu widzenia do pominięcia są rozdziały: 5, 7, 9, 10 i 11. Pozostałe należy przeczytać z uwagą – zawarty w nich materiał będzie nam potrzebny. Poza tym jest to materiał, który trzeba zaprezentować w pracy dyplomowej przy okazji wprowadzenia pojęcia “optymalizacja”, zanim jeszcze rozpoczniecie opisywać algorytm ewolucji różnicowej.

Prezentacja rozszerzenia funkcjonalności DE – zmiana terminu

W związku z formalnymi obowiązkami nie będę mógł poprowadzić seminarium w dn. 29 stycznia (tzw. czwartkowtorek). Seminarium zostaje przełożone na poniedziałek, 2 lutego, na godz. 15:00, w tej samej pracowni komputerowej, tj. 1242. Program seminarium również bez zmian.
Ponadto, z racji, że to już będzie sesja, po zakończeniu wszystkich prezentacji będzie możliwość pokazania i przedyskutowania prototypu aplikacji realizującej DE (algorytm bazowy wraz z ustalonym rozszerzeniem). Przypominam, że prezentacja tej aplikacji, a w szczególności pokazanie, że zadany algorytm został zaimplementowany prawidłowo, jest warunkiem koniecznym otrzymania oceny pozytywnej z seminarium za semestr zimowy.

Jeszcze jedno spotkanie przed końcem semestru

W związku z ogłoszeniem czwartku, 29 stycznia, że jest wtorkiem, tego dnia odbędzie się seminarium licencjackie (mimo, że zapowiadałem inaczej – nie wiedziałem jeszcze wtedy o tym czwartkowtorku). Tematem seminarium będzie krótka prezentacja rozszerzenia funkcjonalności DE, jakie zostało każdemu przeznaczone do zaimplementowania.

Każdy przygotowuje na ten dzień krótkie wystąpienie, w którym przedstawi pozostałym słuchaczom seminarium, na czym polega przypisane mu rozszerzenie algorytmu – tylko najważniejszą ideę, bez wchodzenia w szczegóły implementacji i problemy ze strojeniem parametrów, bez dyskusji omawiającej szczególne przypadki, wartości brzegowe parametrów etc. Wystąpienie jest zaplanowane na 5-6 minut. Przygotowując wystąpienie należy zakładać, że słuchacze wiedzą jak działa bazowa wersja DE i dlatego należy od razu przechodzić do meritum. Wystąpienie może być oparte na slajdach (najwyżej 3 slajdy), można też wykorzystać tablicę suchościeralną i flamaster.

Po wystapieniu odbędzie się ocena przez głosowanie: podniosą rękę ci, którzy będą przekonani, że zrozumieli prelegenta. Następnie na wybranych osobach, które podniosły rękę, dokonamy sprawdzenia – będą one miały za zadanie powiedzieć, jak zrozumiały najważniejszą ideę rozszerzenia. Im więcej będzie podniesionych rąk, tym wyższa ocena (każdy głos – 1 pkt.). Osoby, które nic nie zrozumiały, ale podniosą rękę, otrzymają na swoje konto punkty ujemne. Każda osoba, która kompletnie źle zrozumie, będzie pomniejszała o jeden punkty zdobyte przez prelegenta. Natomiast ci, którzy zrozumieją tylko częściowo, mogą być wliczani do sumy punktów, jeżeli to, co ogarnęli, jest zgodne z prawdą. Przekroczenie czasu prezentacji również generuje punkty ujemne – po jednym za każdą minutę.

Aby zaliczyć, konieczne jest zdobycie przynajmniej 4 punktów. Na każdą osobę przeznaczone jest 10 minut, łącznie z głosowaniem i weryfikacją. Slajdy (plik pdf, ppt, lub pptx) proszę mi przysłać mailem najpóźniej dzień przed seminarium. Będą prezentowane z mojego notebooka. Porządek prezentacji zgodny z numerami tematów.
Obecność jest obowiązkowa.

Materiały do prac dyplomowych 2014/2015

Dla wszystkich materiałów do pobrania:

Dokument bazowy dla wszystkich:
Rozdział 2.1 (cały)

Temat 1

Rekombinacja (rozdział 2.6): porównanie “exponential crossover” (str. 93) z “arithmetic recombination” (rozdział 2.6.3)

Temat 2

Rekombinacja (rozdział 2.6): porównanie “exponential crossover” (str. 93) z “Three-Vector Recombination” (str. 108)

Temat 3

Samoadaptacja (Self-Adapting Control Parameters in Differential Evolution: A Comparative Study on Numerical Benchmark Problems)

Temat 4

Sąsiedztwo w zbiorze indeksów (Differential Evolution Using a Neighborhood-Based Mutation Operator)

Temat 5

Mutacja zależna od odległości (Enhancing Differential Evolution Utilizing Proximity-Based Mutation Operators)

Temat 6

Mutacja trygonometryczna (A Trigonometric Mutation Operation to Differential Evolution)

Temat 7

Adaptacja parametrów (Differential Evolution Algorithm With Strategy Adaptation for Global Numerical Optimization)

Temat 8

Wektory przeciwne (Opposition-Based Differential Evolution)

Temat 9

Liczność populacji: zewnętrzne archiwum (JADE: Adaptive Differential Evolution with Optional External Archive)

Temat 10

Elementy optymalizacji lokalnej (Enhancing Differential Evolution Performance with Local Search for High Dimensional Function Optimization)