from Mapa.unboxOnTheFloor import UnboxOnTheFloor from genetyczny.Gene import Gene from Mapa.box import Box from AStar import AStar import random def znajdzUnbox(data,mapa): unboxy = [] iterator = 0 ostatniWiersz = len(mapa) -1 for x in mapa[ostatniWiersz]: if (isinstance(x, UnboxOnTheFloor)): unboxy.append((ostatniWiersz, iterator)) iterator += 1 data.unbox = unboxy def wybierzUnbox(data): return random.choice(data.unbox) def policzCost(mapaBoxy, poczatek, koniec): astar = AStar() koszt = astar.search(poczatek, koniec, mapaBoxy, 1, 0) return koszt def generateChromosome(data, mapaBoxy, wheelxy): chromosome = [] regaly = data.zajeteRegaly random.shuffle(regaly) for r in regaly: gen0 = Gene(wheelxy,r,"poczatek-regal") gen0.koszt = policzCost(mapaBoxy, wheelxy, r) chromosome.append(gen0) unbox = wybierzUnbox(data) gen1 = Gene(r,unbox,"regal-unbox") gen1.koszt = policzCost(mapaBoxy, r, unbox) chromosome.append(gen1) return chromosome def generatePopulation(data, mapaBoxy, wheelxy, ileWPopulacji): populacja = [] for i in range(ileWPopulacji): populacja.append(generateChromosome(data, mapaBoxy, wheelxy)) return populacja def randomBox(mapa, regals, ile): regals = regals mapa = mapa tupleList = [] ileRegalow = len(regals) iteration = 0 while iteration < ileRegalow and iteration < ile: regal = random.choice(regals) if regal in tupleList: continue else: tupleList.append(regal) iteration+=1 for (i,j,x) in tupleList: box = Box() mapa[i][j].put(box) """ for t in tupleList: listaRegalow.append((t[0],t[1])) data.zajeteRegaly = listaRegalow """ return mapa def znajdzBox(mapa, regals): zajeteRegaly = [] for (x,y,z) in regals: shelf = mapa[x][y] tmp = shelf.occupied if(tmp == True): zajeteRegaly.append((x,y)) return zajeteRegaly