Raport nr 1
This commit is contained in:
parent
db80b906da
commit
ee83fe0bbb
110
Raporty/raport1.md
Normal file
110
Raporty/raport1.md
Normal file
@ -0,0 +1,110 @@
|
||||
##### Raport przygotowały: Natalia Plitta, Marta Roszak, Kinga Molik, Sara Kowalska
|
||||
|
||||
##### Raportowany okres: 2 marca - 5 kwietnia 2020
|
||||
|
||||
##### Niniejszy raport poświęcony jest przekazaniu informacji na temat stanu projektu grupowego realizowanego na przedmiot Sztuczna Inteligencja w roku akademickim 2019/2020.
|
||||
|
||||
Jest to projekt, który ma na celu stworzenie autonomicznego agenta - "kelnera", poruszającego się po kracie - "restauracji". Program działa w środowisku graficznym.
|
||||
|
||||
- wybrany język programowania i technologie: Python i biblioteka Pygame
|
||||
- wybrane środowisko programistyczne: PyCharm
|
||||
|
||||
### Struktura kodu i sposoby reprezentowania wiedzy wiedzy:
|
||||
|
||||
#### Środowisko:
|
||||
|
||||
<img align="right" width="300" height="300" style="padding-left: 5px;" src="C:\Users\Sara\Downloads\grid.jpg">Dwuwymiarowe, dyskretne środowisko o wymiarach 600 x 600 px (po 15 kolumn i wierszy) - tzw. krata, po której porusza się agent (kelner). Pojedyncza kratka ma rozmiar 40x40 px, włącznie z obramowaniem o szerokości 1 px. Program do narysowania kraty wykorzystuje wbudowane funkcje z biblioteki Pygame.
|
||||
|
||||
Krata numerowana jest od punktu (0;0) - pierwsza kratka w lewym górnym rogu, do punktu (14;14) - ostatnia kratka w prawym dolnym rogu.
|
||||
|
||||
Metoda drawGrid rysuje kratę, natomiast redrawWindow "odświeża okno" - rysuje je ponownie (wywoływane po zmianach).
|
||||
|
||||
----------------------
|
||||
|
||||
#### Klasy:
|
||||
|
||||
##### Waiter:
|
||||
|
||||
W klasie "Waiter" zdefiniowany jest obecny wygląd agenta - zajmuje on pojedynczą kratkę, tj . 38x38 px (rozmiar zmniejszony o szerokość obramowania, aby pozostało ono widoczne). Zakładamy, że bot może nieść na raz 2 talerze.
|
||||
|
||||
Atrybuty zawarte w klasie Waiter:
|
||||
|
||||
- color - kolor agenta (do jego obecnego sposobu wyświetlania),
|
||||
- pos - dwuelementowa lista przechowująca aktualną pozycję agenta,
|
||||
- dirx i diry - atrybuty wykorzystane do ruchu bota; określają, w jakim kierunku jest zwrócony,
|
||||
- plates - lista zamówień (talerz, klient)
|
||||
|
||||
Metody zawarte w klasie:
|
||||
|
||||
- moveRandomly - metoda wykonywania losowego kroku,
|
||||
- moveWithKeyboard - sterowanie kelnerem przy pomocy klawiatury,
|
||||
- resetPosition - pozwala nadać nową pozycję botowi,
|
||||
- takePlates - jeśli kuchnia posiada gotowe dania, kelner zabiera je (metoda "giveDish" z klasy Kitchen) i dodaje je do listy talerzy,
|
||||
- giveClientPlate - wydanie talerza klientowi - metoda "takePlateAndEat" z klasy Client
|
||||
- draw - tworzy graficzną reprezentację bota (czerwony kwadrat)
|
||||
|
||||
Metody moveWithKeyboard oraz resetPosition są obecnie nieużywane, zachowane do testów.
|
||||
|
||||
##### Table:
|
||||
|
||||
Atrybuty:
|
||||
|
||||
- pos - pozycja danego stołu w postaci dwuelementowej listy,
|
||||
- capacity - pojemność danego stołu
|
||||
|
||||
Metody:
|
||||
|
||||
- move - zmiana pozycji stolika poprzez podanie nowych współrzędnych,
|
||||
- draw - tworzy graficzną reprezentację stołu (grafika przeskalowana do rozmiaru kratki)
|
||||
|
||||
##### Dish:
|
||||
|
||||
Atrybuty:
|
||||
|
||||
- dishName - nazwa dania,
|
||||
- preparationTime - czas przygotowania,
|
||||
- eatingTime - czas potrzebny na zjedzenie danego dania,
|
||||
- price - cena
|
||||
|
||||
Klasa nie posiada żadnych metod.
|
||||
|
||||
##### Plate:
|
||||
|
||||
Atrybuty:
|
||||
|
||||
- dishName, preparationTime, eatingTime oraz price - atrybuty pobierane z dania przypisanego do talerza,
|
||||
- isEmpty - oznaczenie czy dany talerz jest pusty, domyślne: False
|
||||
|
||||
Metody:
|
||||
|
||||
- eat - odczekuje czas zjedzenia dania z talerza i zmienia atrybut isEmpty na "True"
|
||||
|
||||
##### Client:
|
||||
|
||||
Atrybuty:
|
||||
|
||||
- age - wiek,
|
||||
- sex - płeć,
|
||||
- myPlate - talerz klienta, domyślnie: None,
|
||||
- budget - budżet klienta,
|
||||
- myTable - numer stołu, przy którym siedzi klient
|
||||
|
||||
Metody:
|
||||
|
||||
- takePlateAndEat - otrzymanie talerza i rozpoczęcie jedzenia (metoda "eat" klasy Plate),
|
||||
- takeASeat - przypisanie klientowi numeru stołu
|
||||
|
||||
##### Kitchen:
|
||||
|
||||
Atrybuty:
|
||||
|
||||
- readyDishes - kolejka gotowych już talerzy, do odbioru przez kelnera,
|
||||
- orders - kolejka talerzy (porcji) do wykonania
|
||||
|
||||
Obie kolejki mają maksymalną długość równą 32.
|
||||
|
||||
Metody:
|
||||
|
||||
- makeDish - ściągnięcie talerza z kolejki orders, odczekanie czasu przygotowania dania, dodanie danego talerza do kolejki readyDishes,
|
||||
- giveDish - wydanie dania kelnerowi, jeżeli jest jakiś gotowy talerz
|
||||
|
Loading…
Reference in New Issue
Block a user