From ac04e30a962e049183352dbdc5a5855771d0124a Mon Sep 17 00:00:00 2001 From: tomasz Date: Mon, 18 May 2020 12:53:51 +0200 Subject: [PATCH] kompletny algorytm genetyczny bez rozwozenia boxow i interface --- .idea/workspace.xml | 275 ++++++++++-------- Mapa/__pycache__/generate.cpython-37.pyc | Bin 3030 -> 3030 bytes __pycache__/AStar.cpython-37.pyc | Bin 2637 -> 2637 bytes __pycache__/program.cpython-37.pyc | Bin 4760 -> 4934 bytes genetyczny/Data.py | 6 +- genetyczny/Gene.py | 10 +- genetyczny/__pycache__/Data.cpython-37.pyc | Bin 655 -> 746 bytes genetyczny/__pycache__/Gene.cpython-37.pyc | Bin 0 -> 459 bytes genetyczny/__pycache__/funkcje.cpython-37.pyc | Bin 2102 -> 4689 bytes genetyczny/funkcje.py | 171 +++++++++-- genetyczny/genetyczny.py | 1 + main.py | 2 +- program.py | 22 +- 13 files changed, 324 insertions(+), 163 deletions(-) create mode 100644 genetyczny/__pycache__/Gene.cpython-37.pyc create mode 100644 genetyczny/genetyczny.py diff --git a/.idea/workspace.xml b/.idea/workspace.xml index d69a6f3..6c26ce9 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,12 +2,12 @@ - + - - - + + + - toVisit - dra - neuro - where regals isOccupied print @@ -146,13 +151,17 @@ mapfor tmp global + cop + jakLiczycKoszt + jakLiczyc + fitness @@ -171,20 +180,21 @@ - - - + - - - + + + + + - - @@ -380,23 +390,23 @@ - + - + - - + + - + - + - + @@ -429,9 +439,9 @@ - file://$PROJECT_DIR$/program.py - 98 - @@ -533,13 +543,6 @@ - - - - - - - @@ -567,6 +570,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -576,76 +631,38 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - + + + + + - + - - + + diff --git a/Mapa/__pycache__/generate.cpython-37.pyc b/Mapa/__pycache__/generate.cpython-37.pyc index 685a68a50e8f5405967b6305f191b53dff82a115..b301dedc62fc9ea72477caed18228f925a365636 100644 GIT binary patch delta 20 acmca6eodU)iIra#n=fiIra#n=fiI*uM&Z*st}{Hz?M`M_$Cu=&{+MT3sfi* z>smZ9v5zo$O8~DQ?eoM8yA#%=Ma@Wsg1NmWP?ElT=qQ1s$R#)*_(h$w^1#Z>5zW+* z$ce*9)r(v{;y2y&LoauRiC9Ec$Zf6=M&2XQpmSfo6zYTi{1!oh-HM)e{*?a;`*yM{ zZW-^!v$0^pNE;juOGbLn8B-Ri&q*rF(gVV0o$r-dy5{_+%!@tL?<}eFqZ)u5wmmHo zQk4oD7BQ(S)W{;7ZryYqsH5dyASu=KdD6cjV2Z0jhD`~qYL<>W6DmSUD6CoSOsvpF za_jw)Xp0P*#6Pw|wig2)Qf|}guq7t-5s(!6Eijq2RpgQkUNRz~7w%@K+vV-uWpu=T zU^lFnK-mMtA@oo1uDZQ8rV>Vea=J}T5lZL-t8M|+W*9%lls;0SRzGS%H{cFhC(I$H z!k>@%S%3u-Qi3w=6X<)X4LnY|!#3>hNR8CWLP_!FZWIh-Ok#>PULh6CwgEmztceOK zskZ7)g7&ai2?4zmSbc<1Mr(4Z-bG&tCtEfBrGV|T{m_j-A1MW^v~bq;Lupc#@?X)y zXqc4iW*b`GOJH`;PK`NVne`C*=SfqJJG#LC{C zq``~BMP@qR2H((nFbECN89wNQv@>NMh10%}&c}pZgAc!*{>J#CCeoNu(Dwh2@ZI6rGWH^$*L z<}0S-CMzyv3j7qFgT=UMSjMuEh^O|V8h-`-Uq?%bw`O?()iQqg+&(SvC1*m9T%5%K zPrQb2r$O9=mA?mq&~6%}swB{$&`nh#NOh`GT?m7=|KYAaNk7E=_N9$vD&;i+D}pjm zyo>^S%Lh@M01=ZmQps#otY?Yo@QWx~a=^$hoWI+v3s|Cu7V{_b*Vfl}vPpw^4Qzny zi`I5FCUY#m73MMof8{(0UAr`gFj!eVDKs2$ZWiAG2ArI{3PPpog8G4~aMVVJU|Mc> iBxuxm)Nv#97O40n3jE*4BhF-JG}Nr3j_9m)UicsCKm(ru delta 2016 zcmaJ>O>7%Q6rR~#dw*=N9VgUrQqs8jb(=P+5EU&+D}}V8K$6lXjcSR8CF7WEQpX-| zNwC)P!GarTrM+-m7jb|a^u`Sdp&q$#F&t2DmAD}FSRvlqb>jTAO*G%kyf^dhd+!^+ z-$uU~(Pv{Zjlkbr>X&;D2Y%H5r8@3$yaS`+Jc)aNlitYH)5+z>U&3bpWDP6YZ6Le9uHm*DLDdnm}rw# z#p;6_kp^XAV8tC1(}aaK1xMr(?0da4)>(_16Yk$q|CM7a z2hN>$r$YUc)dQBv&P}}MO);@aDRG3dvjSP&CfSHv4PB35fu4>7WG}eChn~$y_l=T~ zi&Tq-$*Rl6PquekYOtAwWwdITc`JV_Uof^l&xH&5;=EC6DMrOIIIP^i!gEw}Gx9C9 zC0h4O-xEIL?#P$vy8DxSRn@3YlQ0tQGx_S!A$cT;5J%j7ZV{7uLX*tF?xTO)JIYY~ zGfROCPyyA~D`G}5BQsVI7;Q*3!O~$LhYAau0=LlTC2Xu)7uKz;+td_+Hwj+d0!_>= z2AZM<4Qh3x6>L4;Yt{)f#U%I-u`rXFQjiLisr9d*a5cQv>!od&y}l-C3N^{<2ir*) zuQP#()|Nll?hXQ|z!Ur-`lL z!*l9%cgmI_H_4&AiY})0lE7`NOiK}X4e0UhK1tj=4aA^!;0F>~zG%ySoib1-xW7r@ z&f|bBb)4-nvZV;J)lH=HAI~8=#Scl~(Yg_BbOLXnWi!x;~HM~pGb%DNnqPo_OJ{<2{Hh#1Z}koiaYGLRdscwthd`wY~d+`w!TZ;m9}f z=C|&531`-i*)N5*QCVDDdr;cQGe4(2l4+z3act^GY2F9d5AIIa;`OWe5zHhA3LOUy zcarS_M>mX$0-#Xkn)03^bF^j$K+ diff --git a/genetyczny/Data.py b/genetyczny/Data.py index 2281ecc..ce68143 100644 --- a/genetyczny/Data.py +++ b/genetyczny/Data.py @@ -8,7 +8,11 @@ class Data: self.mapa = [] self.unbox = [] self.astarMap = [] - + self.geny = [] + self.kordyWozka = None + self.jakLiczycKoszt = None + self.best = None + self.histZmian = [] def genMap(self, mapa): tmpMap =[] diff --git a/genetyczny/Gene.py b/genetyczny/Gene.py index 075688e..bc01c41 100644 --- a/genetyczny/Gene.py +++ b/genetyczny/Gene.py @@ -1,8 +1,8 @@ class Gene: - def __init__(self, poczatkowa, koncowa, name): - self.poczatkowa = poczatkowa - self.koncowa = koncowa - self.koszt = 0 - self.name = name + def __init__(self, kordydnaty): + self.kordy = kordydnaty + self.unbox1 = None + self.unbox2 = None + self.ktoryUnbox = None \ No newline at end of file diff --git a/genetyczny/__pycache__/Data.cpython-37.pyc b/genetyczny/__pycache__/Data.cpython-37.pyc index f2082c6d152947563e0d33ee03942a32a864f9b4..0fce18f854678514251cc959b88fbf99fa554595 100644 GIT binary patch delta 332 zcmeBYeZ|V_#LLUY00fH@4#oYP$lK~{1>~eN)G)+DNJcQ52~0ABNtP6lEGw8~1C#7v zagG#*U#t&M!)-49~C1PQ1mJm6+|5nOs$w?44g+RdS0Z zDYdxd7H39gaYUpVm#f!xK&27{CJ8QToFfkH*hKq88* zB)7mfvEUYKQEGZ(P7x1C0!;7%S-04LwgY7aCqHF$Pv!&3iNF=0DlK9JO0WQNF^J$` g;@}30_-QhNX(WRYrgPZj=BJeAq}qY?0ktsz0N=q%T>t<8 delta 208 zcmaFG+Rw`C#LLUY00c(*2jVg&^0unV06FOlH4O0(k`c^i0+Y-s48aVVjDDId6R)cB zXfobnDNfBvTggzwKG~AdiIoFn&g3q}Hb%C|f=m+P>_Bc2m;lM#VoOiW^Gz(^o$SEm yF2xCwW$LkvMu12T@oCO1E&G$+-L1;{G~Vg>-cyd}8+ diff --git a/genetyczny/__pycache__/Gene.cpython-37.pyc b/genetyczny/__pycache__/Gene.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e54eea976ca5d65367875b635e679cbb9af07234 GIT binary patch literal 459 zcmYjNu};G<5Vf69LPQtD20zfH5{w9;LXj$#E~rZsVTIbDDrr*URN$&i?awgq5&VW% z{(^~jE=4`--ks0y&d>ClSayr6h;8XTYfFtp0hnCX&{%`R7>e%DW{d1 y7nC1L`7+On%}ITL30}$$(Ab&-=(`R5N5uVp*xAG#F1@0r1{Ym!uDJ4DsIXrh3}y8I literal 0 HcmV?d00001 diff --git a/genetyczny/__pycache__/funkcje.cpython-37.pyc b/genetyczny/__pycache__/funkcje.cpython-37.pyc index 0efff03e537331bb4fe29114f4114f5b51c5792b..74e2f21e8df2dc147c132b4c0920990733e82bad 100644 GIT binary patch literal 4689 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 Y?_n#aNURTc;Kv#FxXm5j+y=+5i9m diff --git a/genetyczny/funkcje.py b/genetyczny/funkcje.py index e860f53..bccff64 100644 --- a/genetyczny/funkcje.py +++ b/genetyczny/funkcje.py @@ -3,6 +3,20 @@ from genetyczny.Gene import Gene from Mapa.box import Box from AStar import AStar import random +import numpy + + + + + +def generateGeny(data): + zajeteRegaly = data.zajeteRegaly[:] + for r in zajeteRegaly: + g = Gene(r) + g.unbox1 = policzCost(data.astarMap,r,data.unbox[0]) + if(len(data.unbox) > 1): + g.unbox2 = policzCost(data.astarMap,r,data.unbox[1]) + data.geny.append(g) def znajdzUnbox(data,mapa): @@ -15,8 +29,7 @@ def znajdzUnbox(data,mapa): iterator += 1 data.unbox = unboxy -def wybierzUnbox(data): - return random.choice(data.unbox) + def policzCost(mapaBoxy, poczatek, koniec): @@ -24,31 +37,69 @@ def policzCost(mapaBoxy, poczatek, koniec): 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) +def genRandomChromosome(data): + chromosome = data.geny[:] + random.shuffle(chromosome) + krotkaKosztJakiUnbox = None + unboxLastGen = None + for gen in chromosome: + gen.ktoryUnbox = unboxLastGen + krotkaKosztJakiUnbox = wybierzUnbox(gen, data.jakLiczycKoszt) + unboxLastGen = krotkaKosztJakiUnbox[1] return chromosome -def generatePopulation(data, mapaBoxy, wheelxy, ileWPopulacji): +def genRandomPopulation(data, ileWPopulacji): populacja = [] for i in range(ileWPopulacji): - populacja.append(generateChromosome(data, mapaBoxy, wheelxy)) - + populacja.append(genRandomChromosome(data)) return populacja + +def fitness(chromosome, data): + koszt = 0 + unboxPoprzedniegoGenu = None + + for item, gen in enumerate(chromosome): + if(item == 0): + koszt += policzCost(data.astarMap, data.kordyWozka, gen.kordy) + krotkaKosztJakiUnbox = wybierzUnbox(gen, data.jakLiczycKoszt) + koszt += krotkaKosztJakiUnbox[0] + unboxPoprzedniegoGenu = krotkaKosztJakiUnbox[1] + + else: + if unboxPoprzedniegoGenu == 0: + koszt += gen.unbox1 + elif unboxPoprzedniegoGenu == 1: + koszt += gen.unbox2 + + krotkaKosztJakiUnbox = wybierzUnbox(gen, data.jakLiczycKoszt) + koszt += krotkaKosztJakiUnbox[0] + unboxPoprzedniegoGenu = krotkaKosztJakiUnbox[1] + + + return koszt + +def wybierzUnbox(gen, jakLiczycKoszt): + if(jakLiczycKoszt == 0): + x = random.choice([gen.unbox1, gen.unbox2]) + if(x == gen.unbox1): + y = 0 + else: + y= 1 + return (x,y) + elif(jakLiczycKoszt == 1): + return (gen.unbox1,0) + elif(jakLiczycKoszt == 2): + return (gen.unbox2,1) + elif(jakLiczycKoszt == 3): + x = min(gen.unbox1,gen.unbox2) + if(x == gen.unbox1): + y = 0 + else: + y = 1 + return (x,y) + def randomBox(mapa, regals, ile): regals = regals @@ -84,3 +135,83 @@ def znajdzBox(mapa, regals): if(tmp == True): zajeteRegaly.append((x,y)) return zajeteRegaly + +def dwieNajlepsze(populacja, data): + tmpPopulacja = populacja[:] + chromFitness = [] + + for chrom in populacja: + chromFitness.append(fitness(chrom,data)) + + bestValue = min(chromFitness) + bestChromIndex = chromFitness.index(bestValue) + pierwsza = tmpPopulacja[bestChromIndex] + if (data.best == None): + data.best = (pierwsza[:],bestValue) + elif(data.best[1] > bestValue): + data.best = (pierwsza[:],bestValue) + + tmpPopulacja.pop(bestChromIndex) + chromFitness.pop(bestChromIndex) + + bestValue = min(chromFitness) + bestChromIndex = chromFitness.index(bestValue) + druga = tmpPopulacja[bestChromIndex] + tmpPopulacja.pop(bestChromIndex) + chromFitness.pop(bestChromIndex) + + + return (pierwsza, druga) + +def genPopulacje(pierwszy, drugi, ileWPopulacji, fragmentLiczba, wspMutacji): + ileWChrom = len(pierwszy) + fragment = round(fragmentLiczba*ileWChrom) + nowaPopulacja = [] + + for i in range(ileWPopulacji): + nowaPopulacja.append(crossover(pierwszy,drugi,fragment, wspMutacji)) + + return nowaPopulacja + +def crossover(pierwszy, drugi, fragmentLiczba, wspMutacji): + ileWChrom = len(pierwszy) + tmp = random.randint(0, ileWChrom-fragmentLiczba) + kordyFragment = (tmp,tmp+fragmentLiczba) + nowyChrom = [None] * ileWChrom + iterator = kordyFragment[1] + pomIterator = kordyFragment[1] + nowyChrom[kordyFragment[0]:kordyFragment[1]] = pierwszy[kordyFragment[0]:kordyFragment[1]] + + while(None in nowyChrom): + if(iterator > ileWChrom - 1): + iterator = 0 + if(pomIterator > ileWChrom - 1): + pomIterator = 0 + if(nowyChrom[iterator] == None and drugi[pomIterator] not in nowyChrom): + nowyChrom[iterator] = drugi[pomIterator] + iterator += 1 + pomIterator += 1 + elif(nowyChrom[iterator] == None and drugi[pomIterator] in nowyChrom): + pomIterator +=1 + nowyChrom = mutate(wspMutacji, nowyChrom) + return nowyChrom + + +def updateMap(data, map, mapForAstar, regals): + data.mapa = map + + znajdzUnbox(data, map) + data.zajeteRegaly = znajdzBox(map, regals) + data.astarMap = data.genMap(mapForAstar) + +def mutate(wspMutacji, chrom): + ileWChrom = len(chrom) + ileZmian = round(ileWChrom * wspMutacji) + for i in range(ileZmian): + pom = None + pierw = random.randint(0,ileWChrom - 1) + drug = random.randint(0,ileWChrom - 1) + pom = chrom[pierw] + chrom[pierw] = chrom[drug] + chrom[drug] = pom + return chrom \ No newline at end of file diff --git a/genetyczny/genetyczny.py b/genetyczny/genetyczny.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/genetyczny/genetyczny.py @@ -0,0 +1 @@ + diff --git a/main.py b/main.py index 6cf72fc..a2fb1cf 100644 --- a/main.py +++ b/main.py @@ -34,7 +34,7 @@ def main(): """ if good: szerokosc = 15#min 6 - wysokosc = 8 #min 7 + wysokosc = 10 #min 7 kruche = 1 latwopalne = 1 radioaktywne = 1 diff --git a/program.py b/program.py index 8008cd5..92c030c 100644 --- a/program.py +++ b/program.py @@ -58,12 +58,9 @@ class MainWindow: self.map[i][j] = Shelf(self.screen, self.cell, i, j, (self.map[i][j]-3)%4, (self.map[i][j]-3)//4) self.mapForAStar[i][j] = 1 - self.map = randomBox(self.map, self.regals, 10) - self.data.mapa = self.map - znajdzUnbox(self.data,self.map) - self.data.zajeteRegaly = znajdzBox(self.map, self.regals) - tmp = self.mapForAStar[:] - self.data.astarMap = self.data.genMap(tmp) + self.map = randomBox(self.map, self.regals, 25) + updateMap(self.data, self.map, self.mapForAStar, self.regals) + generateGeny(self.data) ################################################# @@ -95,7 +92,18 @@ class MainWindow: print("eee") """ elif(event.type==pygame.KEYDOWN): - populacja = generatePopulation(self.data, self.data.astarMap, [self.wheel.ns, self.wheel.we], 100) + + self.data.kordyWozka = (self.wheel.ns, self.wheel.we) + self.data.jakLiczycKoszt = 1 + + randomPopulation = genRandomPopulation(self.data, 5) + for i in range(100): + if i == 0: + best2 = dwieNajlepsze(randomPopulation, self.data) + else: + x = genPopulacje(best2[0], best2[1], 5, 0.2, 0.3) + best2 = dwieNajlepsze(x, self.data) + self.data.histZmian.append(self.data.best[1]) if len(self.moves)==0: self.wheel.move(event, self.map) elif(event.type==pygame.MOUSEBUTTONDOWN):