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.
Felix Fürnhammer, Mathis Hertel, Tim Zander, Gereon Siévi
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
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
1. Wir haben Grundlagen von Python gelernt und deren Interaktion dazu gehören:
2. Projektmanagment in der Informatik: