final version

This commit is contained in:
jedryb 2022-07-07 13:04:01 +02:00
parent a139a5376b
commit e2803dff2a
19 changed files with 181 additions and 260 deletions

View File

@ -5,7 +5,10 @@
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/venv" /> <excludeFolder url="file://$MODULE_DIR$/venv" />
</content> </content>
<orderEntry type="jdk" jdkName="Python 3.9 (Inteligentny_Traktor_Grupa_16)" jdkType="Python SDK" /> <orderEntry type="jdk" jdkName="Python 3.9 (ai-project)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
<component name="PyDocumentationSettings">
<option name="renderExternalDocumentation" value="true" />
</component>
</module> </module>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (Inteligentny_Traktor_Grupa_16)" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (ai-project)" project-jdk-type="Python SDK" />
</project> </project>

7
.idea/other.xml Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PySciProjectComponent">
<option name="PY_SCI_VIEW" value="true" />
<option name="PY_SCI_VIEW_SUGGESTED" value="true" />
</component>
</project>

BIN
assets/images/chest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
assets/images/the_end.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

View File

@ -1,178 +0,0 @@
stan_nawodnienia, rodzaj_gleby, stan_nawiezienia, stopien_ rozwoju, rodzaj_rosliny, rodzaj_nawozu, to_water
0.32, brunatne, 0.01, 0.45, kaktus, mineralny, 0
0.38, brunatne, 0.15, 0.25, pszenica, organiczny, 1
0.17, piaszczyste, 0.22, 0.13, brak, organiczny, 1
0.67, czarnoziemy, 0.64, 0.55, pszenica, sztuczny, 0
0.45, brunatne, 0.16, 0.16, brak, organiczny, 1
0.25, czarnoziemy, 0,16, 0.23, pszenica, organiczny, 1
0.10, brunatne, 0.02, 0.17, brak, mineralny, 1
0.25, brunatne, 0.39, 0.17, kaktus, organiczny, 0
0.92, brunatne, 0.68, 0.77, ziemniak, sztuczny, 0
0.70, piaszczyste, 0.72, 0.79, kaktus, sztuczny, 0
0.54, czarnoziemy, 0.95, 0.59, ziemniak, organiczny, 0
0.21, piaszczyste, 0.05, 0.03, brak, mineralny, 1
0.23, brunatne, 0.11, 0.26, ziemniak, organiczny, 1
0.61, czarnoziemy, 0.76, 0.76, ziemniak, sztuczny, 0
0.87, brunatne, 0.53, 0.85, pszenica, organiczny, 0
0.21, brunatne, 0.01, 0.26, kaktus, mineralny, 0
0.32, piaszczyste, 0.06, 0.40, ziemniak, mineralny, 1
0.76, czarnoziemy, 0.79, 0.67, kaktus, mineralny, 0
0.30, brunatne, 0.21, 0.10, brak, mineralny, 1
0.66, piaszczyste, 0.93, 0.95, kaktus, sztuczny, 0
0.71, brunatne, 0.52, 0.62, ziemniak, mineralny, 0
0.43, piaszczyste, 0.38, 0.35, pszenica, sztuczny, 1
0.66, brunatne, 0.72, 0.63, pszenica, organiczny, 0
0.21, piaszczyste, 0.47, 0.36, brak, sztuczny, 1
0.78, brunatne, 0.59, 0.68, pszenica, organiczny, 0
0.85, piaszczyste, 0.77, 0.64, pszenica, organiczny, 0
0.84, piaszczyste, 0.75, 0.86, ziemniak, sztuczny, 0
0.71, czarnoziemy, 0.72, 0.74, kaktus, mineralny, 0
0.75, piaszczyste, 0.77, 0.74, ziemniak, sztuczny, 0
0.76, piaszczyste, 0.75, 0.81, kaktus, mineralny, 0
0.72, brunatne, 0.74, 0.84, kaktus, sztuczny, 0
0.59, brunatne, 0.82, 0.88, pszenica, organiczny, 0
0.48, czarnoziemy, 0.15, 0.27, kaktus, organiczny, 0
0.04, piaszczyste, 0.12, 0.17, kaktus, organiczny, 0
0.23, brunatne, 0.12, 0.26, brak, organiczny, 1
0.02, piaszczyste, 0.20, 0.18, brak, organiczny, 1
0.02, piaszczyste, 0.35, 0.24, ziemniak, mineralny, 1
0.76, piaszczyste, 0.78, 0.85, ziemniak, mineralny, 0
0.72, czarnoziemy, 0.67, 0.76, brak, mineralny, 0
0.06, brunatne, 0.02, 0.31, ziemniak, mineralny, 1
0.96, czarnoziemy, 0.66, 0.80, ziemniak, sztuczny, 0
0.34, brunatne, 0.22, 0.15, kaktus, mineralny, 0
0.78, piaszczyste, 0.62, 0.68, pszenica, mineralny, 0
0.01, czarnoziemy, 0.22, 0.05, pszenica, sztuczny, 1
0.02, czarnoziemy, 0.31, 0.30, pszenica, sztuczny, 1
0.11, piaszczyste, 0,14, 0.14, pszenica, organiczny, 1
0.95, piaszczyste, 0.61, 0.94, brak, sztuczny, 0
0.78, brunatne, 0.86, 0.63, pszenica, organiczny, 0
0.03, brunatne, 0.27, 0.25, pszenica, sztuczny, 1
0.62, czarnoziemy, 0.75, 0.75, ziemniak, sztuczny, 0
0.24, piaszczyste, 0.02, 0.23, kaktus, organiczny, 0
0.16, czarnoziemy, 0.29, 0.27, kaktus, sztuczny, 0
0.24, piaszczyste, 0.14, 0.03, kaktus, mineralny, 0
0.82, czarnoziemy, 0.77, 0.86, ziemniak, mineralny, 0
0.25, brunatne, 0.18, 0.23, pszenica, sztuczny, 1
0.73, czarnoziemy, 0.94, 0.54, brak, organiczny, 0
0.63, piaszczyste, 0.84, 0.92, kaktus, sztuczny, 0
0.78, czarnoziemy, 0.75, 0.94, brak, sztuczny, 0
0.84, piaszczyste, 0.79, 0.80, pszenica, sztuczny, 0
0.78, czarnoziemy, 0.95, 0.63, pszenica, mineralny, 0
0.43, brunatne, 0.38, 0.02, pszenica, organiczny, 1
0.88, piaszczyste, 0.84, 0.78, ziemniak, sztuczny, 0
0.69, brunatne, 0.86, 0.55, ziemniak, organiczny, 0
0.77, piaszczyste, 0.78, 0.55, ziemniak, organiczny, 0
0.26, brunatne, 0.24, 0.12, ziemniak, mineralny, 1
0.75, czarnoziemy, 0.64, 0.73, brak, mineralny, 0
0.14, piaszczyste, 0.38, 0.44, kaktus, sztuczny, 0
0.84, czarnoziemy, 0.85, 0.67, kaktus, organiczny, 0
0.33, brunatne, 0.11, 0.12, brak, organiczny, 1
0.89, brunatne, 0.67, 0.88, kaktus, organiczny, 0
0.15, brunatne, 0.21, 0.23, pszenica, mineralny, 1
0.07, piaszczyste, 0.24, 0.07, brak, sztuczny, 1
0.29, czarnoziemy, 0.10, 0.14, ziemniak, sztuczny, 1
0.99, piaszczyste, 0.99, 0.75, kaktus, mineralny, 0
0.62, piaszczyste, 0.65, 0.75, brak, organiczny, 0
0.33, czarnoziemy, 0.23, 0.23, brak, sztuczny, 1
0.16, brunatne, 0.28, 0.38, brak, organiczny, 1
0.35, piaszczyste, 0.18, 0.13, kaktus, mineralny, 0
0.85, czarnoziemy, 0.64, 0.74, kaktus, sztuczny, 0
0.78, czarnoziemy, 0.59, 0.72, kaktus, organiczny, 0
0.24, czarnoziemy, 0.14, 0.18, brak, organiczny, 1
0.25, czarnoziemy, 0.13, 0.16, pszenica, sztuczny, 1
0.87, czarnoziemy, 0.87, 0.76, pszenica, mineralny, 0
0.28, brunatne, 0.44, 0.27, brak, mineralny, 1
0.47, brunatne, 0.09, 0.05, ziemniak, mineralny, 1
0.68, piaszczyste, 0.72, 0.67, brak, sztuczny, 0
0.23, czarnoziemy, 0.27, 0.25, pszenica, sztuczny, 1
0.05, piaszczyste, 0.11, 0.16, kaktus, organiczny, 0
0.12, piaszczyste, 0.21, 0.22, brak, mineralny, 1
0.86, brunatne, 0.55, 0.67, ziemniak, organiczny, 0
0.68, brunatne, 0.76, 0.87, pszenica, organiczny, 0
0.04, brunatne, 0.32, 0.26, kaktus, sztuczny, 0
0.73, piaszczyste, 0.73, 0.73, pszenica, sztuczny, 0
0.01, czarnoziemy, 0.42, 0.34, ziemniak, mineralny, 1
0.96, piaszczyste, 0.70, 0.71, ziemniak, organiczny, 0
0.74, piaszczyste, 0.66, 0.79, kaktus, mineralny, 0
0.75, brunatne, 0.66, 0.82, pszenica, mineralny, 0
0.70, brunatne, 0.69, 0.63, pszenica, organiczny, 0
0.66, brunatne, 0.85, 0.72, brak, sztuczny, 0
0.73, piaszczyste, 0.58, 0.95, ziemniak, mineralny, 0
0.36, brunatne, 0.14, 0.02, kaktus, mineralny, 0
0.61, piaszczyste, 0.70, 0.66, kaktus, mineralny, 0
0.83, piaszczyste, 0.68, 0.75, kaktus, sztuczny, 0
0.55, brunatne, 0.68, 0.79, ziemniak, sztuczny, 0
0.75, czarnoziemy, 0.64, 0.78, kaktus, organiczny, 0
0.99, brunatne, 0.57, 0.82, pszenica, organiczny, 0
0.88, czarnoziemy, 0.68, 0.65, kaktus, sztuczny, 0
0.78, czarnoziemy, 0.68, 0.71, kaktus, organiczny, 0
0.14, piaszczyste, 0.46, 0.17, brak, sztuczny, 1
0.06, czarnoziemy, 0.23, 0.25, kaktus, sztuczny, 0
0.56, brunatne, 0.88, 0.65, ziemniak, organiczny, 0
0.32, brunatne, 0.39, 0.23, pszenica, organiczny, 1
0.64, piaszczyste, 0.85, 0.99, kaktus, mineralny, 0
0.25, czarnoziemy, 0.26, 0.45, kaktus, organiczny, 0
0.78, piaszczyste, 0.85, 0.92, brak, mineralny, 0
0.14, brunatne, 0.09, 0.13, pszenica, organiczny, 1
0.82, brunatne, 0.81, 0.80, kaktus, mineralny, 0
0.65, piaszczyste, 0.58, 0.68, pszenica, mineralny, 0
0.32, piaszczyste, 0.25, 0.04, ziemniak, organiczny, 1
0.33, czarnoziemy, 0.12, 0.46, kaktus, sztuczny, 0
0.58, czarnoziemy, 0.76, 0.66, pszenica, mineralny, 0
0.01, czarnoziemy, 0.32, 0.33, ziemniak, mineralny, 1
0.65, brunatne, 0.88, 0.66, kaktus, organiczny, 0
0.12, czarnoziemy, 0.16, 0.13, brak, mineralny, 1
0.86, brunatne, 0.98, 0.88, brak, sztuczny, 0
0.23, brunatne, 0.15, 0.15, ziemniak, mineralny, 1
0.24, piaszczyste, 0.37, 0.34, kaktus, mineralny, 0
0.05, brunatne, 0.18, 0.39, ziemniak, mineralny, 1
0.23, czarnoziemy, 0.26, 0.35, ziemniak, organiczny, 1
0.55, czarnoziemy, 0.78, 0.89, brak, organiczny, 0
0.25, czarnoziemy, 0.13, 0.17, brak, mineralny, 1
0.62, czarnoziemy, 0.82, 0.68, brak, sztuczny, 0
0.85, czarnoziemy, 0.64, 0.56, brak, mineralny, 0
0.58, piaszczyste, 0.94, 0.74, brak, sztuczny, 0
0.17, piaszczyste, 0.34, 0.15, ziemniak, mineralny, 1
0.26, czarnoziemy, 0.21, 0.15, pszenica, mineralny, 1
0.22, czarnoziemy, 0.35, 0.45, pszenica, mineralny, 1
0.21, piaszczyste, 0.26, 0.26, pszenica, organiczny, 1
0.38, piaszczyste, 0.36, 0.14, pszenica, mineralny, 1
0.17, piaszczyste, 0.38, 0.27, pszenica, organiczny, 1
0.11, piaszczyste, 0.21, 0.23, pszenica, sztuczny, 1
0.48, czarnoziemy, 0.29, 0.28, kaktus, organiczny, 0
0.16, czarnoziemy, 0.21, 0.06, ziemniak, organiczny, 1
0.22, piaszczyste, 0.22, 0.19, ziemniak, sztuczny, 1
0.63, czarnoziemy, 0.87, 0.77, pszenica, mineralny, 0
0.69, piaszczyste, 0.85, 0.78, brak, mineralny, 0
0.55, brunatne, 0.50, 0.79, brak, organiczny, 0
0.14, piaszczyste, 0.14, 0.35, ziemniak, mineralny, 1
0.95, czarnoziemy, 0.82, 0.92, pszenica, organiczny, 0
0.68, piaszczyste, 0.57, 0.62, pszenica, mineralny, 0
0.60, brunatne, 0.66, 0.85, ziemniak, mineralny, 0
0.50, brunatne, 0.91, 0.83, ziemniak, organiczny, 0
0.36, piaszczyste, 0.08, 0.28, kaktus, mineralny, 0
0.33, brunatne, 0.26, 0.38, kaktus, sztuczny, 0
0.32, piaszczyste, 0.25, 0.24, ziemniak, sztuczny, 1
0.84, brunatne, 0.54, 0.50, brak, mineralny, 0
0.21, czarnoziemy, 0.49, 0.04, pszenica, organiczny, 1
0.62, piaszczyste, 0.74, 0.85, kaktus, sztuczny, 0
0.85, czarnoziemy, 0.67, 0.74, brak, organiczny, 0
0.74, piaszczyste, 0.69, 0.98, ziemniak, organiczny, 0
0.16, piaszczyste, 0.16, 0.36, pszenica, mineralny, 1
0.01, czarnoziemy, 0.12, 0.29, ziemniak, organiczny, 1
0.55, brunatne, 0.67, 0.74, brak, sztuczny, 0
0.75, czarnoziemy, 0.86, 0.90, ziemniak, sztuczny, 0
0.42, czarnoziemy, 0.25, 0.39, kaktus, sztuczny, 0
0.25, brunatne, 0.30, 0.24, ziemniak, organiczny, 1
0.12, czarnoziemy, 0,20, 0.09, ziemniak, mineralny, 1
0.75, brunatne, 0.75, 0.54, pszenica, organiczny, 0
0.65, czarnoziemy, 0.82, 0.76, pszenica, mineralny, 0
0.79, czarnoziemy, 0.66, 0.77, pszenica, sztuczny, 0
0.62, brunatne, 0.78, 0.84, brak, mineralny, 0
0.05, czarnoziemy, 0.19, 0.17, brak, organiczny, 1
0.22, czarnoziemy, 0.24, 0.25, kaktus, organiczny, 0
0.17, brunatne, 0.31, 0.35, ziemniak, mineralny, 1
0.91, brunatne, 0.58, 0.89, ziemniak, sztuczny, 0
0.07, brunatne, 0.27, 0.27, ziemniak, organiczny, 1
0.32, piaszczyste, 0.12, 0.18, brak, organiczny, 1
1 stan_nawodnienia, rodzaj_gleby, stan_nawiezienia, stopien_ rozwoju, rodzaj_rosliny, rodzaj_nawozu, to_water
2 0.32, brunatne, 0.01, 0.45, kaktus, mineralny, 0
3 0.38, brunatne, 0.15, 0.25, pszenica, organiczny, 1
4 0.17, piaszczyste, 0.22, 0.13, brak, organiczny, 1
5 0.67, czarnoziemy, 0.64, 0.55, pszenica, sztuczny, 0
6 0.45, brunatne, 0.16, 0.16, brak, organiczny, 1
7 0.25, czarnoziemy, 0,16, 0.23, pszenica, organiczny, 1
8 0.10, brunatne, 0.02, 0.17, brak, mineralny, 1
9 0.25, brunatne, 0.39, 0.17, kaktus, organiczny, 0
10 0.92, brunatne, 0.68, 0.77, ziemniak, sztuczny, 0
11 0.70, piaszczyste, 0.72, 0.79, kaktus, sztuczny, 0
12 0.54, czarnoziemy, 0.95, 0.59, ziemniak, organiczny, 0
13 0.21, piaszczyste, 0.05, 0.03, brak, mineralny, 1
14 0.23, brunatne, 0.11, 0.26, ziemniak, organiczny, 1
15 0.61, czarnoziemy, 0.76, 0.76, ziemniak, sztuczny, 0
16 0.87, brunatne, 0.53, 0.85, pszenica, organiczny, 0
17 0.21, brunatne, 0.01, 0.26, kaktus, mineralny, 0
18 0.32, piaszczyste, 0.06, 0.40, ziemniak, mineralny, 1
19 0.76, czarnoziemy, 0.79, 0.67, kaktus, mineralny, 0
20 0.30, brunatne, 0.21, 0.10, brak, mineralny, 1
21 0.66, piaszczyste, 0.93, 0.95, kaktus, sztuczny, 0
22 0.71, brunatne, 0.52, 0.62, ziemniak, mineralny, 0
23 0.43, piaszczyste, 0.38, 0.35, pszenica, sztuczny, 1
24 0.66, brunatne, 0.72, 0.63, pszenica, organiczny, 0
25 0.21, piaszczyste, 0.47, 0.36, brak, sztuczny, 1
26 0.78, brunatne, 0.59, 0.68, pszenica, organiczny, 0
27 0.85, piaszczyste, 0.77, 0.64, pszenica, organiczny, 0
28 0.84, piaszczyste, 0.75, 0.86, ziemniak, sztuczny, 0
29 0.71, czarnoziemy, 0.72, 0.74, kaktus, mineralny, 0
30 0.75, piaszczyste, 0.77, 0.74, ziemniak, sztuczny, 0
31 0.76, piaszczyste, 0.75, 0.81, kaktus, mineralny, 0
32 0.72, brunatne, 0.74, 0.84, kaktus, sztuczny, 0
33 0.59, brunatne, 0.82, 0.88, pszenica, organiczny, 0
34 0.48, czarnoziemy, 0.15, 0.27, kaktus, organiczny, 0
35 0.04, piaszczyste, 0.12, 0.17, kaktus, organiczny, 0
36 0.23, brunatne, 0.12, 0.26, brak, organiczny, 1
37 0.02, piaszczyste, 0.20, 0.18, brak, organiczny, 1
38 0.02, piaszczyste, 0.35, 0.24, ziemniak, mineralny, 1
39 0.76, piaszczyste, 0.78, 0.85, ziemniak, mineralny, 0
40 0.72, czarnoziemy, 0.67, 0.76, brak, mineralny, 0
41 0.06, brunatne, 0.02, 0.31, ziemniak, mineralny, 1
42 0.96, czarnoziemy, 0.66, 0.80, ziemniak, sztuczny, 0
43 0.34, brunatne, 0.22, 0.15, kaktus, mineralny, 0
44 0.78, piaszczyste, 0.62, 0.68, pszenica, mineralny, 0
45 0.01, czarnoziemy, 0.22, 0.05, pszenica, sztuczny, 1
46 0.02, czarnoziemy, 0.31, 0.30, pszenica, sztuczny, 1
47 0.11, piaszczyste, 0,14, 0.14, pszenica, organiczny, 1
48 0.95, piaszczyste, 0.61, 0.94, brak, sztuczny, 0
49 0.78, brunatne, 0.86, 0.63, pszenica, organiczny, 0
50 0.03, brunatne, 0.27, 0.25, pszenica, sztuczny, 1
51 0.62, czarnoziemy, 0.75, 0.75, ziemniak, sztuczny, 0
52 0.24, piaszczyste, 0.02, 0.23, kaktus, organiczny, 0
53 0.16, czarnoziemy, 0.29, 0.27, kaktus, sztuczny, 0
54 0.24, piaszczyste, 0.14, 0.03, kaktus, mineralny, 0
55 0.82, czarnoziemy, 0.77, 0.86, ziemniak, mineralny, 0
56 0.25, brunatne, 0.18, 0.23, pszenica, sztuczny, 1
57 0.73, czarnoziemy, 0.94, 0.54, brak, organiczny, 0
58 0.63, piaszczyste, 0.84, 0.92, kaktus, sztuczny, 0
59 0.78, czarnoziemy, 0.75, 0.94, brak, sztuczny, 0
60 0.84, piaszczyste, 0.79, 0.80, pszenica, sztuczny, 0
61 0.78, czarnoziemy, 0.95, 0.63, pszenica, mineralny, 0
62 0.43, brunatne, 0.38, 0.02, pszenica, organiczny, 1
63 0.88, piaszczyste, 0.84, 0.78, ziemniak, sztuczny, 0
64 0.69, brunatne, 0.86, 0.55, ziemniak, organiczny, 0
65 0.77, piaszczyste, 0.78, 0.55, ziemniak, organiczny, 0
66 0.26, brunatne, 0.24, 0.12, ziemniak, mineralny, 1
67 0.75, czarnoziemy, 0.64, 0.73, brak, mineralny, 0
68 0.14, piaszczyste, 0.38, 0.44, kaktus, sztuczny, 0
69 0.84, czarnoziemy, 0.85, 0.67, kaktus, organiczny, 0
70 0.33, brunatne, 0.11, 0.12, brak, organiczny, 1
71 0.89, brunatne, 0.67, 0.88, kaktus, organiczny, 0
72 0.15, brunatne, 0.21, 0.23, pszenica, mineralny, 1
73 0.07, piaszczyste, 0.24, 0.07, brak, sztuczny, 1
74 0.29, czarnoziemy, 0.10, 0.14, ziemniak, sztuczny, 1
75 0.99, piaszczyste, 0.99, 0.75, kaktus, mineralny, 0
76 0.62, piaszczyste, 0.65, 0.75, brak, organiczny, 0
77 0.33, czarnoziemy, 0.23, 0.23, brak, sztuczny, 1
78 0.16, brunatne, 0.28, 0.38, brak, organiczny, 1
79 0.35, piaszczyste, 0.18, 0.13, kaktus, mineralny, 0
80 0.85, czarnoziemy, 0.64, 0.74, kaktus, sztuczny, 0
81 0.78, czarnoziemy, 0.59, 0.72, kaktus, organiczny, 0
82 0.24, czarnoziemy, 0.14, 0.18, brak, organiczny, 1
83 0.25, czarnoziemy, 0.13, 0.16, pszenica, sztuczny, 1
84 0.87, czarnoziemy, 0.87, 0.76, pszenica, mineralny, 0
85 0.28, brunatne, 0.44, 0.27, brak, mineralny, 1
86 0.47, brunatne, 0.09, 0.05, ziemniak, mineralny, 1
87 0.68, piaszczyste, 0.72, 0.67, brak, sztuczny, 0
88 0.23, czarnoziemy, 0.27, 0.25, pszenica, sztuczny, 1
89 0.05, piaszczyste, 0.11, 0.16, kaktus, organiczny, 0
90 0.12, piaszczyste, 0.21, 0.22, brak, mineralny, 1
91 0.86, brunatne, 0.55, 0.67, ziemniak, organiczny, 0
92 0.68, brunatne, 0.76, 0.87, pszenica, organiczny, 0
93 0.04, brunatne, 0.32, 0.26, kaktus, sztuczny, 0
94 0.73, piaszczyste, 0.73, 0.73, pszenica, sztuczny, 0
95 0.01, czarnoziemy, 0.42, 0.34, ziemniak, mineralny, 1
96 0.96, piaszczyste, 0.70, 0.71, ziemniak, organiczny, 0
97 0.74, piaszczyste, 0.66, 0.79, kaktus, mineralny, 0
98 0.75, brunatne, 0.66, 0.82, pszenica, mineralny, 0
99 0.70, brunatne, 0.69, 0.63, pszenica, organiczny, 0
100 0.66, brunatne, 0.85, 0.72, brak, sztuczny, 0
101 0.73, piaszczyste, 0.58, 0.95, ziemniak, mineralny, 0
102 0.36, brunatne, 0.14, 0.02, kaktus, mineralny, 0
103 0.61, piaszczyste, 0.70, 0.66, kaktus, mineralny, 0
104 0.83, piaszczyste, 0.68, 0.75, kaktus, sztuczny, 0
105 0.55, brunatne, 0.68, 0.79, ziemniak, sztuczny, 0
106 0.75, czarnoziemy, 0.64, 0.78, kaktus, organiczny, 0
107 0.99, brunatne, 0.57, 0.82, pszenica, organiczny, 0
108 0.88, czarnoziemy, 0.68, 0.65, kaktus, sztuczny, 0
109 0.78, czarnoziemy, 0.68, 0.71, kaktus, organiczny, 0
110 0.14, piaszczyste, 0.46, 0.17, brak, sztuczny, 1
111 0.06, czarnoziemy, 0.23, 0.25, kaktus, sztuczny, 0
112 0.56, brunatne, 0.88, 0.65, ziemniak, organiczny, 0
113 0.32, brunatne, 0.39, 0.23, pszenica, organiczny, 1
114 0.64, piaszczyste, 0.85, 0.99, kaktus, mineralny, 0
115 0.25, czarnoziemy, 0.26, 0.45, kaktus, organiczny, 0
116 0.78, piaszczyste, 0.85, 0.92, brak, mineralny, 0
117 0.14, brunatne, 0.09, 0.13, pszenica, organiczny, 1
118 0.82, brunatne, 0.81, 0.80, kaktus, mineralny, 0
119 0.65, piaszczyste, 0.58, 0.68, pszenica, mineralny, 0
120 0.32, piaszczyste, 0.25, 0.04, ziemniak, organiczny, 1
121 0.33, czarnoziemy, 0.12, 0.46, kaktus, sztuczny, 0
122 0.58, czarnoziemy, 0.76, 0.66, pszenica, mineralny, 0
123 0.01, czarnoziemy, 0.32, 0.33, ziemniak, mineralny, 1
124 0.65, brunatne, 0.88, 0.66, kaktus, organiczny, 0
125 0.12, czarnoziemy, 0.16, 0.13, brak, mineralny, 1
126 0.86, brunatne, 0.98, 0.88, brak, sztuczny, 0
127 0.23, brunatne, 0.15, 0.15, ziemniak, mineralny, 1
128 0.24, piaszczyste, 0.37, 0.34, kaktus, mineralny, 0
129 0.05, brunatne, 0.18, 0.39, ziemniak, mineralny, 1
130 0.23, czarnoziemy, 0.26, 0.35, ziemniak, organiczny, 1
131 0.55, czarnoziemy, 0.78, 0.89, brak, organiczny, 0
132 0.25, czarnoziemy, 0.13, 0.17, brak, mineralny, 1
133 0.62, czarnoziemy, 0.82, 0.68, brak, sztuczny, 0
134 0.85, czarnoziemy, 0.64, 0.56, brak, mineralny, 0
135 0.58, piaszczyste, 0.94, 0.74, brak, sztuczny, 0
136 0.17, piaszczyste, 0.34, 0.15, ziemniak, mineralny, 1
137 0.26, czarnoziemy, 0.21, 0.15, pszenica, mineralny, 1
138 0.22, czarnoziemy, 0.35, 0.45, pszenica, mineralny, 1
139 0.21, piaszczyste, 0.26, 0.26, pszenica, organiczny, 1
140 0.38, piaszczyste, 0.36, 0.14, pszenica, mineralny, 1
141 0.17, piaszczyste, 0.38, 0.27, pszenica, organiczny, 1
142 0.11, piaszczyste, 0.21, 0.23, pszenica, sztuczny, 1
143 0.48, czarnoziemy, 0.29, 0.28, kaktus, organiczny, 0
144 0.16, czarnoziemy, 0.21, 0.06, ziemniak, organiczny, 1
145 0.22, piaszczyste, 0.22, 0.19, ziemniak, sztuczny, 1
146 0.63, czarnoziemy, 0.87, 0.77, pszenica, mineralny, 0
147 0.69, piaszczyste, 0.85, 0.78, brak, mineralny, 0
148 0.55, brunatne, 0.50, 0.79, brak, organiczny, 0
149 0.14, piaszczyste, 0.14, 0.35, ziemniak, mineralny, 1
150 0.95, czarnoziemy, 0.82, 0.92, pszenica, organiczny, 0
151 0.68, piaszczyste, 0.57, 0.62, pszenica, mineralny, 0
152 0.60, brunatne, 0.66, 0.85, ziemniak, mineralny, 0
153 0.50, brunatne, 0.91, 0.83, ziemniak, organiczny, 0
154 0.36, piaszczyste, 0.08, 0.28, kaktus, mineralny, 0
155 0.33, brunatne, 0.26, 0.38, kaktus, sztuczny, 0
156 0.32, piaszczyste, 0.25, 0.24, ziemniak, sztuczny, 1
157 0.84, brunatne, 0.54, 0.50, brak, mineralny, 0
158 0.21, czarnoziemy, 0.49, 0.04, pszenica, organiczny, 1
159 0.62, piaszczyste, 0.74, 0.85, kaktus, sztuczny, 0
160 0.85, czarnoziemy, 0.67, 0.74, brak, organiczny, 0
161 0.74, piaszczyste, 0.69, 0.98, ziemniak, organiczny, 0
162 0.16, piaszczyste, 0.16, 0.36, pszenica, mineralny, 1
163 0.01, czarnoziemy, 0.12, 0.29, ziemniak, organiczny, 1
164 0.55, brunatne, 0.67, 0.74, brak, sztuczny, 0
165 0.75, czarnoziemy, 0.86, 0.90, ziemniak, sztuczny, 0
166 0.42, czarnoziemy, 0.25, 0.39, kaktus, sztuczny, 0
167 0.25, brunatne, 0.30, 0.24, ziemniak, organiczny, 1
168 0.12, czarnoziemy, 0,20, 0.09, ziemniak, mineralny, 1
169 0.75, brunatne, 0.75, 0.54, pszenica, organiczny, 0
170 0.65, czarnoziemy, 0.82, 0.76, pszenica, mineralny, 0
171 0.79, czarnoziemy, 0.66, 0.77, pszenica, sztuczny, 0
172 0.62, brunatne, 0.78, 0.84, brak, mineralny, 0
173 0.05, czarnoziemy, 0.19, 0.17, brak, organiczny, 1
174 0.22, czarnoziemy, 0.24, 0.25, kaktus, organiczny, 0
175 0.17, brunatne, 0.31, 0.35, ziemniak, mineralny, 1
176 0.91, brunatne, 0.58, 0.89, ziemniak, sztuczny, 0
177 0.07, brunatne, 0.27, 0.27, ziemniak, organiczny, 1
178 0.32, piaszczyste, 0.12, 0.18, brak, organiczny, 1

89
main.py
View File

@ -6,10 +6,11 @@ from src.utils.cnn_model import CnnModel
from src.world import World from src.world import World
from src.tractor import Tractor from src.tractor import Tractor
from src.settings import Settings from src.settings import Settings
from src.utils.bfs import BFSSearcher
from src.utils.astar import a_star_search
from src.constants import Constants as C from src.constants import Constants as C
from utils.display_info import display_tile_info from utils.display_info import display_tile_info
from src.utils.water_all_plants import WaterAllPlants
from src.utils.collect_crops import CollectCrops
from src.utils.end_crops import EndCrops
def main(): def main():
@ -22,19 +23,25 @@ def main():
cnn_model = CnnModel(world) cnn_model = CnnModel(world)
cnn_model.init_model() cnn_model.init_model()
tractor = Tractor("Spalinowy", "Nawóz 1", settings, 0 * settings.tile_size, 0 * settings.tile_size, C.RIGHT) tractor = Tractor("Spalinowy", "Nawóz 1", settings, 0 * settings.tile_size, 0 * settings.tile_size, C.RIGHT)
plants_to_water = [tile for tile in world.tiles if tile.to_water == 1]
clock = pygame.time.Clock() # FPS purpose
pygame.mixer.init()
pygame.mixer.music.load('assets/sounds/Volume Alpha 18. Sweden.wav')
pygame.mixer.music.play(-1)
clock = pygame.time.Clock() # FPS purpose
screen = pygame.display.set_mode((settings.screen_width, settings.screen_height)) screen = pygame.display.set_mode((settings.screen_width, settings.screen_height))
pygame.display.set_caption('TRAKTOHOLIK') pygame.display.set_caption('TRAKTOHOLIK')
screen.blit(pygame.image.load('assets/images/display_info/img_frame.jpg'), (700, 0)) screen.blit(pygame.image.load('assets/images/display_info/img_frame.jpg'), (700, 0))
start_cords = tractor.curr_position plants_to_water = [tile for tile in world.tiles if tile.to_water == 1]
goals = [plant.position for plant in plants_to_water] plants_wheat = [tile for tile in world.tiles if tile.rodzaj_rosliny == 'pszenica']
cords_idx = tractor.find_nearest_cords(tractor.curr_position, goals) plants_potato = [tile for tile in world.tiles if tile.rodzaj_rosliny == 'ziemniak']
end_cords = goals[cords_idx]
start_dir = tractor.curr_direction water_all_plants = WaterAllPlants(tractor, world, plants_to_water)
path = a_star_search(start_cords, end_cords, start_dir, world) collect_wheat = CollectCrops(tractor, plants_wheat, (0, 0))
end_wheat = EndCrops(tractor, (0, 0), (0, 0))
collect_potatoes = CollectCrops(tractor, plants_potato, (0, 0))
end_potatoes = EndCrops(tractor, (0, 0), (9, 0))
run = True run = True
while run: while run:
@ -50,17 +57,35 @@ def main():
if event.button == 1: if event.button == 1:
display_tile_info(world, screen) display_tile_info(world, screen)
if path: water_all_plants.update(tractor, world)
action = path.pop(0)
tractor.update(action) if not C.COLLECT_WHEAT and tractor.curr_position == water_all_plants.last_cords:
else: collect_wheat = CollectCrops(tractor, plants_wheat, water_all_plants.last_cords)
tractor.water_plant(world, end_cords) C.COLLECT_WHEAT = 1
if len(goals) > 1: if C.COLLECT_WHEAT:
start_cord = goals.pop(cords_idx) collect_wheat.update(tractor, world)
cords_idx = tractor.find_nearest_cords(tractor.curr_position, goals)
end_cords = goals[cords_idx] if not C.END_WHEAT and tractor.curr_position == collect_wheat.last_cords:
start_dir = tractor.curr_direction end_wheat = EndCrops(tractor, collect_wheat.last_cords, (0, 0))
path = a_star_search(start_cord, end_cords, start_dir, world) C.END_WHEAT = 1
if C.END_WHEAT:
end_wheat.update(tractor)
if not C.COLLECT_POTATOES and tractor.curr_position == end_wheat.last_cords:
collect_potatoes = CollectCrops(tractor, plants_potato, end_wheat.last_cords)
C.COLLECT_POTATOES = 1
if C.COLLECT_POTATOES:
collect_potatoes.update(tractor, world)
if not C.END_POTATOES and tractor.curr_position == collect_potatoes.last_cords:
end_potatoes = EndCrops(tractor, collect_potatoes.last_cords, (9, 0))
C.END_POTATOES = 1
if C.END_POTATOES:
end_potatoes.update(tractor)
# if C.END_POTATOES:
# if tractor.curr_position == end_potatoes.last_cords:
# screen.blit(pygame.image.load('assets/images/the_end.png'), (190, 310))
pygame.time.wait(settings.freeze_time) pygame.time.wait(settings.freeze_time)
pygame.display.update() pygame.display.update()
@ -69,25 +94,3 @@ def main():
if __name__ == '__main__': if __name__ == '__main__':
main() main()
# # inicjalizacja array z zerami
# rows = 10
# cols = 10
# field = np.zeros((rows, cols), dtype=int)
#
# # tworzenie ścian w array
# for i in range(0, 9):
# field[1, i] = 1
#
# field[2, 8] = 1
# field[3, 8] = 1
# field[3, 7] = 1
# field[3, 6] = 1
#
# print(field)
#
# start = (0, 0)
# goals = [(2, 7)]
# while goals:
# goal = goals.pop(0)
# path = a_star(field, start, goal)
# print(path)

View File

@ -30,3 +30,9 @@ class Constants:
# Genetic algorithm points average # Genetic algorithm points average
POINTS_AVERAGE = 6.33 POINTS_AVERAGE = 6.33
# MOVING FLAGS
COLLECT_WHEAT = 0
END_WHEAT = 0
COLLECT_POTATOES = 0
END_POTATOES = 0

View File

@ -4,7 +4,7 @@ class Settings:
def __init__(self): def __init__(self):
# Game settings # Game settings
self.fps = 60 self.fps = 60
self.freeze_time = 250 self.freeze_time = 100
# Screen settings # Screen settings
self.screen_width = 910 self.screen_width = 910

View File

@ -71,28 +71,8 @@ class Tractor(Sprite):
pygame.time.wait(self.settings.freeze_time) # bez tego sie kreci jak hot-wheels pygame.time.wait(self.settings.freeze_time) # bez tego sie kreci jak hot-wheels
def turn_around(self): def turn_around(self):
if self.curr_direction == C.UP: self.turn_right()
self.curr_direction = C.DOWN self.turn_right()
self.image = pygame.transform.scale(
pygame.image.load('assets/images/tractor/tractor-transparent-down.png'),
(self.settings.tile_size, self.settings.tile_size))
elif self.curr_direction == C.LEFT:
self.curr_direction = C.RIGHT
self.image = pygame.transform.scale(
pygame.image.load('assets/images/tractor/tractor-transparent-right.png'),
(self.settings.tile_size, self.settings.tile_size))
elif self.curr_direction == C.DOWN:
self.curr_direction = C.UP
self.image = pygame.transform.scale(
pygame.image.load('assets/images/tractor/tractor-transparent-up.png'),
(self.settings.tile_size, self.settings.tile_size))
elif self.curr_direction == C.RIGHT:
self.curr_direction = C.LEFT
self.image = pygame.transform.scale(
pygame.image.load('assets/images/tractor/tractor-transparent-left.png'),
(self.settings.tile_size, self.settings.tile_size))
pygame.time.wait(self.settings.freeze_time) # bez tego sie kreci jak hot-wheels
def move(self): def move(self):
self.rect.x += self.curr_direction[0] * self.settings.tractor_speed self.rect.x += self.curr_direction[0] * self.settings.tractor_speed
@ -111,6 +91,7 @@ class Tractor(Sprite):
def water_plant(self, world, position): def water_plant(self, world, position):
plant = world.get_tile(position[0], position[1]) plant = world.get_tile(position[0], position[1])
plant.to_water = 0
if plant.rodzaj_rosliny == 'brak': if plant.rodzaj_rosliny == 'brak':
plant.image = pygame.transform.scale(world.farmland_empty, plant.image = pygame.transform.scale(world.farmland_empty,
@ -125,8 +106,13 @@ class Tractor(Sprite):
plant.image = pygame.transform.scale(world.farmland_potato, plant.image = pygame.transform.scale(world.farmland_potato,
(self.settings.tile_size, self.settings.tile_size)) (self.settings.tile_size, self.settings.tile_size))
def collect_crop(self, world, position):
plant = world.get_tile(position[0], position[1])
plant.image = pygame.transform.scale(world.farmland_empty,
(self.settings.tile_size, self.settings.tile_size))
def find_nearest_cords(self, curr_cords, cords_lst): def find_nearest_cords(self, curr_cords, cords_lst):
# source https://stackoverflow.com/questions/39107896/efficiently-finding-the-closest-coordinate-pair-from-a-set-in-python # https://stackoverflow.com/questions/39107896/efficiently-finding-the-closest-coordinate-pair-from-a-set-in-python
tree = spatial.KDTree(cords_lst) tree = spatial.KDTree(cords_lst)
return tree.query(curr_cords)[1] return tree.query(curr_cords)[1]
@ -156,9 +142,13 @@ class Tractor(Sprite):
# self.rect.y += self.curr_direction[1] * self.settings.tile_size # jak wejdzie na kolizje to cofamy ruch # self.rect.y += self.curr_direction[1] * self.settings.tile_size # jak wejdzie na kolizje to cofamy ruch
# w przyszlosci mozna zmienic # w przyszlosci mozna zmienic
def update(self, action): def update_position(self):
self.curr_position = (round(self.rect.x / self.settings.tile_size), self.curr_position = (round(self.rect.x / self.settings.tile_size),
self.settings.world_size - round(self.rect.y / self.settings.tile_size) - 1) self.settings.world_size - round(self.rect.y / self.settings.tile_size) - 1)
def update(self, action):
self.update_position()
if action == C.ROTATE_RIGHT and self.rect.x: if action == C.ROTATE_RIGHT and self.rect.x:
self.turn_right() self.turn_right()
elif action == C.ROTATE_LEFT: elif action == C.ROTATE_LEFT:

View File

@ -0,0 +1,30 @@
from src.tractor import Tractor
from src.utils.bfs import BFSSearcher
class CollectCrops:
def __init__(self, tractor: Tractor, plants, start_cords):
self.start_cords = start_cords
self.goals = [plant.position for plant in plants]
self.cords_idx = tractor.find_nearest_cords(tractor.curr_position, self.goals)
self.end_cords = self.goals[self.cords_idx]
self.start_dir = tractor.curr_direction
self.path = BFSSearcher().search(self.start_cords, self.end_cords, self.start_dir) # a_star_search(self.start_cords, self.end_cords, self.start_dir, world)
self.last_cords = None
def update(self, tractor: Tractor, world):
if self.path:
action = self.path.pop(0)
tractor.update(action)
else:
tractor.collect_crop(world, self.end_cords)
if len(self.goals) > 1:
self.start_cords = self.goals.pop(self.cords_idx)
self.cords_idx = tractor.find_nearest_cords(tractor.curr_position, self.goals)
self.end_cords = self.goals[self.cords_idx]
self.start_dir = tractor.curr_direction
self.path = BFSSearcher().search(self.start_cords, self.end_cords, self.start_dir) # a_star_search(self.start_cords, self.end_cords, self.start_dir, world)
elif len(self.goals) == 1:
self.last_cords = self.goals.pop()
tractor.update_position()

View File

@ -526,17 +526,6 @@
" print(\"Actual label: \" + str(np.argmax(label, axis=1)))" " print(\"Actual label: \" + str(np.argmax(label, axis=1)))"
] ]
}, },
{
"cell_type": "code",
"execution_count": null,
"id": "c7e6f668",
"metadata": {},
"outputs": [],
"source": [
"filename = '../../assets/cnn_model/xgboost_model.pkl'\n",
"pickle.dump(xgb, open(filename, 'wb'))"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 14, "execution_count": 14,
@ -604,4 +593,4 @@
}, },
"nbformat": 4, "nbformat": 4,
"nbformat_minor": 5 "nbformat_minor": 5
} }

30
src/utils/end_crops.py Normal file
View File

@ -0,0 +1,30 @@
from src.tractor import Tractor
from src.utils.bfs import BFSSearcher
class EndCrops:
def __init__(self, tractor: Tractor, start_cords, goal):
self.start_cords = start_cords
self.goals = [goal]
self.cords_idx = tractor.find_nearest_cords(tractor.curr_position, self.goals)
self.end_cords = self.goals[self.cords_idx]
self.start_dir = tractor.curr_direction
self.path = BFSSearcher().search(self.start_cords, self.end_cords, self.start_dir) # a_star_search(self.start_cords, self.end_cords, self.start_dir, world)
self.last_cords = None
def update(self, tractor: Tractor):
if self.path:
action = self.path.pop(0)
tractor.update(action)
else:
# tractor.collect_crop(world, self.end_cords)
if len(self.goals) > 1:
self.start_cords = self.goals.pop(self.cords_idx)
self.cords_idx = tractor.find_nearest_cords(tractor.curr_position, self.goals)
self.end_cords = self.goals[self.cords_idx]
self.start_dir = tractor.curr_direction
self.path = BFSSearcher().search(self.start_cords, self.end_cords, self.start_dir) # a_star_search(self.start_cords, self.end_cords, self.start_dir, world)
elif len(self.goals) == 1:
self.last_cords = self.goals.pop()
tractor.update_position()

View File

@ -0,0 +1,30 @@
from src.utils.astar import a_star_search
from src.tractor import Tractor
class WaterAllPlants:
def __init__(self, tractor: Tractor, world, plants_to_water):
self.start_cords = tractor.curr_position
self.goals = [plant.position for plant in plants_to_water]
self.cords_idx = tractor.find_nearest_cords(tractor.curr_position, self.goals)
self.end_cords = self.goals[self.cords_idx]
self.start_dir = tractor.curr_direction
self.path = a_star_search(self.start_cords, self.end_cords, self.start_dir, world)
self.last_cords = None
def update(self, tractor: Tractor, world):
if self.path:
action = self.path.pop(0)
tractor.update(action)
else:
if self.goals:
tractor.water_plant(world, self.end_cords)
if len(self.goals) > 1:
self.start_cords = self.goals.pop(self.cords_idx)
self.cords_idx = tractor.find_nearest_cords(tractor.curr_position, self.goals)
self.end_cords = self.goals[self.cords_idx]
self.start_dir = tractor.curr_direction
self.path = a_star_search(self.start_cords, self.end_cords, self.start_dir, world)
elif len(self.goals) == 1:
self.last_cords = self.goals.pop()
tractor.update_position()

View File

@ -17,6 +17,7 @@ class XgbModel:
def parse_input(self): def parse_input(self):
self.y_test = self.df['to_water'] self.y_test = self.df['to_water']
self.df = self.df.sample(frac=1) # shuffle dataframe so as to randomize tiles
self.df = self.df.drop('to_water', axis=1) self.df = self.df.drop('to_water', axis=1)
self.X_test = pd.get_dummies(self.df) self.X_test = pd.get_dummies(self.df)

View File

@ -21,6 +21,8 @@ class World:
[0, 1, 1, 1, 0, 0, 1, 1, 1, 0], [0, 1, 1, 1, 0, 0, 1, 1, 1, 0],
[0, 1, 1, 1, 0, 0, 1, 1, 1, 0], [0, 1, 1, 1, 0, 0, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
self.wheat_chest = pygame.image.load('assets/images/chest_wheat.png')
self.potatoes_chest = pygame.image.load('assets/images/chest_potato.png')
self.rock = pygame.image.load('assets/images/cobblestone.jpg') self.rock = pygame.image.load('assets/images/cobblestone.jpg')
self.dirt_empty = pygame.image.load('assets/images/dirt_empty.jpeg') self.dirt_empty = pygame.image.load('assets/images/dirt_empty.jpeg')
self.dirt_cactus = pygame.image.load('assets/images/dirt_cactus.jpg') self.dirt_cactus = pygame.image.load('assets/images/dirt_cactus.jpg')
@ -34,6 +36,14 @@ class World:
self.plants = GeneticAlgorithm().get_plants() self.plants = GeneticAlgorithm().get_plants()
self.create_tiles() self.create_tiles()
wheat_chest_tile = self.get_tile(0, 0)
wheat_chest_tile.image = pygame.transform.scale(self.wheat_chest, (settings.tile_size, settings.tile_size))
wheat_chest_tile.cnn_image = wheat_chest_tile.image
potato_chest_tile = self.get_tile(9, 0)
potato_chest_tile.image = pygame.transform.scale(self.potatoes_chest, (settings.tile_size, settings.tile_size))
potato_chest_tile.cnn_image = potato_chest_tile.image
def create_tiles(self): def create_tiles(self):
row_count = 0 row_count = 0
df_idx = 0 df_idx = 0