Compare commits

..

60 Commits

Author SHA1 Message Date
9b0017e911 Zaktualizuj 'environment.md' 2022-01-26 01:46:04 +01:00
0f0fda7ea1 Zaktualizuj 'route-planning.md' 2022-01-26 01:45:06 +01:00
f5860fd5ff Zaktualizuj 'final-evaluation.md' 2022-01-26 01:41:46 +01:00
e9723b798a Zaktualizuj 'RaportLauraPiotrowska.md' 2022-01-26 00:53:07 +01:00
f71fee9980 Zaktualizuj 'RaportSzymonParafiński.md' 2020-06-09 19:11:55 +00:00
eccc3b22f5 Prześlij pliki do 'images/13_05' 2020-06-09 19:10:26 +00:00
d3d24b390d Prześlij pliki do 'images/13_05' 2020-06-09 19:10:20 +00:00
273120323a Prześlij pliki do 'images/13_05' 2020-06-09 19:10:11 +00:00
0b497a0ffd Prześlij pliki do 'images/13_05' 2020-06-09 19:10:04 +00:00
1b77e170f2 Prześlij pliki do 'images/13_05' 2020-06-09 19:09:53 +00:00
7b52100b89 Zaktualizuj 'RaportSzymonParafiński.md' 2020-06-09 19:07:13 +00:00
c801cc9b26 Zaktualizuj 'RaportTomaszDzierzbicki.md' 2020-06-09 19:06:26 +00:00
b57f666197 Usuń 'algorytm_genetyczny.md' 2020-06-09 19:06:03 +00:00
a23cf34f6c Zaktualizuj 'RaportKarolPiotrowski.md' 2020-06-09 19:05:28 +00:00
d3ebf4b7a7 Prześlij pliki do 'images' 2020-06-09 19:04:10 +00:00
2384f973f1 Prześlij pliki do 'images' 2020-06-09 19:03:34 +00:00
11c1e105f5 Prześlij pliki do 'images' 2020-06-09 19:01:25 +00:00
ce8b08e577 Dodaj 'RaportSzymonParafiński.md' 2020-06-09 18:59:50 +00:00
ef4bc0a433 Dodaj 'RaportKarolPiotrowski.md' 2020-06-09 18:59:17 +00:00
a6162997d1 Dodaj 'RaportTomaszDzierzbicki.md' 2020-06-09 18:58:44 +00:00
e2a47723ba Zaktualizuj 'final-evaluation.md' 2020-06-09 18:21:30 +00:00
533941e823 Prześlij pliki do 'images/last_images' 2020-06-09 18:17:56 +00:00
1feaa4bc98 Zaktualizuj 'final-evaluation.md' 2020-06-09 18:15:03 +00:00
8c900dad64 Prześlij pliki do 'images/last_images' 2020-06-09 18:14:25 +00:00
6be799e401 Zaktualizuj 'final-evaluation.md' 2020-06-09 18:14:01 +00:00
d9318afc47 Zaktualizuj 'final-evaluation.md' 2020-06-09 18:13:21 +00:00
740f4279ad Prześlij pliki do 'images' 2020-06-09 18:12:55 +00:00
5997d00515 Zaktualizuj 'final-evaluation.md' 2020-06-09 18:01:03 +00:00
5f7e089494 Zaktualizuj 'final-evaluation.md' 2020-06-09 17:53:50 +00:00
493704882e Zaktualizuj 'final-evaluation.md' 2020-06-09 17:46:20 +00:00
1a3ec8f890 Zaktualizuj 'final-evaluation.md' 2020-06-09 17:46:07 +00:00
574c34785e Zaktualizuj 'final-evaluation.md' 2020-06-09 17:44:18 +00:00
59d275388b Prześlij pliki do 'images/last_images' 2020-06-09 17:42:59 +00:00
385a2b81ee Prześlij pliki do 'images/last_images' 2020-06-09 17:42:46 +00:00
4e4c81dac6 Prześlij pliki do 'images/last_images' 2020-06-09 17:35:48 +00:00
5d1f5387b4 Dodaj 'final-evaluation.md' 2020-06-09 17:33:03 +00:00
60f4bd437d ostateczna wersja 2020-06-09 17:13:10 +00:00
a9cf31e294 ostateczna wersja 2020-06-09 17:12:50 +00:00
bedbdbf1e2 ostateczna wersja 2020-06-09 17:12:24 +00:00
5978098747 Main_podVS
Drzewo - Jarek
Genetyczny
2020-06-08 21:41:38 +00:00
6f016b84a7 wersja pod VS 2020-06-08 21:19:05 +00:00
3eaa94999a Zaktualizuj 'backups/Main_drzewa1_algorytmGenetyczny.cpp' 2020-06-08 15:11:16 +00:00
88f3f1bd17 Zaktualizuj 'Main.cpp' 2020-06-08 15:09:13 +00:00
44345c162c Zaktualizuj 'backups/Main_drzewa1_algorytmGenetyczny.cpp' 2020-06-07 16:10:05 +00:00
6f0b782f0a Prześlij pliki do 'backups' 2020-06-07 16:08:58 +00:00
efdb69843d Prześlij pliki do '' 2020-06-07 13:24:23 +00:00
a1976880c9 Zaktualizuj 'Main.cpp' 2020-06-06 23:04:18 +00:00
d0efae4171 Prześlij pliki do '' 2020-06-06 21:27:31 +00:00
4675500a89 Prześlij pliki do '' 2020-06-06 20:21:12 +00:00
42af7cf229 Zaktualizuj 'backups/Main_drzewa1.cpp' 2020-06-06 20:20:36 +00:00
730b21e122 Prześlij pliki do 'backups' 2020-06-06 20:20:02 +00:00
5e2638f65a Usuń 'gmo.cpp' 2020-06-06 16:21:06 +00:00
30a7cf434c Prześlij pliki do '' 2020-06-06 16:07:06 +00:00
efe3723b57 Prześlij pliki do '' 2020-06-06 16:04:24 +00:00
75ae2eeeb2 Zaktualizuj 'backups/MainPure.cpp' 2020-06-06 15:51:52 +00:00
9b9046531e Prześlij pliki do 'backups' 2020-06-06 15:49:34 +00:00
7ad0c77062 Prześlij pliki do '' 2020-06-06 08:00:53 +00:00
ffb1c10a03 Prześlij pliki do '' 2020-05-26 22:05:43 +00:00
4856536a29 Prześlij pliki do '' 2020-05-26 21:34:44 +00:00
666ab0c3dd Merge branch 'algorytm_genetyczny_Karol_Piotrowski' of s444459/SI2020 into master 2020-05-24 11:59:10 +00:00
54 changed files with 7258 additions and 653 deletions

1311
Main.cpp

File diff suppressed because it is too large Load Diff

209
RaportJaroslawZbaski.md Normal file
View File

@ -0,0 +1,209 @@
##Jarosław Zbąski raport z podprojektu
---
#Wybrana metoda:
---
Do realizacji podprojektu wykorzystano drzewa decyzyjne wskazujące którą roślinę (jeśli w ogóle) należy posadzić na danym polu. Drzewo decyzję podejmuje na podstawie poszczególnych parametrów gleby:
-żyzność (z-żyzna, j-jałowa)
-nawodnienie (n - nawodniona, s - sucha)
-nasłonecznienie (s - w słońcu, c w cieniu)
-kwasowość gleby (k kwasowa, n neutralna, z - zasadowa)
#Uczenie modelu:
---
Dane treningowe:
```
training_data = [
#zyznosc, nawodnienie, cien, kwasowość, grupa
['z', 'n', 's', 'z', 1],
['z', 'n', 's', 'n', 1],
['j', 'n', 's', 'z', 1],
['z', 's', 's', 'n', 1],
['j', 'n', 'c', 'n', 1],
['z', 'n', 's', 'k', 1],
['z', 'n', 'c', 'k', 2],
['z', 's', 's', 'k', 2],
['z', 's', 'c', 'k', 2],
['j', 'n', 's', 'k', 2],
['z', 's', 'c', 'z', 3],
['j', 'n', 's', 'n', 3]
]
```
Budowanie drzewa decyzyjnego opiera się na podziale gałęzi względem algorytmu CART. Ma ono postać ciągu pytań, na które odpowiedzi determinują kolejne pytania, bądź kończą etap. W wyniku otrzymujemy strukturę drzewa, która w węzłach końcowych nie zawiera już pytań, lecz same odpowiedzi. Dodatkowo wypisuje zestaw danych pasujących do liścia, z zestawu treningowego.
```
def build_tree(rows):
gain, question = find_best_split(rows)
if gain == 0:
return Leaf(rows)
true_rows, false_rows = partition(rows, question)
true_branch = build_tree(true_rows)
false_branch = build_tree(false_rows)
return Decision_Node(question, true_branch, false_branch)
```
Znajdowanie najlepszego podziału opiera się głównie na Współczynniku Giniego, który mierzy stopień niejednorodności i dzieli ją przez ilość pozostałych zestawów testowych (entropia), co daje nam przyrost informacji.
```
def find_best_split(rows):
best_gain = 0
best_question = None
current_uncertainty = gini(rows)
n_features = len(rows[0]) - 1
for col in range(n_features):
values = set([row[col] for row in rows])
for val in values:
question = Question(col, val)
true_rows, false_rows = partition(rows, question)
if len(true_rows) == 0 or len(false_rows) == 0:
continue
gain = info_gain(true_rows, false_rows, current_uncertainty)
if gain >= best_gain:
best_gain, best_question = gain, question
return best_gain, best_question
```
Drzewo powstałe poprzez wykonanie metody print_tree(node,spacing) na zestawie testowym:
```
Czy kwasowosc == k?
--> True:
Czy cien == s?
--> True:
Czy nawodnienie == n?
--> True:
Czy zyznosc == j?
--> True:
Predict {2: 1}
--> False:
Predict {1: 1}
--> False:
Predict {2: 1}
--> False:
Predict {2: 2}
--> False:
Czy cien == s?
--> True:
Czy zyznosc == j?
--> True:
Czy kwasowosc == n?
--> True:
Predict {3: 1}
--> False:
Predict {1: 1}
--> False:
Predict {1: 3}
--> False:
Czy kwasowosc == n?
--> True:
Predict {1: 1}
--> False:
Predict {3: 1}
```
#Implementacja w C++:
---
Komunikacja między pythonem a cpp zachodzi przez pliki dane.txt i decyzje.txt. W pliku dane.txt cpp wypisuje stan całego pola w oddzielonych spacją kolumnach począwszy od indeksu x=1,y=1 aż po x=25,y=25. Decyzje podjęte przez drzewo decyzyjne wypisane w pliku decyzje.txt zawierają symbol rośliny lub pola jakie mają się znajdować na polu (również w całej przestrzeni pola).
Zestaw testowych danych:
```
void testSI1()
{
for (int i = 1; i < 26; i++)
{
for (int j = 1; j < 26; j++)
{
if (j % 3 == 0)
{
pole[i][j][2] = 'z'; //zyzne
pole[i][j][3] = 'n'; //nawodnione
pole[i][j][4] = 'c'; //w cieniu
pole[i][j][5] = 'k'; //kwasne
}
else
{
if (j % 3 == 1)
{
pole[i][j][2] = 'j'; //jalowe
pole[i][j][3] = 'n'; //nawodnione
pole[i][j][4] = 's'; //w sloncu
pole[i][j][5] = 'n'; //neutralne
}
else
{
pole[i][j][2] = 'z'; //zyzne
pole[i][j][3] = 's'; //suche
pole[i][j][4] = 's'; //sloneczne
pole[i][j][5] = 'z'; //zasadowe
}
}
}
}
}
```
Funkcja wysyłająca stan pola:
```
void sendState()
{
ofstream write("dane.txt");
for (int i = 1; i < 26; i++)
{
for (int j = 1; j < 26; j++)
{
string a;
a += pole[i][j][2];
a += ' ';
a += pole[i][j][3];
a += ' ';
a += pole[i][j][4];
a += ' ';
a += pole[i][j][5];
write << a << endl;
}
}
write.close();
}
```
Funkcja kierująca traktorem (decyzja co zasiać):
```
void reciveState()
{
ifstream read("decyzje.txt");
if (read.is_open())
{
char plant;
int i = 1;
int j = 1;
while (read >> plant)
{
if (j == 25)
{
gogo(1, i+1);
}
else
{
gogo(j+1 , i );
}
pole[i][j][0] = plant;
if (plant == '.')
{
pole[i][j][1] = '1';
}
else
{
pole[i][j][1] = '9';
}
if (j == 25)
{
j = 1;
i += 1;
}
else
{
j += 1;
}
}
}
}
```

211
RaportSzymonParafiński.md Normal file
View File

@ -0,0 +1,211 @@
# Podprojekt indywidualny - Szymon Parafiński
---
W folderze Sklearn znajduje się wykorzystana baza, wygenerowane drzewo oraz reszta plików związana z podprojektem.
## Wykorzystana metoda uczenia
Do realizacji podprojektu wykorzystano drzewa decyzyjne do decydowania, co należy zrobić po najechaniu na konkretne pole.
Drzewo decyduje na jakim etapie jest roślina analizując poszczególne stany danego pola:
- Dopiero co zasiana (kiełek)
- 0: "Nie_podejmuj_działania"
- Roślinka kiełkująca (młoda)
- 1: "Zastosuj_nawóz"
- Roślina starzejąca się, bez środka ochrony
- 2: "Zastosuj_środek"
- Roślinka dojrzałam gotowa do zbioru
- 4: "Zbierz"
- Roślina zepsuta, nie nadaje się do użytku
- 5: "Roślina_już_zgniła-zbierz_i_wyrzuć".
Do implementacji drzew decyzyjnych w Pythonie wykorzystane zostały biblioteki
**sklearn** , **pandas**,**sys** oraz **pickle**.
## Uczenie modelu
#### loadLearningBase(): [python]
Metoda **loadLearningBase** rozpoczyna od utworzenia zbioru uczącego na podstawie tabeli zawierającej informacje wszystkich możliwych stanach roślinki.
* *col_names* -> zawiera nagłówki poszczególnych kolumn
* *feature_cols* -> zawiera nagłówki z kolumnami w których znajdują się dane do analizy
```
col_names = ['Warzywo', 'Nawoz', 'Srodek', 'Stan', 'Dzialanie']
base = pd.read_csv("Database.csv", header=None, names=col_names)
feature_cols = ['Warzywo', 'Nawoz', 'Srodek', 'Stan']
""" print dataset"""
# print(base.head())
```
Tutaj dzielimy podane kolumny na dwa typy zmiennych:
* zmienne docelowe ---> y
* i zmienne funkcyjne ---> X
Aby móc sprawdzić wydajność modelu, dzielę zestaw danych na zestaw szkoleniowy i zestaw testowy ---> za pomocą funkcji train_test_split ().
```
X = base[feature_cols] # Features
y = base.Dzialanie # Target variable
# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,
random_state=1) # 70% training and 30% test
```
Wywołanie funkcji odpowiedzialnej za wygenerowanie drzewa.
```
data = generateDecisionTree(X_train, X_test, y_train, y_test)
```
Dodatkowe elementy pozwalające na wizualizację stworzonego drzewa decyzyjnego poprzez wygenerowanie drzewa zależności if/else lub najpierw do pliku .dot, który następnie poddany odpowiedniej 'obróbce' utworzy obraz.
```
"""generate data for image"""
# tree.export_graphviz(data, out_file='treeData.dot', filled=True, rounded=True, special_characters=True,
# feature_names=feature_cols)
"""Printing if_styled tree to console"""
# tree_to_code(data, feature_cols)
return data
```
---
#### generateDecisionTree(): [python]
Metoda **generateDecisionTree** generuje drzewo decyzyjne na podstawie dostarczonej bazy danych.
Do zmiennej *clf* zapisujemy drzewo decyzyjne z biblioteki **sklearn** utworzone za pomocą metody **DecisionTreeClassifier** z parametrem **criterion** ustawionym na **"entropy"**, który pozwala na uzyskiwanie informacji.
Na drzewie wywołujemy metodę **fit**, która dopasowuje do drzewa zbiór uczący zadany w tablicach **X_train** i **y_train**.
Po dopasowaniu danych możemy przewidzieć stan nowych przykładów, co robimy wywołując na drzewie metodę **predict** z parametrami, które zawierają informację o stanie danego pola.
```
def generateDecisionTree(X_train, X_test, y_train, y_test):
# Create Decision Tree classifer object
clf = DecisionTreeClassifier(criterion="entropy")
# Train Decision Tree Classifer
clf = clf.fit(X_train, y_train)
```
Aby ocenić dokładność naszego modelu przewidujemy odpowiedzi dla naszego zestawu testowego, aby móc go porównać z zestawem y_test i otrzymać dokładność wygenerowanego modelu.
```
# Predict the response for test dataset
y_pred = clf.predict(X_test)
"""Model Accuracy, how often is the classifier correct """
# print("Accuracy:", metrics.accuracy_score(y_test, y_pred))
```
---
#### main(): [python]
Metoda main wywołuje pozostałe metody oraz zapisuje wygenerowany model do pliku .sav aby nie było trzeba ponownie generować drzewa, tylko wczytać już te wygenerowane.
```
generated = loadLearningBase()
# Save generated tree
filename = 'decisionTree.sav'
pickle.dump(generated, open(filename, 'wb'))
```
## Implementacja w projekcie całościowym
Klasa wywoływana w **C++** nazywa się *injectCode*.
Działanie polega na tym że, funkcja **stanPola** sprawdza jakie wartości ma dane pole i generuje odpowiednie polecenie do wykonania.
#### stanPola(): [C++]
```
void stanPola(int x, int y) {
//[x][x][0] = 0 - brak chemii
//[x][x][0] = 1 - tylko nawóz
//[x][x][0] = 2 - tylko środek
//[x][x][0] = 3 - środek i nawóz
//[x][x][1] - wartość wzrostu rośliny
polecenie = "python pliki/injectCode.py 1 ";
if (stan[x][y][0] == 0)
polecenie.append("0 0 ");
if (stan[x][y][0] == 1)
polecenie.append("1 0 ");
if (stan[x][y][0] == 2)
polecenie.append("0 1 ");
if (stan[x][y][0] == 3)
polecenie.append("1 1 ");
int w = (stan[x][y][1]);
std::string s = std::to_string(w);
polecenie.append(s);
decisionTree(polecenie);
}
```
Następnie funckja **decisionTree** wykonuje wygenerowane zapytanie.
#### decisionTree(): [C++]
```
void decisionTree(string polecenie) {
std::string str = polecenie;
const char* c = str.c_str();
system(c);
int line = 0;
ifstream inFile;
inFile.open("pliki/dec.txt");
if (!inFile) {
cout << "Unable to open file";
exit(1); // terminate with error
}
while (inFile >> line) {
decyzja = line;
}
inFile.close();
akcja();
}
```
#### injectCode(): [python]
```
import pickle
import sys
def prediction(warzywo, nawoz ,srodek, stan_wzrostu):
filename = 'pliki/decisionTree.sav'
tree = pickle.load(open(filename, 'rb'))
val = (tree.predict([[warzywo, nawoz, srodek, stan_wzrostu]]))
save(val)
def save(prediction):
pred = str(prediction)
plik = open('pliki/dec.txt', 'w')
plik.write(pred[1])
plik.close()
def decision(prediction):
if prediction == 0:
return "Nie_podejmuj_dzialania"
elif prediction == 1:
return "Zastosuj_nawoz"
elif prediction == 2:
return "Zastosuj_srodek"
elif prediction == 4:
return "Zbierz"
elif prediction == 5:
return "Roslina_juz_zgnila__zbierz_i_wyrzuc"
if __name__ == '__main__':
# Map command line arguments to function arguments.
prediction(*sys.argv[1:])
```
Generowane polecenie wygląda w ten sposób:
```
python injectCode.py a b c d
```
Gdzie:
* a -> rodzaj warzywa
* b -> czy roślina była nawożona
* 0: "nie"
* 1: "tak"
* c -> czy na roślinie był stosowany środek ochronny
* 0: "nie"
* 1: "tak"
* d -> stan wzrostu w jakim znajduje się roślina
* [1,20) - kiełek,
* [20,45) - młoda roślina,
* [45,85) - dojrzała,
* [80,100] - starzejąca się.

105
RaportTomaszDzierzbicki.md Normal file
View File

@ -0,0 +1,105 @@
# Lista funkcji
![](images/13_05/1.png)
![](images/13_05/2.png)
-----
# sigmoid, pSigmoid
funkcja sigmoid przetwarzająca podaną liczbę na liczbę z przedziału [0 ; 1]
funkcja psigmoid jest pochodną sigmoid
![](images/13_05/3.png)
-----
# lookOFVege
funkcja przemieniająca stan rośliny na to 'jak wygląda'
![](images/13_05/4.png)
-----
# setValusesRange
funkcja przygotowująca dane pod sigmoid
![](images/13_05/5.png)
-----
# gradient
funkcja gradientu przechowująca wzrosty połączeń neuronów
![](images/13_05/6.png)
-----
# buildMatrix
funkcja tworząca czystą macierz połączeń neuronów
![](images/13_05/7.png)
-----
# buildAvrGrad
funkcja tworząca czystą macierz średnich gradientów
![](images/13_05/8.png)
-----
# neuronsInputBuild
funkcja uzupełniająca dane wejściowe neuronów, uzupełniająca wyjścia na podstawie wag macierzy połączeń oraz zwracająca koszt dla wybranego oczekiwanego rozwiązania
![](images/13_05/9.png)
![](images/13_05/10.png)
![](images/13_05/11.png)
-----
# backProp
funkcja wstecznej propagacji obniżająca koszt conajmniej 50 oraz zapisująca gradient tego kosztu
![](images/13_05/12.png)
-----
# network
funkcja przekazująca dane oczekiwane o wstecznej propagacji
![](images/13_05/13.png)
-----
# bestMatrixBuild
funkcja budująca najlepszą macierz wag na podstawie średnich gradientów
![](images/13_05/14.png)
-----
# tests
zbiory testowe
## neuroTest1
test z jednym konkrenym warzywem na polu
![](images/13_05/15.png)
## neuroTest2
test z warzywami blokującymi oczekiwane warzywo
![](images/13_05/16.png)
-----
# neuroStart1
funkcja inicjalizująca naukę traktora
![](images/13_05/17.png)
-----
# chousePath
funkcja poruszająca traktor do najlepszego pola
![](images/13_05/18.png)
![](images/13_05/19.png)
-----
# testOfNeuroMove
test do sprawdzenia działania traktora po nauce
![](images/13_05/20.png)
-----
# main
inicjalizacja nauki oraz użycia jej
![](images/13_05/21.png)

1166
backups/Main.cpp Normal file

File diff suppressed because it is too large Load Diff

606
backups/MainPure.cpp Normal file
View File

@ -0,0 +1,606 @@
#include<iostream>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<string>
#include<list>
#include<set>
#include<math.h>
#include<stack>
using namespace std;
const float maxFloat=FLT_MAX;
const int ROW = 27;
const int COL = 27;
typedef pair<int, int> Pair;
typedef pair<double, pair<int, int>> pPair;
struct cell
{
int parent_i, parent_j;
double f, g, h;
};
char pole[27][27][2];
int pozycjaTraktoraX = 1, pozycjaTraktoraY = 1;
char currentWay = 'S';
void color(string foregroundColor, string backgroundColor)
{
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
int foregroundCode = 15;
if (foregroundColor == "black")
foregroundCode = 0;
if (foregroundColor == "dark_blue")
foregroundCode = 1;
if (foregroundColor == "green")
foregroundCode = 2;
if (foregroundColor == "cyan")
foregroundCode = 3;
if (foregroundColor == "dark_red")
foregroundCode = 4;
if (foregroundColor == "purple")
foregroundCode = 5;
if (foregroundColor == "dark_yellow")
foregroundCode = 6;
if (foregroundColor == "light_gray")
foregroundCode = 7;
if (foregroundColor == "gray")
foregroundCode = 8;
if (foregroundColor == "blue")
foregroundCode = 9;
if (foregroundColor == "lime")
foregroundCode = 10;
if (foregroundColor == "light_blue")
foregroundCode = 11;
if (foregroundColor == "red")
foregroundCode = 12;
if (foregroundColor == "magenta")
foregroundCode = 13;
if (foregroundColor == "yellow")
foregroundCode = 14;
if (foregroundColor == "white")
foregroundCode = 15;
int backgroundCode = 0;
if (backgroundColor == "black")
backgroundCode = 0;
if (backgroundColor == "dark_blue")
backgroundCode = 1;
if (backgroundColor == "green")
backgroundCode = 2;
if (backgroundColor == "cyan")
backgroundCode = 3;
if (backgroundColor == "dark_red")
backgroundCode = 4;
if (backgroundColor == "purple")
backgroundCode = 5;
if (backgroundColor == "dark_yellow")
backgroundCode = 6;
if (backgroundColor == "light_gray")
backgroundCode = 7;
if (backgroundColor == "gray")
backgroundCode = 8;
if (backgroundColor == "blue")
backgroundCode = 9;
if (backgroundColor == "lime")
backgroundCode = 10;
if (backgroundColor == "light_blue")
backgroundCode = 11;
if (backgroundColor == "red")
backgroundCode = 12;
if (backgroundColor == "magenta")
backgroundCode = 13;
if (backgroundColor == "yellow")
backgroundCode = 14;
if (backgroundColor == "white")
backgroundCode = 15;
SetConsoleTextAttribute(hOut, foregroundCode + backgroundCode * 16);
}
void SetWindow(int Width, int Height)
{
_COORD coord;
coord.X = Width;
coord.Y = Height;
_SMALL_RECT Rect;
Rect.Top = 0;
Rect.Left = 0;
Rect.Bottom = Height - 1;
Rect.Right = Width - 1;
HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE); // Get Handle
SetConsoleScreenBufferSize(Handle, coord); // Set Buffer Size
SetConsoleWindowInfo(Handle, TRUE, &Rect); // Set Window Size
}
void updatePola()
{
system("cls");
for (int i = 0; i < 27; i++)
{
for (int j = 0; j < 27; j++)
{
char item = pole[i][j][0];
switch (item)
{
case 'B':
{
color("purple", "dark_yellow");
}break;
case 'T':
{
color("red", "dark_yellow");
}break;
case 'G':
{
color("lime", "dark_yellow");
}break;
case '.':
{
color("yellow", "dark_yellow");
}break;
case '#':
{
color("light_gray", "gray");
}break;
}
cout << pole[i][j][0];
}
cout << endl;
color("white", "black");
}
}
void correctMovement(char wantedWay)
{
while (currentWay != wantedWay)
{
switch (currentWay)
{
case 'N':
{
if (wantedWay == 'S')
currentWay = wantedWay;
else
currentWay = 'W';
}break;
case 'S':
{
if (wantedWay == 'N')
currentWay = wantedWay;
else
currentWay = 'W';
}break;
case 'W':
{
if (wantedWay == 'E')
currentWay = wantedWay;
else
currentWay = 'N';
}break;
case 'E':
{
if (wantedWay == 'W')
currentWay = wantedWay;
else
currentWay = 'N';
}break;
}
}
}
void Move(char kierunek)
{
switch (kierunek)
{
//góra-(w)
case 'w':
{
if (pole[pozycjaTraktoraY - 1][pozycjaTraktoraX][0] != '#')
{
correctMovement('N');
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = '.';
pozycjaTraktoraY--;
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = 'T';
}
updatePola();
}break;
//dół-(s)
case 's':
{
if (pole[pozycjaTraktoraY + 1][pozycjaTraktoraX][0] != '#')
{
correctMovement('S');
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = '.';
pozycjaTraktoraY++;
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = 'T';
}
updatePola();
}break;
//lewo-(a)
case 'a':
{
if (pole[pozycjaTraktoraY][pozycjaTraktoraX - 1][0] != '#')
{
correctMovement('W');
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = '.';
pozycjaTraktoraX--;
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = 'T';
}
updatePola();
}break;
//prawo-(d)
case 'd':
{
if (pole[pozycjaTraktoraY][pozycjaTraktoraX + 1][0] != '#')
{
correctMovement('E');
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = '.';
pozycjaTraktoraX++;
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = 'T';
}
updatePola();
}break;
}
}
bool isValid(int x, int y)
{
if (pole[x][y][0] != '#')
{
return true;
}
return false;
}
bool isDestination(int x, int y,Pair dest)
{
if (dest.first == x && dest.second == y)
{
return true;
}
return false;
}
double calculateHValue(int x, int y, Pair dest)
{
return abs(x - dest.first) + abs(y - dest.second);
}
void tracePath(cell cellDetails[][COL], Pair dest)
{
//printf("\nThe Path is "); //----start info
int row = dest.first;
int col = dest.second;
stack<Pair> Path;
while (!(cellDetails[row][col].parent_i == row
&& cellDetails[row][col].parent_j == col))
{
Path.push(make_pair(row, col));
int temp_row = cellDetails[row][col].parent_i;
int temp_col = cellDetails[row][col].parent_j;
row = temp_row;
col = temp_col;
}
Path.push(make_pair(row, col));
while (!Path.empty())
{
pair<int, int> p = Path.top();
Path.pop();
if (p.first > pozycjaTraktoraX)
Move('d');
if (p.first < pozycjaTraktoraX)
Move('a');
if (p.second > pozycjaTraktoraY)
Move('s');
if (p.second < pozycjaTraktoraY)
Move('w');
//printf("-> (%d,%d) ", p.first, p.second); //---- informacja wierzchołku
Sleep(1000);
}
return;
}
void aStarSearch(int grid[][COL],Pair src, Pair dest)
{
bool closedList[ROW][COL];
memset(closedList, false, sizeof(closedList));
cell cellDetails[ROW][COL];
int i, j;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
cellDetails[i][j].f = maxFloat;
cellDetails[i][j].g = maxFloat;
cellDetails[i][j].h = maxFloat;
cellDetails[i][j].parent_i = -1;
cellDetails[i][j].parent_j = -1;
}
}
i = src.first, j = src.second;
cellDetails[i][j].f = 0.0;
cellDetails[i][j].g = 0.0;
cellDetails[i][j].h = 0.0;
cellDetails[i][j].parent_i = i;
cellDetails[i][j].parent_j = j;
set<pPair> openList;
openList.insert(make_pair(0.0, make_pair(i, j)));
bool foundDest = false;
while (!openList.empty())
{
pPair p = *openList.begin();
openList.erase(openList.begin());
i = p.second.first;
j = p.second.second;
closedList[i][j] = true;
double gNew, hNew, fNew;
double waga = 1.0;
waga = ((double)pole[j][i][1] - 48)*1.0;//----waga
//----------- 1st Successor (North) ------------
if (isValid(i - 1, j) == true)
{
if (isDestination(i - 1, j, dest) == true)
{
cellDetails[i - 1][j].parent_i = i;
cellDetails[i - 1][j].parent_j = j;
//printf("The destination cell is found\n");
tracePath(cellDetails, dest);
foundDest = true;
return;
}
else if (closedList[i - 1][j] == false)
{
gNew = cellDetails[i][j].g + waga;
hNew = calculateHValue(i - 1, j, dest);
fNew = gNew + hNew;
if (cellDetails[i - 1][j].f == maxFloat ||
cellDetails[i - 1][j].f > fNew)
{
openList.insert(make_pair(fNew,
make_pair(i - 1, j)));
cellDetails[i - 1][j].f = fNew;
cellDetails[i - 1][j].g = gNew;
cellDetails[i - 1][j].h = hNew;
cellDetails[i - 1][j].parent_i = i;
cellDetails[i - 1][j].parent_j = j;
}
}
}
//----------- 2nd Successor (South) ------------
if (isValid(i + 1, j) == true)
{
if (isDestination(i + 1, j, dest) == true)
{
cellDetails[i + 1][j].parent_i = i;
cellDetails[i + 1][j].parent_j = j;
//printf("The destination cell is found\n");
tracePath(cellDetails, dest);
foundDest = true;
return;
}
else if (closedList[i + 1][j] == false)
{
gNew = cellDetails[i][j].g + waga;
hNew = calculateHValue(i + 1, j, dest);
fNew = gNew + hNew;
if (cellDetails[i + 1][j].f == maxFloat ||
cellDetails[i + 1][j].f > fNew)
{
openList.insert(make_pair(fNew, make_pair(i + 1, j)));
cellDetails[i + 1][j].f = fNew;
cellDetails[i + 1][j].g = gNew;
cellDetails[i + 1][j].h = hNew;
cellDetails[i + 1][j].parent_i = i;
cellDetails[i + 1][j].parent_j = j;
}
}
}
//----------- 3rd Successor (East) ------------
if (isValid(i, j + 1) == true)
{
if (isDestination(i, j + 1, dest) == true)
{
cellDetails[i][j + 1].parent_i = i;
cellDetails[i][j + 1].parent_j = j;
//printf("The destination cell is found\n");
tracePath(cellDetails, dest);
foundDest = true;
return;
}
else if (closedList[i][j + 1] == false)
{
gNew = cellDetails[i][j].g + waga;
hNew = calculateHValue(i, j + 1, dest);
fNew = gNew + hNew;
if (cellDetails[i][j + 1].f == maxFloat ||
cellDetails[i][j + 1].f > fNew)
{
openList.insert(make_pair(fNew,
make_pair(i, j + 1)));
cellDetails[i][j + 1].f = fNew;
cellDetails[i][j + 1].g = gNew;
cellDetails[i][j + 1].h = hNew;
cellDetails[i][j + 1].parent_i = i;
cellDetails[i][j + 1].parent_j = j;
}
}
}
//----------- 4th Successor (West) ------------
if (isValid(i, j - 1) == true)
{
if (isDestination(i, j - 1, dest) == true)
{
cellDetails[i][j - 1].parent_i = i;
cellDetails[i][j - 1].parent_j = j;
//printf("The destination cell is found\n");
tracePath(cellDetails, dest);
foundDest = true;
return;
}
else if (closedList[i][j - 1] == false)
{
gNew = cellDetails[i][j].g + waga;
hNew = calculateHValue(i, j - 1, dest);
fNew = gNew + hNew;
if (cellDetails[i][j - 1].f == maxFloat ||
cellDetails[i][j - 1].f > fNew)
{
openList.insert(make_pair(fNew,
make_pair(i, j - 1)));
cellDetails[i][j - 1].f = fNew;
cellDetails[i][j - 1].g = gNew;
cellDetails[i][j - 1].h = hNew;
cellDetails[i][j - 1].parent_i = i;
cellDetails[i][j - 1].parent_j = j;
}
}
}
}
/*if (foundDest == false)
printf("Failed to find the Destination Cell\n");*/
return;
}
void gogo(int endX,int endY)
{
updatePola();
Sleep(1000);
int grid[27][27];
for (int i = 0; i < 27; i++)
{
for (int j = 0; j < 27; j++)
{
grid[i][j] = 0;
}
}
Pair src = make_pair(pozycjaTraktoraX, pozycjaTraktoraY);
Pair dest = make_pair(endX, endY);
aStarSearch(grid, src, dest);
}
void test1()
{
pole[1][3][0] = 'B';
pole[1][3][1] = '9';
pole[3][1][0] = 'B';
pole[3][1][1] = '9';
}
void test2()
{
for (int i = 1; i < 26; i++)
{
for (int j = 1; j < i; j++)
{
pole[i][j][0] = 'B';
pole[i][j][1] = '9';
}
}
test1();
updatePola();
}
void start1()
{
int goalX = 3, goalY = 4;
test1();
pole[1][1][0] = 'T';
pole[1][1][1] = '1';
pole[goalY][goalX][0] = 'G';
pole[goalY][goalX][1] = '9';
gogo(goalX, goalY);
}
void start2()
{
int goalX = 6, goalY = 6;
test2();
pole[1][1][0] = 'T';
pole[1][1][1] = '1';
pole[goalY][goalX][0] = 'G';
pole[goalY][goalX][1] = '9';
gogo(goalX, goalY);
}
void start3()
{
int goalX = 6, goalY = 9;
test2();
pole[1][1][0] = 'T';
pole[1][1][1] = '1';
pole[goalY][goalX][0] = 'G';
pole[goalY][goalX][1] = '9';
gogo(goalX, goalY);
}
int main()
{
SetWindow(50, 30);
//create pola//
for (int i = 0; i < 27; i++)
{
pole[i][0][0] = '#';
pole[0][i][0] = '#';
pole[26][i][0] = '#';
pole[i][26][0] = '#';
pole[i][0][1] = '9';
pole[0][i][1] = '9';
pole[26][i][1] = '9';
pole[i][26][1] = '9';
}
for (int i = 1; i < 26; i++)
{
for (int j = 1; j < 26; j++)
{
pole[i][j][0] = '.';
pole[i][j][1] = '1';
}
}
for (int i = 0; i < 25; i++)
{
pole[i + 1][i + 1][0] = 'B';
pole[i + 1][i + 1][1] = '9';
}
updatePola();
start3(); // testy start 1-3
//---------start---------//
bool traktorDziala = true;
char akcja;
do
{
akcja = _getch();
if (akcja == 'w' || akcja == 's' || akcja == 'a' || akcja == 'd')
{
Move(akcja);
}
if (akcja == '0')
{
traktorDziala = false;
}
} while (traktorDziala);
//---------end---------//
return 0;
}

712
backups/Main_drzewa1.cpp Normal file
View File

@ -0,0 +1,712 @@
#include<iostream>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<string>
#include<list>
#include<set>
#include<math.h>
#include<stack>
#include<fstream>
using namespace std;
const float maxFloat=FLT_MAX;
const int ROW = 27;
const int COL = 27;
typedef pair<int, int> Pair;
typedef pair<double, pair<int, int>> pPair;
struct cell
{
int parent_i, parent_j;
double f, g, h;
};
char pole[27][27][6];
int pozycjaTraktoraX = 1, pozycjaTraktoraY = 1;
char currentWay = 'S';
void color(string foregroundColor, string backgroundColor)
{
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
int foregroundCode = 15;
if (foregroundColor == "black")
foregroundCode = 0;
if (foregroundColor == "dark_blue")
foregroundCode = 1;
if (foregroundColor == "green")
foregroundCode = 2;
if (foregroundColor == "cyan")
foregroundCode = 3;
if (foregroundColor == "dark_red")
foregroundCode = 4;
if (foregroundColor == "purple")
foregroundCode = 5;
if (foregroundColor == "dark_yellow")
foregroundCode = 6;
if (foregroundColor == "light_gray")
foregroundCode = 7;
if (foregroundColor == "gray")
foregroundCode = 8;
if (foregroundColor == "blue")
foregroundCode = 9;
if (foregroundColor == "lime")
foregroundCode = 10;
if (foregroundColor == "light_blue")
foregroundCode = 11;
if (foregroundColor == "red")
foregroundCode = 12;
if (foregroundColor == "magenta")
foregroundCode = 13;
if (foregroundColor == "yellow")
foregroundCode = 14;
if (foregroundColor == "white")
foregroundCode = 15;
int backgroundCode = 0;
if (backgroundColor == "black")
backgroundCode = 0;
if (backgroundColor == "dark_blue")
backgroundCode = 1;
if (backgroundColor == "green")
backgroundCode = 2;
if (backgroundColor == "cyan")
backgroundCode = 3;
if (backgroundColor == "dark_red")
backgroundCode = 4;
if (backgroundColor == "purple")
backgroundCode = 5;
if (backgroundColor == "dark_yellow")
backgroundCode = 6;
if (backgroundColor == "light_gray")
backgroundCode = 7;
if (backgroundColor == "gray")
backgroundCode = 8;
if (backgroundColor == "blue")
backgroundCode = 9;
if (backgroundColor == "lime")
backgroundCode = 10;
if (backgroundColor == "light_blue")
backgroundCode = 11;
if (backgroundColor == "red")
backgroundCode = 12;
if (backgroundColor == "magenta")
backgroundCode = 13;
if (backgroundColor == "yellow")
backgroundCode = 14;
if (backgroundColor == "white")
backgroundCode = 15;
SetConsoleTextAttribute(hOut, foregroundCode + backgroundCode * 16);
}
void SetWindow(int Width, int Height)
{
_COORD coord;
coord.X = Width;
coord.Y = Height;
_SMALL_RECT Rect;
Rect.Top = 0;
Rect.Left = 0;
Rect.Bottom = Height - 1;
Rect.Right = Width - 1;
HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE); // Get Handle
SetConsoleScreenBufferSize(Handle, coord); // Set Buffer Size
SetConsoleWindowInfo(Handle, TRUE, &Rect); // Set Window Size
}
void updatePola()
{
system("cls");
for (int i = 0; i < 27; i++)
{
for (int j = 0; j < 27; j++)
{
char item = pole[i][j][0];
switch (item)
{
case 'B':
{
color("purple", "dark_yellow");
}break;
case 'Z':
{
color("cyan", "dark_yellow");
}break;
case 'T':
{
color("red", "dark_yellow");
}break;
case 'G':
{
color("lime", "dark_yellow");
}break;
case '.':
{
color("yellow", "dark_yellow");
}break;
case '#':
{
color("light_gray", "gray");
}break;
}
cout << pole[i][j][0];
}
cout << endl;
color("white", "black");
}
}
void correctMovement(char wantedWay)
{
while (currentWay != wantedWay)
{
switch (currentWay)
{
case 'N':
{
if (wantedWay == 'S')
currentWay = wantedWay;
else
currentWay = 'W';
}break;
case 'S':
{
if (wantedWay == 'N')
currentWay = wantedWay;
else
currentWay = 'W';
}break;
case 'W':
{
if (wantedWay == 'E')
currentWay = wantedWay;
else
currentWay = 'N';
}break;
case 'E':
{
if (wantedWay == 'W')
currentWay = wantedWay;
else
currentWay = 'N';
}break;
}
}
}
void Move(char kierunek)
{
switch (kierunek)
{
//góra-(w)
case 'w':
{
if (pole[pozycjaTraktoraY - 1][pozycjaTraktoraX][0] != '#')
{
correctMovement('N');
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = '.';
pozycjaTraktoraY--;
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = 'T';
}
updatePola();
}break;
//dół-(s)
case 's':
{
if (pole[pozycjaTraktoraY + 1][pozycjaTraktoraX][0] != '#')
{
correctMovement('S');
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = '.';
pozycjaTraktoraY++;
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = 'T';
}
updatePola();
}break;
//lewo-(a)
case 'a':
{
if (pole[pozycjaTraktoraY][pozycjaTraktoraX - 1][0] != '#')
{
correctMovement('W');
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = '.';
pozycjaTraktoraX--;
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = 'T';
}
updatePola();
}break;
//prawo-(d)
case 'd':
{
if (pole[pozycjaTraktoraY][pozycjaTraktoraX + 1][0] != '#')
{
correctMovement('E');
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = '.';
pozycjaTraktoraX++;
pole[pozycjaTraktoraY][pozycjaTraktoraX][0] = 'T';
}
updatePola();
}break;
}
}
bool isValid(int x, int y)
{
if (pole[x][y][0] != '#')
{
return true;
}
return false;
}
bool isDestination(int x, int y,Pair dest)
{
if (dest.first == x && dest.second == y)
{
return true;
}
return false;
}
double calculateHValue(int x, int y, Pair dest)
{
return abs(x - dest.first) + abs(y - dest.second);
}
void tracePath(cell cellDetails[][COL], Pair dest)
{
//printf("\nThe Path is "); //----start info
int row = dest.first;
int col = dest.second;
stack<Pair> Path;
while (!(cellDetails[row][col].parent_i == row
&& cellDetails[row][col].parent_j == col))
{
Path.push(make_pair(row, col));
int temp_row = cellDetails[row][col].parent_i;
int temp_col = cellDetails[row][col].parent_j;
row = temp_row;
col = temp_col;
}
Path.push(make_pair(row, col));
while (!Path.empty())
{
pair<int, int> p = Path.top();
Path.pop();
if (p.first > pozycjaTraktoraX)
Move('d');
if (p.first < pozycjaTraktoraX)
Move('a');
if (p.second > pozycjaTraktoraY)
Move('s');
if (p.second < pozycjaTraktoraY)
Move('w');
//printf("-> (%d,%d) ", p.first, p.second); //---- informacja wierzchołku
Sleep(1000);
}
return;
}
void aStarSearch(int grid[][COL],Pair src, Pair dest)
{
bool closedList[ROW][COL];
memset(closedList, false, sizeof(closedList));
cell cellDetails[ROW][COL];
int i, j;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
cellDetails[i][j].f = maxFloat;
cellDetails[i][j].g = maxFloat;
cellDetails[i][j].h = maxFloat;
cellDetails[i][j].parent_i = -1;
cellDetails[i][j].parent_j = -1;
}
}
i = src.first, j = src.second;
cellDetails[i][j].f = 0.0;
cellDetails[i][j].g = 0.0;
cellDetails[i][j].h = 0.0;
cellDetails[i][j].parent_i = i;
cellDetails[i][j].parent_j = j;
set<pPair> openList;
openList.insert(make_pair(0.0, make_pair(i, j)));
bool foundDest = false;
while (!openList.empty())
{
pPair p = *openList.begin();
openList.erase(openList.begin());
i = p.second.first;
j = p.second.second;
closedList[i][j] = true;
double gNew, hNew, fNew;
double waga = 1.0;
waga = ((double)pole[j][i][1] - 48)*1.0;//----waga
//----------- 1st Successor (North) ------------
if (isValid(i - 1, j) == true)
{
if (isDestination(i - 1, j, dest) == true)
{
cellDetails[i - 1][j].parent_i = i;
cellDetails[i - 1][j].parent_j = j;
//printf("The destination cell is found\n");
tracePath(cellDetails, dest);
foundDest = true;
return;
}
else if (closedList[i - 1][j] == false)
{
gNew = cellDetails[i][j].g + waga;
hNew = calculateHValue(i - 1, j, dest);
fNew = gNew + hNew;
if (cellDetails[i - 1][j].f == maxFloat ||
cellDetails[i - 1][j].f > fNew)
{
openList.insert(make_pair(fNew,
make_pair(i - 1, j)));
cellDetails[i - 1][j].f = fNew;
cellDetails[i - 1][j].g = gNew;
cellDetails[i - 1][j].h = hNew;
cellDetails[i - 1][j].parent_i = i;
cellDetails[i - 1][j].parent_j = j;
}
}
}
//----------- 2nd Successor (South) ------------
if (isValid(i + 1, j) == true)
{
if (isDestination(i + 1, j, dest) == true)
{
cellDetails[i + 1][j].parent_i = i;
cellDetails[i + 1][j].parent_j = j;
//printf("The destination cell is found\n");
tracePath(cellDetails, dest);
foundDest = true;
return;
}
else if (closedList[i + 1][j] == false)
{
gNew = cellDetails[i][j].g + waga;
hNew = calculateHValue(i + 1, j, dest);
fNew = gNew + hNew;
if (cellDetails[i + 1][j].f == maxFloat ||
cellDetails[i + 1][j].f > fNew)
{
openList.insert(make_pair(fNew, make_pair(i + 1, j)));
cellDetails[i + 1][j].f = fNew;
cellDetails[i + 1][j].g = gNew;
cellDetails[i + 1][j].h = hNew;
cellDetails[i + 1][j].parent_i = i;
cellDetails[i + 1][j].parent_j = j;
}
}
}
//----------- 3rd Successor (East) ------------
if (isValid(i, j + 1) == true)
{
if (isDestination(i, j + 1, dest) == true)
{
cellDetails[i][j + 1].parent_i = i;
cellDetails[i][j + 1].parent_j = j;
//printf("The destination cell is found\n");
tracePath(cellDetails, dest);
foundDest = true;
return;
}
else if (closedList[i][j + 1] == false)
{
gNew = cellDetails[i][j].g + waga;
hNew = calculateHValue(i, j + 1, dest);
fNew = gNew + hNew;
if (cellDetails[i][j + 1].f == maxFloat ||
cellDetails[i][j + 1].f > fNew)
{
openList.insert(make_pair(fNew,
make_pair(i, j + 1)));
cellDetails[i][j + 1].f = fNew;
cellDetails[i][j + 1].g = gNew;
cellDetails[i][j + 1].h = hNew;
cellDetails[i][j + 1].parent_i = i;
cellDetails[i][j + 1].parent_j = j;
}
}
}
//----------- 4th Successor (West) ------------
if (isValid(i, j - 1) == true)
{
if (isDestination(i, j - 1, dest) == true)
{
cellDetails[i][j - 1].parent_i = i;
cellDetails[i][j - 1].parent_j = j;
//printf("The destination cell is found\n");
tracePath(cellDetails, dest);
foundDest = true;
return;
}
else if (closedList[i][j - 1] == false)
{
gNew = cellDetails[i][j].g + waga;
hNew = calculateHValue(i, j - 1, dest);
fNew = gNew + hNew;
if (cellDetails[i][j - 1].f == maxFloat ||
cellDetails[i][j - 1].f > fNew)
{
openList.insert(make_pair(fNew,
make_pair(i, j - 1)));
cellDetails[i][j - 1].f = fNew;
cellDetails[i][j - 1].g = gNew;
cellDetails[i][j - 1].h = hNew;
cellDetails[i][j - 1].parent_i = i;
cellDetails[i][j - 1].parent_j = j;
}
}
}
}
/*if (foundDest == false)
printf("Failed to find the Destination Cell\n");*/
return;
}
void gogo(int endX,int endY)
{
updatePola();
Sleep(1000);
int grid[27][27];
for (int i = 0; i < 27; i++)
{
for (int j = 0; j < 27; j++)
{
grid[i][j] = 0;
}
}
Pair src = make_pair(pozycjaTraktoraX, pozycjaTraktoraY);
Pair dest = make_pair(endX, endY);
aStarSearch(grid, src, dest);
}
void test1()
{
pole[1][3][0] = 'B';
pole[1][3][1] = '9';
pole[3][1][0] = 'Z';
pole[3][1][1] = '9';
}
void test2()
{
for (int i = 1; i < 26; i++)
{
for (int j = 1; j < i; j++)
{
pole[i][j][0] = 'B';
pole[i][j][1] = '9';
}
}
test1();
updatePola();
}
void testSI1()
{
for (int i = 1; i < 26; i++)
{
for (int j = 1; j < 26; j++)
{
if (j % 3 == 0)
{
pole[i][j][2] = 'z'; //zyzne
pole[i][j][3] = 'n'; //nawodnione
pole[i][j][4] = 'c'; //w cieniu
pole[i][j][5] = 'k'; //kwasne
}
else
{
if (j % 3 == 1)
{
pole[i][j][2] = 'j'; //jalowe
pole[i][j][3] = 'n'; //nawodnione
pole[i][j][4] = 's'; //w sloncu
pole[i][j][5] = 'n'; //neutralne
}
else
{
pole[i][j][2] = 'z'; //zyzne
pole[i][j][3] = 's'; //suche
pole[i][j][4] = 's'; //sloneczne
pole[i][j][5] = 'z'; //zasadowe
}
}
}
}
}
void sendState()
{
ofstream write("dane.txt");
for (int i = 1; i < 26; i++)
{
for (int j = 1; j < 26; j++)
{
string a;
a += pole[i][j][2];
a += ' ';
a += pole[i][j][3];
a += ' ';
a += pole[i][j][4];
a += ' ';
a += pole[i][j][5];
write << a << endl;
}
}
write.close();
}
void reciveState()
{
ifstream read("decyzje.txt");
if (read.is_open())
{
char plant;
int i = 1;
int j = 1;
while (read >> plant)
{
if (j == 25)
{
gogo(1, i+1);
}
else
{
gogo(j+1 , i );
}
pole[i][j][0] = plant;
if (plant == '.')
{
pole[i][j][1] = '1';
}
else
{
pole[i][j][1] = '9';
}
if (j == 25)
{
j = 1;
i += 1;
}
else
{
j += 1;
}
}
}
}
void start1()
{
int goalX = 3, goalY = 4;
test1();
testSI1();
pole[1][1][0] = 'T';
pole[1][1][1] = '1';
pole[goalY][goalX][0] = 'G';
pole[goalY][goalX][1] = '9';
gogo(goalX, goalY);
gogo(goalX - 1, goalY);
pole[goalY][goalX][0] = 'Z';
pole[goalY][goalX][1] = '9';
updatePola();
//sendState(); //trzeba ręcznie zmieniać między wysyłaniem stanu a pobieraniem stanu pola
reciveState();
}
void start2()
{
int goalX = 6, goalY = 6;
test2();
pole[1][1][0] = 'T';
pole[1][1][1] = '1';
pole[goalY][goalX][0] = 'G';
pole[goalY][goalX][1] = '9';
gogo(goalX, goalY);
}
void start3()
{
int goalX = 6, goalY = 9;
test2();
pole[1][1][0] = 'T';
pole[1][1][1] = '1';
pole[goalY][goalX][0] = 'G';
pole[goalY][goalX][1] = '9';
gogo(goalX, goalY);
}
int main()
{
SetWindow(50, 30);
//create pola//
for (int i = 0; i < 27; i++)
{
pole[i][0][0] = '#';
pole[0][i][0] = '#';
pole[26][i][0] = '#';
pole[i][26][0] = '#';
pole[i][0][1] = '9';
pole[0][i][1] = '9';
pole[26][i][1] = '9';
pole[i][26][1] = '9';
}
for (int i = 1; i < 26; i++)
{
for (int j = 1; j < 26; j++)
{
pole[i][j][0] = '.';
pole[i][j][1] = '1';
}
}
for (int i = 0; i < 25; i++)
{
pole[i + 1][i + 1][0] = 'B';
pole[i + 1][i + 1][1] = '9';
}
updatePola();
start1(); // testy start 1-3
//---------start---------//
bool traktorDziala = true;
char akcja;
do
{
akcja = _getch();
if (akcja == 'w' || akcja == 's' || akcja == 'a' || akcja == 'd')
{
Move(akcja);
}
if (akcja == '0')
{
traktorDziala = false;
}
} while (traktorDziala);
//---------end---------//
return 0;
}

File diff suppressed because it is too large Load Diff

625
dane.txt Normal file
View File

@ -0,0 +1,625 @@
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n
z s s z
z n c k
j n s n

BIN
decisionTree.sav Normal file

Binary file not shown.

625
decyzje.txt Normal file
View File

@ -0,0 +1,625 @@
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.
B
Z
.

165
drzewaDecyzyjne.py Normal file
View File

@ -0,0 +1,165 @@
training_data = [
#zyznosc, nawodnienie, cien, kwasowosc
['z', 'n', 's', 'z', 1],
['z', 'n', 's', 'n', 1],
['j', 'n', 's', 'z', 1],
['z', 's', 's', 'n', 1],
['j', 'n', 'c', 'n', 1],
['z', 'n', 's', 'k', 1],
['z', 'n', 'c', 'k', 2],
['z', 's', 's', 'k', 2],
['z', 's', 'c', 'k', 2],
['j', 'n', 's', 'k', 2],
['z', 's', 'c', 'z', 3],
['j', 'n', 's', 'n', 3]
]
header = ["zyznosc", "nawodnienie", "cien", "kwasowosc", "wybor"]
def class_counts(rows):
counts = {}
for row in rows:
label = row[-1]
if label not in counts:
counts[label] = 0
counts[label] += 1
return counts
def is_numeric(value):
return isinstance(value, int) or isinstance(value, float)
class Question:
def __init__(self, column, value):
self.column = column
self.value = value
def match(self, example):
val = example[self.column]
if is_numeric(val):
return val >= self.value
else:
return val == self.value
def __repr__(self):
condition = "=="
if is_numeric(self.value):
condition = ">="
return "Czy %s %s %s?" % (
header[self.column], condition, str(self.value))
def partition(rows, question):
true_rows, false_rows = [], []
for row in rows:
if question.match(row):
true_rows.append(row)
else:
false_rows.append(row)
return true_rows, false_rows
def gini(rows):
counts = class_counts(rows)
impurity = 1
for lbl in counts:
prob_of_lbl = counts[lbl] / float(len(rows))
impurity -= prob_of_lbl**2
return impurity
def info_gain(left, right, current_uncertainty):
p = float(len(left)) / (len(left) + len(right))
return current_uncertainty - p * gini(left) - (1 - p) * gini(right)
def find_best_split(rows):
best_gain = 0
best_question = None
current_uncertainty = gini(rows)
n_features = len(rows[0]) - 1
for col in range(n_features):
values = set([row[col] for row in rows])
for val in values:
question = Question(col, val)
true_rows, false_rows = partition(rows, question)
if len(true_rows) == 0 or len(false_rows) == 0:
continue
gain = info_gain(true_rows, false_rows, current_uncertainty)
if gain >= best_gain:
best_gain, best_question = gain, question
return best_gain, best_question
class Leaf:
def __init__(self, rows):
self.predictions = class_counts(rows)
class Decision_Node:
def __init__(self,
question,
true_branch,
false_branch):
self.question = question
self.true_branch = true_branch
self.false_branch = false_branch
def build_tree(rows):
gain, question = find_best_split(rows)
if gain == 0:
return Leaf(rows)
true_rows, false_rows = partition(rows, question)
true_branch = build_tree(true_rows)
false_branch = build_tree(false_rows)
return Decision_Node(question, true_branch, false_branch)
def print_tree(node, spacing=""):
if isinstance(node, Leaf):
print (spacing + "Predict", node.predictions)
return
print (spacing + str(node.question))
print (spacing + '--> True:')
print_tree(node.true_branch, spacing + " ")
print (spacing + '--> False:')
print_tree(node.false_branch, spacing + " ")
my_tree = build_tree(training_data)
print_tree(my_tree)
def classify(row, node):
if isinstance(node, Leaf):
return node.predictions
if node.question.match(row):
return classify(row, node.true_branch)
else:
return classify(row, node.false_branch)
def print_leaf(counts):
total = sum(counts.values()) * 1.0
probs = {}
for lbl in counts.keys():
probs[lbl] = str(int(counts[lbl] / total * 100)) + "%"
return probs
with open( 'dane.txt', "r" ) as f:
testing_data = [ line.split() for line in f ]
file = open("decyzje.txt", "w")
file.write("")
file.close()
for row in testing_data:
pom = print_leaf(classify(row, my_tree))
f = open("decyzje.txt", "a")
if pom == {1: '100%'}:
f.write("B\n")
if pom == {2: '100%'}:
f.write("Z\n")
if pom == {3: '100%'}:
f.write(".\n")
f.close()

View File

@ -8,7 +8,7 @@ którym będzie poruszał się agent.
W skład zespołu wchodzą:
Tomasz Dzierzbicki,
Szymon Parafiński,
Karol Piotrowski,
Laura Piotrowska,
Jarosław Zbąski.
# Temat projektu i wybrane rozwiązanie

52
final-evaluation.md Normal file
View File

@ -0,0 +1,52 @@
# Szymon Parafiński
implementacja drzew decyzyjnych z nauczonego pliku
![](images/last_images/1.png)
implementacja funkcji która decyduje co zrobić z obecnym polem
![](images/last_images/2.png)
Funkcja jest zastosowana podczas osiągniecia celu ruchu
![](images/last_images/3.png)
# Tomasz Dzierzbicki
implementacja sieci neuronowych z nauczonego pliku
![](images/last_images/4.png)
implementacja funkcji która szuka nalepszego pola do zastosowania na nim działań
![](images/last_images/5.png)
Funkcja jest używana w nieskończoność po uruchomieniu programu
![](images/last_images/6.png)
# Jarosław Zbąski
implementacja drzew decyzyjnych z nauczonego pliku
![](images/last_images/7.png)
implementacja funkcji która decyduje co posadzić
![](images/last_images/8.png)
Funkcja jest zastosowana po zebraniu na tym samym polu
![](images/last_images/9.png)
# Laura Piotrowska
implementacja algorytmu genetycznego
![](images/last_images/10.png)
Zaimplementowane zostało zbieranie warzyw, a algorytm przygotowuje porcję nowych roślin do zasadzenia
Algorytm jest wywoływany co ustaloną liczbę zebranych buraków lub ziemniaków
![](images/last_images/obsluga.png)
Implementacja zbierania
![](images/last_images/11.png)

299
gmo.cpp
View File

@ -1,299 +0,0 @@
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <string>
#include <math.h>
#include<bits/stdc++.h>
#include <algorithm>
#include <utility>
using namespace std;
string generateValue() {
char trash[100];
string x = itoa(rand() % 1000,trash,10);
if (x.size() == 2) {
x = "0" + x;
}
else if (x.size() == 1) {
x = "00" + x;
}
return x;
}
string generateVegetable() {
string taste = generateValue();
string colour = generateValue();
string size = generateValue();
return taste + colour + size;
}
void generatePopulation(string * population,int length) {
int i;
for(i=0;i<length;i++) {
population[i] = generateVegetable();
}
}
int power(int x, int y) {
if (y == 0) return 1;
if (y == 1) return x;
int temp = power(x, y/2);
if (y%2 == 0) return temp * temp;
else return x * temp * temp;
}
int stringToInt(string str,int size) {
int x = 0;
int i;
reverse(str.begin(),str.end());
for(i=0;i<size;i++) {
x += (str[i] - '0') * power(10,i);
}
reverse(str.begin(),str.end());
return x;
}
int fitness(string vegetable) {
int taste = stringToInt(vegetable.substr(0,3),3);
int colour = stringToInt(vegetable.substr(3,3),3);
int size = stringToInt(vegetable.substr(6,3),3);
return (taste+colour+size)/3;
}
bool comparePair(const pair<int, string>&i, const pair<int, string>&j)
{
return i.first > j.first;
}
void ranking(string * population,string * parents, int populationSize, int parentsNumber) {
int i;
pair <int,string> fitnessTable[populationSize];
for(i=0;i<populationSize;i++) {
fitnessTable[i] = make_pair(fitness(population[i]),population[i]);
}
sort(fitnessTable,fitnessTable+populationSize,comparePair);
for(i=0;i<parentsNumber;i++) {
parents[i] = fitnessTable[i].second;
}
}
bool exists(int len, int * array, int element) {
int i;
for(i=0;i<len;i++) {
if (array[i] == element) return true;
}
return false;
}
void selection(string * population,string * parents, int populationSize, int parentsNumber) {
int i,j,k;
pair <int,string> fitnessTable[populationSize];
for(i=0;i<populationSize;i++) {
fitnessTable[i] = make_pair(fitness(population[i]),population[i]);
}
sort(fitnessTable,fitnessTable+populationSize,comparePair);
int roulette;
int taken[parentsNumber];
int sum = 0;
for(i=0;i<parentsNumber;i++) {
for(j = populationSize - 1;j>=0;j--) {
if(not exists(parentsNumber,taken,j)) {
sum += fitnessTable[j].first;
fitnessTable[j].first = sum;
}
}
roulette = rand() % fitnessTable[0].first;
j = 0;
while(exists(parentsNumber,taken,j)) {
j += 1;
}
while(roulette > fitnessTable[j].first and j<populationSize) {
if(not exists(parentsNumber,taken,j)) {
roulette -= fitnessTable[j].first;
}
j+=1;
}
parents[i] = fitnessTable[j].second;
taken[i] = j;
}
}
int newton(int n,int k) {
if (k==0 or n==k) return 1;
else return newton(n-1,k-1) + newton(n-1,k);
}
string mutate(string child) {
int d3 = rand() % 3;
string mutation = generateValue();
switch(d3) {
case 0:
child = mutation + child.substr(3,6);
break;
case 1:
child = child.substr(0,3) + mutation + child.substr(6,3);
break;
case 2:
child = child.substr(0,6) + mutation;
break;
}
return child;
}
string cross(string parent[2]) {
int i;
string child = "";
for(i=0;i<3;i++) {
child += parent[rand() % 2].substr(i*3,3);
}
if (child == parent[0] or child == parent[1]) {
string other;
if (child == parent[0]) other = parent[1];
else other = parent[0];
int d3 = rand() % 3;
switch(d3) {
case 0:
child = other.substr((rand() % 3)*3,3) + child.substr(3,6);
break;
case 1:
child = child.substr(0,3) + other.substr((rand() % 3)*3,3) + child.substr(6,3);
break;
case 2:
child = child.substr(0,6) + other.substr((rand() % 3)*3,3);
break;
}
}
int d1000 = rand() % 1000;
if (rand() % 100 == 0) {
child = mutate(child);
}
return child;
}
void crossover(string * parents,string * nextGen,int parentsNumber,int nextGenSize) {
int counter = 0;
int i,j;
for(i=0;i<parentsNumber;i++) {
if (counter >= nextGenSize) {
break;
}
else {
nextGen[counter] = parents[i];
counter +=1;
}
}
while(counter < nextGenSize) {
for(i=0;i<parentsNumber;i++) {
if (counter >= nextGenSize) {
break;
}
else {
for(j=i;j<parentsNumber;j++) {
if (counter >= nextGenSize) {
break;
}
else {
string couple[2];
couple[0] = parents[i];
couple[1] = parents[j];
nextGen[counter] = cross(couple);
counter += 1;
}
}
}
}
}
}
void genetic_algorithm(string * population, int populationSize, int parentsNumber,string * outcome, int outcomeSize) {
int iteration,i;
for(iteration=0;iteration<5;iteration++) {
string * parents = new string[parentsNumber];
selection(population,parents,populationSize,parentsNumber);
string * nextGen = new string[populationSize];
crossover(parents,nextGen,parentsNumber,populationSize);
delete[] population;
population = new string[populationSize];
for(i=0;i<populationSize;i++) {
population[i] = nextGen[i];
}
delete[] nextGen;
}
ranking(population,outcome,populationSize,outcomeSize);
}
int main() {
srand(time(0));
int i;
int populationSize = 500;
int parentsNumber = populationSize - 5;
string * population = new string[populationSize];
generatePopulation(population,populationSize);
string vegetablesForPlanting[20];
genetic_algorithm(population, populationSize, parentsNumber,vegetablesForPlanting, 20);
cout << "Wynik:" <<endl;
for(i=0;i<20;i++) {
cout << vegetablesForPlanting[i] << endl;
}
return 0;
}

BIN
images/13_05/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
images/13_05/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
images/13_05/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
images/13_05/12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
images/13_05/13.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
images/13_05/14.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
images/13_05/15.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/13_05/16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
images/13_05/17.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
images/13_05/18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
images/13_05/19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
images/13_05/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
images/13_05/20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
images/13_05/21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
images/13_05/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
images/13_05/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
images/13_05/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
images/13_05/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
images/13_05/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
images/13_05/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
images/13_05/9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
images/last_images/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
images/last_images/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
images/last_images/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
images/last_images/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
images/last_images/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
images/last_images/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
images/last_images/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
images/last_images/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
images/last_images/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
images/last_images/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
images/last_images/9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
images/obsluga.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

33
injectCode.py Normal file
View File

@ -0,0 +1,33 @@
import pickle
import sys
def prediction(warzywo, nawoz ,srodek, stan_wzrostu):
filename = 'decisionTree.sav'
tree = pickle.load(open(filename, 'rb'))
val = (tree.predict([[warzywo, nawoz, srodek, stan_wzrostu]]))
save(val)
def save(prediction):
pred = str(prediction)
plik = open('dec.txt', 'w')
plik.write(pred[1])
plik.close()
def decision(prediction):
if prediction == 0:
return "Nie_podejmuj_dzialania"
elif prediction == 1:
return "Zastosuj_nawoz"
elif prediction == 2:
return "Zastosuj_srodek"
elif prediction == 4:
return "Zbierz"
elif prediction == 5:
return "Roslina_juz_zgnila__zbierz_i_wyrzuc"
if __name__ == '__main__':
# Map command line arguments to function arguments.
prediction(*sys.argv[1:])

625
matrix.txt Normal file
View File

@ -0,0 +1,625 @@
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454

View File

@ -5,7 +5,7 @@ Ten dokument to raport z wykonanego drugiego zadania projektu zespołowego na pr
W skład zespołu wchodzą:
Tomasz Dzierzbicki,
Szymon Parafiński,
Karol Piotrowski,
Laura Piotrowska,
Jarosław Zbąski.
# Zasady poruszania się agenta po planszy