SzIProjekt/environment.md

3.1 KiB

Sztuczna inteligencja - projekt zespołowy - Autonomiczny Traktor

autorzy: Aleksandra Werda, Natalia Wiśniewska, Kinga Jagodzińska, Aleksandra Jonas


Implementacja Środowiska Agenta


Wykorzystane narzędzia:

  • język programowania Python
  • biblioteka Pygame

Pierwszym zadaniem dotyczącym projektu jest implementacja dwuwymiarowego środowiska (tzw. kraty), w którym poruszać będzie się nasz agent.

W tym celu za pomocą funkcji display.set_mode z biblioteki Pygame utworzyłyśmy dwuwymiarowe środowisko graficzne o wymiarach 1280x720 pikseli.

screen = pygame.display.set_mode((1280, 720))

Dla lepszej reprezentacji agenta posłużyłyśmy się obrazkiem traktora.

image = pygame.image.load(r'traktor.jpg')

A jako punkt startowy ustawiłyśmy dla niego kolejno współrzędne x i y:

x=0
y=0

white = (255, 255, 255)
screen.fill(white)

def traktor(x,y):
    screen.blit(image, (x,y))

Powyższy kod wyświetlił agenta w lewym górnym rogu okna, gdzie znajduje się punkt (0,0) .

Początkowa pozycja traktora

Później za pomocą pętli for "wyłapujemy" wszystkie występujące eventy w trakcie działania naszego programu.

for event in pygame.event.get():

Uwzględniamy sytuację, w której chcemy zamknąć okno, w którym pracuje agent:

    if event.type==pygame.QUIT:
                sys.exit(0)

Następnie, manipulując współrzędnymi x i y, traktor porusza się według schematu (wartości dobrane losowo):

if x <1200 and y==0:
        x+=1
    elif x==1200 and y<650:
        y+=1
    elif x>600 and y==650:
        x-=1
    elif x==600 and y>0:
        y-=1

Traktor przechodzi na nowe współrzędne:

traktor(x,y)

Agent w trakcie ruchu

Dzięki funkcji flip poruszający się agent nie pozostawia za sobą śladu. Widzimy go tylko na aktualnych pozycjach x i y

pygame.display.flip()

Kolejne położenie traktora

Agent będzie zajmował się uprawą pola, dlatego potrzebujemy obiektów odpowiedzialnych za przechowywanie wiedzy np. na temat gatunków warzyw/roślin, jakie chcemy uprawiać.

class Uprawy:
    rodzajUprawy="brak"
    czyPodlac="nie"
    czyPodacNawoz="nie"
    stanUprawy="dobry"

W kodzie programu znajdują się zatem następujące rośliny:

marchew = Uprawy()
marchew.rodzajUprawy="Marchew"
marchew.czyPodlac="tak"
marchew.czyPodacNawoz="tak"
marchew.stanUprawy="sredni"

ziemniaki = Uprawy()
ziemniaki.rodzajUprawy="Ziemniak"
ziemniaki.czyPodlac="tak"
ziemniaki.czyPodacNawoz="nie"
ziemniaki.stanUprawy="dobry"

buraki = Uprawy()
buraki.rodzajUprawy="Burak"
buraki.czyPodlac="nie"
buraki.czyPodacNawoz="nie"
buraki.stanUprawy="bardzo dobry"

salata = Uprawy()
salata.rodzajUprawy="Salata"
salata.czyPodlac="tak"
salata.czyPodacNawoz="tak"
salata.stanUprawy="zly"

pomidory = Uprawy()
pomidory.rodzajUprawy="Pomidor"
pomidory.czyPodlac="nie"
pomidory.czyPodacNawoz="tak"
pomidory.stanUprawy="sredni"