Inhaltsverzeichnis

Einleitung

Die Gruppe Schwarmtechnologie des Mathesislabors beschäftigt sich mit der Entwicklung eines Multiagentencodes, der in der Projektwerkstattverbund „Ingenium“ und „Pronetz“http://www.tu-berlin.de/?101577 mittels Aerostaten umgesetzt werden soll.

Etappenziele

  1. Analyse der vorherigen Schwarmtechnologie im Mathesis-Labor
  2. Analyse weiterer Schwarmtechnologien
  3. Aufstellung eines einhaltbaren Lastenheft
  4. Umsetzung sowie Adaption des vorherigen Quellcodes
  5. Simulation
  6. Bau kleiner Schwarmeinheiten mit Lego
  7. im besten Fall Umsetzung bei Pronetz

Quellen\Literatur\Vorlagen

benötigte Materialien

Teilnehmer

Felix Fürnhammer, Mathis Hertel, Tim Zander, Gereon Siévi

Protokoll Projektwoche 1.

Protokoll Projektwoche 2.

Protokoll Projektwoche 3.

Protokoll Projektwoche 4.

Raster Code:

class Raster:
    def __init__(self,n,widmin=0,widmax=700,heimin=0,heimax=700):
        self.abdeckung=np.zeros((n,n))
        self.bedarf=np.zeros((n,n))
        self.n=n
 
    def xy_to_ij(self,x,y):
        """ erwartet zwei Pixel Koordinaten und gibt sie als Koordinaten des Rasters zurück"""
        i=int(np.floor(x/siderec))
        j=int(np.floor(y/siderec))
        return (i,j)
 
    def ij_to_xy(self,siderec,i,j):
        """ wie xy_to_ij nur halt anders herum"""
        for m in range((i*siderec),((i+1)*siderec)):
            for n in range((j*siderec),((j+1)*siderec)):
                menge_xy=[(m,n)]
        return menge_xy
 
    def corner(self,siderec,rectanglenumber):
        """ gibt eine Liste aller Eckkoordinaten des Rasters in Pixel Koordinaten zurück"""
        l_c=[]
        for s in range(0,rectanglenumber):
            for t in range(0,rectanglenumber):
                l_c.append([s*siderec,t*siderec])
        return l_c
 
    def dist2(self,x,y,boid):
        """ gibt den Abstand von einem Punkt (x,y) zu einem Boid an"""
        #erwartet x,y-Koordinaten in Pixeln
        #und eine Variable des Typs Boid
        dista=(x-boid.position.x)**2+(y-boid.position.y)**2
        return dista
 
    def corner_in_halo(self,l_c,rad):
            """ gibt eine Liste der Rasterfelder zurück, die von den Boids Abgedeckt werden"""
            abgedeckt=[]
            for corner in l_c:
                if corner in abgedeckt:
                    break
                for boid in boids:
                    if dist2(boid,corner[0],corner[1])<=rad**2:
                        abgedeckt.append(corner)
            return abgedeckt
 
    def rasta_abgedeckt(self,abgedeckt):
        """ prüft ob auch alle Ecken des Rasterfeldes vom Boid abgedeckt werden"""
        abgedeckt_rasta=[]
        for i in range(0,rectanglenumber):
                if (i,i) and (i+1,i) and (i,i+1) and (i+1,i+1) in abgedeckt:
                    abgedeckt_rasta.append((i,i))
        return abgedeckt_rasta

Protokoll Projektwoche 5

Korrigierter code der Funktion rasta_abgedeckt:

    def rasta_abgedeckt(self,abgedeckt):
        abgedeckt_rasta=[]
        for i in range(0,rectanglenumber*siderec,siderec):
            for j in range(0,rectanglenumber*siderec, siderec):
                if ([i,j] in abgedeckt)  \
                and ([i+siderec,j] in abgedeckt)\
                and ([i,j+siderec] in abgedeckt)\
                and ([i+siderec,j+siderec] in abgedeckt):
                    abgedeckt_rasta.append((i,j))
        return abgedeckt_rasta

Aussehen der Boids in Woche 5:

Projektwoche 6

Projektwoche 7

Projektwoche 8

Projekttage

Lernergebnis

1. Wir haben Grundlagen von Python gelernt und deren Interaktion dazu gehören:

2. Projektmanagment in der Informatik: