Laboratorium technik optymalizacji: układanie uniwersyteckiego planu zajęć

Podobne dokumenty
Wydział Matematyki I Informatyki ul. Słoneczna Olsztyn

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III

Pole wielokąta. Wejście. Wyjście. Przykład

Projekty zaliczeniowe Podstawy Programowania 2012/2013

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Bazy danych TERMINOLOGIA

Optymalizacja systemów

Optymalizacja systemów

Zadanie 1. Doskonała inaczej (6 pkt) Poniższy algorytm wyznacza wszystkie dzielniki liczby naturalnej n 1, mniejsze od n.

Sprawozdanie z zajęć laboratoryjnych: Technologie sieciowe 1

Laboratorium 5: Tablice. Wyszukiwanie binarne

Instrukcje dla zawodników

Załącznik nr 1. Specyfikacja. Do tworzenia Mapy Kompetencji

Wyszukiwanie binarne

Projekt z przedmiotu Systemy akwizycji i przesyłania informacji. Temat pracy: Licznik binarny zliczający do 10.

BŁĘDY OBLICZEŃ NUMERYCZNYCH

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Metoda znak-moduł (ZM)

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Cechy podzielności liczb. Autor: Szymon Stolarczyk

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

4. Funkcje. Przykłady

Podstawy i języki programowania

Konfiguracja parametrów pozycjonowania GPS /5

Zestaw 1: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.adb i.ads)!!! Zad. 1: Zad. 2: 2,2,2 5,5,5,5,5,5 Zad.

Wydział Matematyki I Informatyki ul. Słoneczna Olsztyn

Instrukcja dla koordynatorów wydziałowych i kierunkowych

Maciej Piotr Jankowski

Zestaw A-1: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.adb i.ads)!!! Zad. 1: 4,3,3 2,2,1 Zad. 2: 3,3,3 Zad.

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):

Zestaw 1-1 Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp)!!!

Temat: Algorytmy zachłanne

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Podzielność liczb przez liczby od 2 do 13 WSTĘP CO TO ZNACZY, ŻE LICZBA JEST PODZIELNA PRZEZ INNĄ LICZBĘ? ZASADY PODZIELNOŚCI PRZEZ LICZBY OD 2 DO 10

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

Efektywność Procedur Obliczeniowych. wykład 5

Kod U2 Opracował: Andrzej Nowak

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Internetowe Ko³o M a t e m a t yc z n e

PAMIĘĆ RAM. Rysunek 1. Blokowy schemat pamięci

Zastosowanie Excela w obliczeniach inżynierskich.

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Podstawy Informatyki

Wokół Problemu Steinhausa z teorii liczb

EGZAMIN MATURALNY Z INFORMATYKI POZIOM PODSTAWOWY MAJ 2014 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Podsieci IPv4 w przykładach. mgr inż. Krzysztof Szałajko

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Problemy z ograniczeniami

Python: JPEG. Zadanie. 1. Wczytanie obrazka

do instrukcja while(wyrażenie);

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Smerfonizator. Dane wyjściowe Minimalna liczba uruchomień Smerfonizatora

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Dzielenie sieci na podsieci

Algorytm grupowania danych typu kwantyzacji wektorów

Rozdział 9 PROGRAMOWANIE DYNAMICZNE

Zadania. Rozdział Wektory i macierze. 1.Podajpolecenie 1,któreutworzywektor: v = [100, 95, 90,..., 95, 100].

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

ćw. Symulacja układów cyfrowych Data wykonania: Data oddania: Program SPICE - Symulacja działania układów liczników 7490 i 7493

STEROWANIE MASZYN I URZĄDZEŃ I. Laboratorium. 4. Przekaźniki czasowe

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

BASH - WPROWADZENIE Bioinformatyka 4

INFORMATYKA POZIOM PODSTAWOWY

Wstęp do systemów wielozadaniowych laboratorium 19 awk

Arkusz kalkulacyjny. Technologia Informacyjna Lekcja 38-39

Rozwiązywanie problemów z użyciem Solvera programu Excel

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

Formatowanie zawartości komórek

Zestaw C-11: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp i.h)!!! Zad. 1: Zad. 2:

1 Powtórzenie wiadomości

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Opis programu:

Algorytmy zachłanne. dr inż. Urszula Gałązka

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Laboratorium nr 4: Arytmetyka liczb zespolonych

Matematyka dyskretna dla informatyków

Import danych z plików Excel. (pracownicy, limity urlopowe i inne)

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Pakiety matematyczne. Matematyka Stosowana. dr inż. Krzysztof Burnecki

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

1 Podstawy c++ w pigułce.

Jeśli X jest przestrzenią o nieskończonej liczbie elementów:

Skrypt 16. Ciągi: Opracowanie L6

Tekst na mapach. Teksty na mapie. Ustawienia mapy. W tej instrukcji zostanie opisany sposób w jaki można na mapach wyświetlać teksty

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

TEORETYCZNE PODSTAWY INFORMATYKI

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

Tablice jednowymiarowe

Struktura pliku wejściowego ipko biznes przelewy zagraniczne (MT103 / CSV)

I N S T R U K C J A. uzupełnienia formularza programu przedmiotu/modułu

Cel szkolenia. Konspekt. Opis kursu

Transkrypt:

Laboratorium technik optymalizacji: układanie uniwersyteckiego planu zajęć Marek Kubiak Opis problemu Rozważany problem układania uniwersyteckiego planu zajęć (ang. University Course Timetabling Problem UCTP) jest pewną redukcją typowego problemu, z którym spotykają się w swojej działalności uniwersytety. Polega on na tym, by kursy (wydarzenia) z pewnego danego zbioru przypisać do 45 przedziałów (jednostek) czasowych tygodnia roboczego (9 jednostek na każdy z 5 dni roboczych). Na każdy kurs jest zapisany pewien zbiór studentów. Do dyspozycji uniwersytetu jest pewien zbiór pomieszczeń, w których mogą się odbywać kursy, a każde pomieszczenie jest opisane przez pewien zbiór cech, które ono zapewnia (np. obecność projektora, komputerów osobistych, itp.) Do tego każde pomieszczenie posiada ograniczenie na maksymalną liczbę osób, która może pomieścić. Dopuszczalny plan zajęć to taki plan, w którym każdy kurs jest przypisany do odpowiedniej jednostki czasowej i pomieszczenia w ten sposób, że zachowane są sztywne ograniczenia: żaden student nie uczęszcza na więcej niż jeden kurs w jednym przedziale czasu; pomieszczenie przypisane do kursu jest wystarczająco duże, by pomieścić wszystkich uczęszczających studentów, a do tego zapewnia obecność wszystkich wymaganych przez kurs cech; tylko jeden kurs odbywa się w jednym pomieszczeniu w jednym przedziale czasowym. Dopuszczalny plan zajęć jest jeszcze oceniany pod kątem zachowania pewnych dodatkowych ograniczeń. Te ograniczenia sprawdzają: czy student ma zajęcia w ostatnim przedziale czasowym dnia? czy student ma więcej niż dwa kursy z rzędu? czy student ma w jednym dniu tylko jedne zajęcia? 2 Funkcja celu Ocena rozwiązania rozpoczyna się od określenia jego dopuszczalności. Gdy rozwiązanie jest niedopuszczalne, to jest bezużyteczne. Nie oznacza to oczywiście, że nie może byc takie używane w trakcie obliczeń jedynie nie powinno pojawić się jako wynik działania programu. Jeśli rozwiązanie jest dopuszczalne, to należy zliczyć:

liczbę takich przypadków, że student ma tylko jeden kurs w jednym dniu (jeśli ten sam student ma dwa takie dni, z tylko jednym kursem, to do liczby przypadków należy doliczyć 2); liczbę takich przypadków, że student ma więcej niż dwa kursy z rzędu; 3 kursy z rzędu dają przekroczenie dopuszczalnej liczby kursów z rzędu o, 4 kursy dają przekroczenie o 2, itd.; oczywiście ostatnia jednostka czasowa jednego dnia i pierwsza następnego dnia nie następują po sobie z rzędu i nie należy w ich przypadku sprawdzać tego warunku. liczbę takich przypadków, że student ma kurs w ostatniej jednostce czasowej dnia. Suma tych trzech liczb jest oceną rozwiązania dopuszczalnego i należy ją minimalizować. W przypadku używanych instancji sporą trudność obliczeniową może powodować już samo znalezienie rozwiązania dopuszczalnego. 3 Format pliku danych instancji (wejściowego) Plik tekstowy z opisem instancji problemu ma format niżej opisany; wszystkie liczby są całkowite, wszystkie separatory wewnątrz linii są spacjami. Pierwsza linia pliku zawiera cztery liczby: liczba kursów (wydarzeń), liczba pomieszczeń, liczba cech pomieszczeń, liczba studentów. Kolejne linie, jedna dla każdego pomieszczenia, zawierają rozmiary pomieszczeń (maksymalną liczbę osób dozwoloną w pomieszczeniu podczas zajęć). Kolejne linie, jedna na każdą parę student/kurs, zawierają cyfry binarne określające uczęszczanie studenta na kurs: zero () określa, że student nie uczęszcza na dany kurs, jedynka () określa, że student uczęszcza na ten kurs. Kolejność wpisów w tej części jest taka, że kursy zmieniają się szybciej (jakby były iterowane w wewnętrznej pętli). Np. dla 3 studentów i 4 kursów następujące dane: 2

kurs kurs 2 kurs 3 kurs 4 student student 2 student 3 Tablica : Tabela studenci/kursy dla przykładowych danych opisywałyby tabelę uczęszczania na kursy (tabelę studenci/kursy): Tabela oznacza, że: pierwszy student uczęszcza na kurs 2, drugi student uczęszcza na kurs i 2, trzeci student uczęszcza na kurs 3. Kolejne linie, jedna na każdą parę pomieszczenie/cecha pomieszczenia, zawierają cyfry binarne określające cechy pomieszczeń: zero () określa, że pomieszczenie nie posiada danej cechy, jedynka () określa, że pomieszczenie posiada daną cechę. Kolejność wpisów w tej części jest taka, że cechy pomieszczeń zmieniają się szybciej (jakby były iterowane w wewnętrznej pętli). Np. dla 3 pomieszczeń i 4 cech następujące dane: opisywałyby tabelę 2 cech pomieszczeń (tabelę pomieszczenia/cechy): Tabela 2 oznacza, że: pierwsze pomieszczenie posiada cechę 2, 3

cecha cecha 2 cecha 3 cecha 4 pomieszczenie pomieszczenie 2 pomieszczenie 3 Tablica 2: Tabela pomieszczenia/cechy dla przykładowych danych cecha cecha 2 cecha 3 cecha 4 kurs kurs 2 kurs 3 Tablica 3: Tabela kursy/cechy dla przykładowych danych drugie pomieszczenie posiada cechy i 2, trzecie pomieszczenie posiada cechę 3. Kolejne linie, jedna na każdą parę kurs/cecha pomieszczenia, zawierają cyfry binarne określające cechy pomieszczeń, które są wymagane przez określony kurs: zero () określa, że kurs nie wymaga danej cechy pomieszczenia, jedynka () określa, że kurs wymaga danej cechy. Kolejność wpisów w tej części jest taka, że cechy pomieszczeń zmieniają się szybciej (jakby były iterowane w wewnętrznej pętli). Np. dla 3 kursów i 4 cech następujące dane: opisywałyby tabelę 3 wymaganych przez kursy cech pomieszczeń (tabelę kursy/cechy): Tabela 3 oznacza, że: pierwszy kurs wymaga cechy 2, drugi kurs wymaga cech i 2, trzeci kurs wymaga cechy 3. 4

4 Format rozwiązania (wyjścia) Dla każdego kursu, w kolejności z pliku danych instancji, w osobnej linii wypisana powinna być para liczb: numer jednostki czasowej, numer pomieszczenia (separatorem tych liczb jest spacja). Numer jednostki czasowej jest liczbą z przedziału od do 44 i opisuje jednostkę czasową przydzieloną do kursu. Numer pomieszczenia to numer przydzielonego dla danego kursu pomieszczenia. Pomieszczenia są ponumerowane od zera i w kolejności z pliku danych instancji. 5 Źródło instancji problemu Instancje problemu można ściągnąć ze strony internetowej: http://www.cs.put.poznan.pl/mkubiak/teaching.html 6 Interfejs programu rozwiązującego problem UCTP Program rozwiązujący problem UCTP powinien przyjmować z linii poleceń następujące dwa parametry: <ściezkainstancji> <LimitSekund> Parametr pierwszy, <SciezkaInstancji>, to ścieżka dostępu (bezwzględna lub względna) do pliku instancji problemu. Parametr <LimitSekund> to dodatnia liczba całkowita określająca limit czasu działania programu. W czasie określonym przez ten limit program powinien sfinalizować obliczenia, wypisać wyniki (jedno, najlepsze znalezione rozwiązanie) do standardowego wyjścia i zakończyć się. Przekroczenie tego limitu powoduje, że bezwględnie usuwany jest proces programu. 5