forked from s444399/AI
zmiana generowania nowych populacji
This commit is contained in:
parent
8af100a754
commit
fe3b86d97e
@ -1,5 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="BookmarkManager">
|
||||||
|
<bookmark url="file://$PROJECT_DIR$/genetyczne.py" line="21" mnemonic="9" />
|
||||||
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="8264ee8d-5217-4cb6-b982-78f67fabc82e" name="Default Changelist" comment="">
|
<list default="true" id="8264ee8d-5217-4cb6-b982-78f67fabc82e" name="Default Changelist" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
@ -22,8 +25,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/funkcje.py">
|
<entry file="file://$PROJECT_DIR$/funkcje.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="326">
|
<state relative-caret-position="1547">
|
||||||
<caret line="180" column="13" lean-forward="true" selection-start-line="180" selection-start-column="13" selection-end-line="180" selection-end-column="13" />
|
<caret line="91" column="9" selection-start-line="91" selection-start-column="9" selection-end-line="91" selection-end-column="9" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#43#0" expanded="true" />
|
<element signature="e#0#43#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -39,8 +42,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/genetyczne.py">
|
<entry file="file://$PROJECT_DIR$/genetyczne.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="367">
|
<state relative-caret-position="255">
|
||||||
<caret line="77" column="35" lean-forward="true" selection-start-line="77" selection-start-column="35" selection-end-line="77" selection-end-column="35" />
|
<caret line="16" column="7" selection-start-line="16" selection-start-column="7" selection-end-line="16" selection-end-column="7" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
@ -48,8 +51,8 @@
|
|||||||
<file pinned="false" current-in-tab="true">
|
<file pinned="false" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/main.py">
|
<entry file="file://$PROJECT_DIR$/main.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="98">
|
<state relative-caret-position="625">
|
||||||
<caret line="6" column="4" lean-forward="true" selection-start-line="6" selection-start-column="4" selection-end-line="6" selection-end-column="4" />
|
<caret line="46" column="11" selection-start-line="46" selection-start-column="11" selection-end-line="46" selection-end-column="11" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -72,8 +75,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/program.py">
|
<entry file="file://$PROJECT_DIR$/program.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="469">
|
<state relative-caret-position="452">
|
||||||
<caret line="103" column="65" selection-start-line="103" selection-start-column="65" selection-end-line="103" selection-end-column="65" />
|
<caret line="96" column="52" lean-forward="true" selection-start-line="96" selection-start-column="52" selection-end-line="96" selection-end-column="52" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#13#0" expanded="true" />
|
<element signature="e#0#13#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -101,11 +104,6 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="FindInProjectRecents">
|
<component name="FindInProjectRecents">
|
||||||
<findStrings>
|
<findStrings>
|
||||||
<find>cop</find>
|
|
||||||
<find>jakLiczycKoszt</find>
|
|
||||||
<find>jakLiczyc</find>
|
|
||||||
<find>eve</find>
|
|
||||||
<find>doW</find>
|
|
||||||
<find>self</find>
|
<find>self</find>
|
||||||
<find>gen</find>
|
<find>gen</find>
|
||||||
<find>data.geny</find>
|
<find>data.geny</find>
|
||||||
@ -130,7 +128,12 @@
|
|||||||
<find>mutate</find>
|
<find>mutate</find>
|
||||||
<find>od tego mom</find>
|
<find>od tego mom</find>
|
||||||
<find>regalsik</find>
|
<find>regalsik</find>
|
||||||
|
<find>podajDwaChromosomy</find>
|
||||||
|
<find>generuj</find>
|
||||||
|
<find>populacjaF</find>
|
||||||
|
<find>rys</find>
|
||||||
<find>data</find>
|
<find>data</find>
|
||||||
|
<find>populacjaFitness</find>
|
||||||
</findStrings>
|
</findStrings>
|
||||||
</component>
|
</component>
|
||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
@ -165,9 +168,9 @@
|
|||||||
<option value="$PROJECT_DIR$/genetyczny/genetyczne.py" />
|
<option value="$PROJECT_DIR$/genetyczny/genetyczne.py" />
|
||||||
<option value="$PROJECT_DIR$/opis/environment.md" />
|
<option value="$PROJECT_DIR$/opis/environment.md" />
|
||||||
<option value="$PROJECT_DIR$/LechT.md" />
|
<option value="$PROJECT_DIR$/LechT.md" />
|
||||||
<option value="$PROJECT_DIR$/genetyczne.py" />
|
|
||||||
<option value="$PROJECT_DIR$/funkcje.py" />
|
<option value="$PROJECT_DIR$/funkcje.py" />
|
||||||
<option value="$PROJECT_DIR$/program.py" />
|
<option value="$PROJECT_DIR$/program.py" />
|
||||||
|
<option value="$PROJECT_DIR$/genetyczne.py" />
|
||||||
<option value="$PROJECT_DIR$/main.py" />
|
<option value="$PROJECT_DIR$/main.py" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
@ -414,6 +417,13 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager>
|
<breakpoint-manager>
|
||||||
|
<breakpoints>
|
||||||
|
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||||
|
<url>file://$PROJECT_DIR$/genetyczne.py</url>
|
||||||
|
<line>26</line>
|
||||||
|
<option name="timeStamp" value="10" />
|
||||||
|
</line-breakpoint>
|
||||||
|
</breakpoints>
|
||||||
<default-breakpoints>
|
<default-breakpoints>
|
||||||
<breakpoint type="python-exception">
|
<breakpoint type="python-exception">
|
||||||
<properties notifyOnTerminate="true" exception="BaseException">
|
<properties notifyOnTerminate="true" exception="BaseException">
|
||||||
@ -605,16 +615,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/AStar.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="741">
|
|
||||||
<caret line="81" column="31" selection-start-line="81" selection-start-column="31" selection-end-line="81" selection-end-column="31" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#12#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/Data.py">
|
<entry file="file://$PROJECT_DIR$/Data.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="289">
|
<state relative-caret-position="289">
|
||||||
@ -635,10 +635,30 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/AStar.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="741">
|
||||||
|
<caret line="81" column="31" selection-start-line="81" selection-start-column="31" selection-end-line="81" selection-end-column="31" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#12#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/funkcje.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1547">
|
||||||
|
<caret line="91" column="9" selection-start-line="91" selection-start-column="9" selection-end-line="91" selection-end-column="9" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#43#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/program.py">
|
<entry file="file://$PROJECT_DIR$/program.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="469">
|
<state relative-caret-position="452">
|
||||||
<caret line="103" column="65" selection-start-line="103" selection-start-column="65" selection-end-line="103" selection-end-column="65" />
|
<caret line="96" column="52" lean-forward="true" selection-start-line="96" selection-start-column="52" selection-end-line="96" selection-end-column="52" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#13#0" expanded="true" />
|
<element signature="e#0#13#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -647,25 +667,15 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/genetyczne.py">
|
<entry file="file://$PROJECT_DIR$/genetyczne.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="367">
|
<state relative-caret-position="255">
|
||||||
<caret line="77" column="35" lean-forward="true" selection-start-line="77" selection-start-column="35" selection-end-line="77" selection-end-column="35" />
|
<caret line="16" column="7" selection-start-line="16" selection-start-column="7" selection-end-line="16" selection-end-column="7" />
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/funkcje.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="326">
|
|
||||||
<caret line="180" column="13" lean-forward="true" selection-start-line="180" selection-start-column="13" selection-end-line="180" selection-end-column="13" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#43#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/main.py">
|
<entry file="file://$PROJECT_DIR$/main.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="98">
|
<state relative-caret-position="625">
|
||||||
<caret line="6" column="4" lean-forward="true" selection-start-line="6" selection-start-column="4" selection-end-line="6" selection-end-column="4" />
|
<caret line="46" column="11" selection-start-line="46" selection-start-column="11" selection-end-line="46" selection-end-column="11" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#21#0" expanded="true" />
|
<element signature="e#0#21#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -89,7 +89,7 @@ def rysujWykres(data, x, yStart, yEnd):
|
|||||||
y = data.doWykresu[i]
|
y = data.doWykresu[i]
|
||||||
x = i
|
x = i
|
||||||
plt.scatter(x, y)
|
plt.scatter(x, y)
|
||||||
plt.pause(0.0001)
|
#plt.pause(0.0001)
|
||||||
|
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
|
@ -8,18 +8,25 @@ def start(data, wheel, dane):
|
|||||||
fragment = float(dane[1])
|
fragment = float(dane[1])
|
||||||
mutacja = float(dane[2])
|
mutacja = float(dane[2])
|
||||||
unbox = int(dane[3])
|
unbox = int(dane[3])
|
||||||
|
"""
|
||||||
|
ileGeneracji = 1000
|
||||||
|
ileWPopulacji = 16
|
||||||
|
fragment = 0.5
|
||||||
|
mutacja = 0.05
|
||||||
|
unbox = 3
|
||||||
|
"""
|
||||||
data.kordyWozka = (wheel.ns, wheel.we)
|
data.kordyWozka = (wheel.ns, wheel.we)
|
||||||
data.jakLiczycKoszt = unbox
|
data.jakLiczycKoszt = unbox
|
||||||
|
|
||||||
randomPopulation = genRandomPopulation(data, ileWPopulacji)
|
randomPopulation = genRandomPopulation(data, ileWPopulacji)
|
||||||
for i in range(ileGeneracji):
|
for i in range(ileGeneracji):
|
||||||
if i == 0:
|
if i == 0:
|
||||||
best2 = dwieNajlepsze(randomPopulation, data)
|
populacjaFitness = fitnessDlaPopulacji(randomPopulation, data)
|
||||||
else:
|
else:
|
||||||
x = genPopulacje(data,best2[0], best2[1], ileWPopulacji, fragment, mutacja)
|
#chrom2 = podajDwaChromosomy(populacjaFitness[0], populacjaFitness[1])
|
||||||
best2 = dwieNajlepsze(x, data)
|
x = genPopulacje(data,populacjaFitness[0], populacjaFitness[1], ileWPopulacji, fragment, mutacja)
|
||||||
del x
|
populacjaFitness = fitnessDlaPopulacji(x, data)
|
||||||
|
#del x
|
||||||
|
|
||||||
data.histZmian.append(data.best[1])
|
data.histZmian.append(data.best[1])
|
||||||
|
|
||||||
@ -61,6 +68,21 @@ def genRandomPopulation(data, ileWPopulacji):
|
|||||||
populacja.append(genRandomChromosome(data))
|
populacja.append(genRandomChromosome(data))
|
||||||
return populacja
|
return populacja
|
||||||
|
|
||||||
|
def podajDwaChromosomy(populacja, chromFitness):
|
||||||
|
|
||||||
|
bestValue = min(chromFitness)
|
||||||
|
bestChromIndex = chromFitness.index(bestValue)
|
||||||
|
chrom1 = populacja[bestChromIndex]
|
||||||
|
populacja.pop(bestChromIndex)
|
||||||
|
chromFitness.pop(bestChromIndex)
|
||||||
|
|
||||||
|
bestValue = min(chromFitness)
|
||||||
|
bestChromIndex = chromFitness.index(bestValue)
|
||||||
|
chrom2 = populacja[bestChromIndex]
|
||||||
|
populacja.pop(bestChromIndex)
|
||||||
|
chromFitness.pop(bestChromIndex)
|
||||||
|
|
||||||
|
return (chrom1, chrom2)
|
||||||
|
|
||||||
def fitness(chromosome, data):
|
def fitness(chromosome, data):
|
||||||
koszt = 0
|
koszt = 0
|
||||||
@ -87,7 +109,7 @@ def fitness(chromosome, data):
|
|||||||
return koszt
|
return koszt
|
||||||
|
|
||||||
|
|
||||||
def dwieNajlepsze(populacja, data):
|
def fitnessDlaPopulacji(populacja, data):
|
||||||
tmpPopulacja = populacja[:]
|
tmpPopulacja = populacja[:]
|
||||||
chromFitness = []
|
chromFitness = []
|
||||||
|
|
||||||
@ -102,7 +124,7 @@ def dwieNajlepsze(populacja, data):
|
|||||||
elif(data.best[1] > bestValue):
|
elif(data.best[1] > bestValue):
|
||||||
data.best = (pierwsza[:],bestValue)
|
data.best = (pierwsza[:],bestValue)
|
||||||
data.doWykresu.append(bestValue)
|
data.doWykresu.append(bestValue)
|
||||||
|
"""
|
||||||
tmpPopulacja.pop(bestChromIndex)
|
tmpPopulacja.pop(bestChromIndex)
|
||||||
chromFitness.pop(bestChromIndex)
|
chromFitness.pop(bestChromIndex)
|
||||||
|
|
||||||
@ -111,9 +133,9 @@ def dwieNajlepsze(populacja, data):
|
|||||||
druga = tmpPopulacja[bestChromIndex]
|
druga = tmpPopulacja[bestChromIndex]
|
||||||
tmpPopulacja.pop(bestChromIndex)
|
tmpPopulacja.pop(bestChromIndex)
|
||||||
chromFitness.pop(bestChromIndex)
|
chromFitness.pop(bestChromIndex)
|
||||||
|
"""
|
||||||
|
|
||||||
|
return (tmpPopulacja, chromFitness)
|
||||||
return (pierwsza, druga)
|
|
||||||
|
|
||||||
def crossover(data,pierwszy, drugi, fragmentLiczba, wspMutacji):
|
def crossover(data,pierwszy, drugi, fragmentLiczba, wspMutacji):
|
||||||
ileWChrom = len(pierwszy)
|
ileWChrom = len(pierwszy)
|
||||||
@ -158,15 +180,17 @@ def crossover(data,pierwszy, drugi, fragmentLiczba, wspMutacji):
|
|||||||
return nowyChrom
|
return nowyChrom
|
||||||
|
|
||||||
|
|
||||||
def genPopulacje(data,pierwszy, drugi, ileWPopulacji, fragmentLiczba, wspMutacji):
|
def genPopulacje(data,populacja, chromFitness, ileWPopulacji, fragmentLiczba, wspMutacji):
|
||||||
ileWChrom = len(pierwszy)
|
ileWChrom = len(populacja[0])
|
||||||
fragment = round(fragmentLiczba*ileWChrom)
|
fragment = round(fragmentLiczba*ileWChrom)
|
||||||
if(fragment == 1):
|
if(fragment == 1):
|
||||||
fragment +=1
|
fragment +=1
|
||||||
nowaPopulacja = []
|
nowaPopulacja = []
|
||||||
|
|
||||||
for i in range(ileWPopulacji):
|
for i,index in enumerate(range(ileWPopulacji)):
|
||||||
nowaPopulacja.append(crossover(data,pierwszy,drugi,fragment, wspMutacji))
|
if index % 2 == 0:
|
||||||
|
dwaChrom = podajDwaChromosomy(populacja,chromFitness)
|
||||||
|
nowaPopulacja.append(crossover(data,dwaChrom[0],dwaChrom[1],fragment, wspMutacji))
|
||||||
|
|
||||||
return nowaPopulacja
|
return nowaPopulacja
|
||||||
|
|
||||||
|
@ -89,9 +89,11 @@ class MainWindow:
|
|||||||
elif(event.type==pygame.KEYDOWN):
|
elif(event.type==pygame.KEYDOWN):
|
||||||
if event.key == pygame.K_g:
|
if event.key == pygame.K_g:
|
||||||
updateMap(self.data, self.map, self.mapForAStar, self.regals)
|
updateMap(self.data, self.map, self.mapForAStar, self.regals)
|
||||||
|
|
||||||
dane = okno()
|
dane = okno()
|
||||||
if(dane == 0):
|
if(dane == 0):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
start(self.data,self.wheel, dane)
|
start(self.data,self.wheel, dane)
|
||||||
for gen in self.data.best[0]:
|
for gen in self.data.best[0]:
|
||||||
if(gen.unboxWczesniejszegoGenu == None):
|
if(gen.unboxWczesniejszegoGenu == None):
|
||||||
@ -101,7 +103,7 @@ class MainWindow:
|
|||||||
|
|
||||||
zbierzBox(gen,self.data, self.moves, kordStartowy)
|
zbierzBox(gen,self.data, self.moves, kordStartowy)
|
||||||
elif(event.key== pygame.K_r):
|
elif(event.key== pygame.K_r):
|
||||||
self.map = randomBox(self.map, self.regals, 5)
|
self.map = randomBox(self.map, self.regals, 20)
|
||||||
updateMap(self.data, self.map, self.mapForAStar, self.regals)
|
updateMap(self.data, self.map, self.mapForAStar, self.regals)
|
||||||
elif len(self.moves)==0:
|
elif len(self.moves)==0:
|
||||||
self.wheel.move(event, self.map)
|
self.wheel.move(event, self.map)
|
||||||
|
Loading…
Reference in New Issue
Block a user