Compare commits

..

5 Commits

Author SHA1 Message Date
a3b29c9fb4 Zaktualizuj 'Main.cpp' 2020-04-27 17:24:53 +00:00
8faa04ecb5 poprawiony movement oraz maxFloat 2020-04-26 22:57:03 +00:00
1bf1dc50b9 Zaktualizuj 'Main.cpp' 2020-04-26 18:45:44 +00:00
2603b36e3d Prześlij pliki do ''
3 testy start1,2,3
2020-04-26 17:23:22 +00:00
914bdcca0e Prześlij pliki do ''
Tested AStar
2020-04-25 18:08:03 +00:00
85 changed files with 122 additions and 7572 deletions

1049
Main.cpp

File diff suppressed because it is too large Load Diff

View File

@ -1,209 +0,0 @@
##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;
}
}
}
}
```

View File

@ -1,47 +0,0 @@
# Opis dokumentu
Ten dokument to raport z wykonanego podprojektu na przedmiot Sztuczna Inteligencja. Celem
zadania jest implementacja algorytmu genetycznego w projekcie o tematyce inteligentny traktor.
# Zastosowanie algorytmu
Algorytm został wykorzystany do wygenerowania zbioru roślin do zasadzenia na bazie zebranych wcześniej roślin
# Skrócony opis implementacji w projekcie wspólnym
* Na początku dla każdego pola zawierającego buraki, zostanie wygenerowany kod genetyczny roślin z tego pola.
![](images/test2_generowanie_burakow.png)
* Funkcja Move teraz zajmuje się również zbieraniem i wywoływaniem sadzenia roślin
![](images/move_zbieranie.png)
* Funkcja przypiszKod decyduje czy należy zasadzić jedną z modyfikowanych genetycznie roślin, czy należy zasadzić nową (losową).
![](images/przypiszKod.png)
* Gdy liczba zebranych buraków osiągnie określoną wartość, zostanie przeprowadzony algorytm genetyczny i powstanie tablica roślin do zasadzenia
![](images/wykonanie_algorytmu_gen.png)
# Opis algorytmu genetycznego
* Algorytm wykonuje 5 iteracji, w których dokonuje selekcji osobników populacji, które zostaną poddane rozrodowi i wytwarza kolejne pokolenie populacji. Po wyjściu z pętli metodą rankingu selekcjonuje najlepszą część ostatniego pokolenia.
![](images/genetic_algorithm.png)
* Selekcja odbywa się metodą ruletki. Obliczana jest wartość funkcji dostosowania dla każdego osobnika. Im lepsza wartość, tym większa szansa na wylosowanie.
![](images/selection.png)
* Funkcja dostosowania polega na wyliczeniu średniej arytmetycznej trzech wartości: smaku, rozmiaru i koloru rośliny, które są zakodowane w łańcuchu znaków.
![](images/fitness.png)
* Funkcja crossover zajmuje się wywołaniem krzyżowania odpowiedniej liczby osobników
![](images/crossover.png)
* Zastosowana została metoda krzyżowania równomiernego (uniform crossover) z małą modyfikacją, zmniejszającą szansę na to, że dziecko będzie "klonem" rodzica. Istnieje również mała szansa, że dojdzie do równomiernej mutacji (uniform mutation), w której losowa cecha dziecka zostaje wygenerowana na nowo.
![](images/cross.png)

View File

@ -1,211 +0,0 @@
# 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ę.

View File

@ -1,105 +0,0 @@
# 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)

File diff suppressed because it is too large Load Diff

View File

@ -1,606 +0,0 @@
#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;
}

View File

@ -1,712 +0,0 @@
#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
View File

@ -1,625 +0,0 @@
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

Binary file not shown.

View File

@ -1,625 +0,0 @@
.
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
.

View File

@ -1,165 +0,0 @@
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,
Laura Piotrowska,
Karol Piotrowski,
Jarosław Zbąski.
# Temat projektu i wybrane rozwiązanie

View File

@ -1,52 +0,0 @@
# 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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

View File

@ -1,33 +0,0 @@
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:])

View File

@ -1,625 +0,0 @@
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.67552455e-9 0.00126219853 0.21969625454
0.15760229181 2.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

@ -1,5 +0,0 @@
1. metoda: zbieranie warzyw (czy zbierac i czy nawozic) - Szymon (drzewa decyzyjne)
(?)2. metoda: srodek ochrony roslin i nawoz - decyzja, ktore uzyc
3. metoda: sadzic ziemniaki czy buraki
4. metoda: wyznaczanie celu dla traktora (do jakiej rosliny dojechac) - Tomasz (sieci neuronowe)
++stan gleby zaimplementowac

View File

@ -1,20 +0,0 @@
Implementacja mijanego czasu:
- tablica int odzwierciedlająca pola naszej kraty,
- z każdym ruchem traktora waga tego ruchu będzie dodawana do wszystkich pozycji wspomnianej tablicy, jeśli
na danym polu znajduje się roślina.
~ Efekt jest taki, że czas idzie do przodu, gdy porusza się traktor
Wstępnie ustalone zależności pomiędzy wartościami komórek tablicy intów, a stanami roślin znajdujących się na
odpowiadających im polach:
[1,15) - kiełek
[15,30) - młoda roślina
[30,60) - dojrzała
[60,85) - przejrzała
[85,100]* - zniszczona
*a może lepiej po prostu 85+?
Działanie nawozu:
- zmniejsza próg (albo progi) przejścia rośliny do kolejnego etapu (lub kolejnych etapów)

View File

@ -1,21 +0,0 @@
0 - brak
[1,15) - kiełek
[15,30) - młoda roślina
[30,60) - dojrzała
[60,85) - przejrzała
[85,100] - zniszczona
nawóz przyśpiesza wzrost (czas * stałaPrzyrosuNawozu) poleInt[0]=1
użyty tylko kiedy kiełek lub młoda (ale max 1)
środek zmienia granice rośliny poleInt[0]=2
użyty zawsze (ale max 1)
użyty środek i nawóz poleInt[0]=3
0 - brak
[1,15) - kiełek
[15,30) - młoda roślina
[30,70) - dojrzała
[70,90) - przejrzała
[90,100] - zniszczona

View File

@ -1,18 +0,0 @@
0 - brak
[1,20) - kiełek
[20,45) - młoda roślina
[45,85) - dojrzała
[80,100] - przejrzała
nawóz przyśpiesza wzrost (czas * stałaPrzyrosuNawozu) poleInt[0]=1
użyty tylko kiedy kiełek lub młoda (ale max 1)
środek zmienia granice rośliny poleInt[0]=2
użyty zawsze (ale max 1)
użyty środek i nawóz poleInt[0]=3
0 - brak
[1,20) - kiełek
[20,45) - młoda roślina
[45,100] - dojrzała

View File

@ -1,63 +0,0 @@
# Opis dokumentu
Ten dokument to raport z wykonanego drugiego zadania projektu zespołowego na przedmiot Sztuczna Inteligencja. Celem zadania jestzastosowanie strategii przeszukiwania stanów `A*` do problemu planowania ruchu agenta na kracie. Tematem projektu jest inteligentny traktor.
# Zespół
W skład zespołu wchodzą:
Tomasz Dzierzbicki,
Szymon Parafiński,
Laura Piotrowska,
Jarosław Zbąski.
# Zasady poruszania się agenta po planszy
* Agent nie może wejść na pole oznaczone jako '#', gdyż jest to granica mapy.
* Koszt wejścia na pole bez buraków oznaczone jako '.' wynosi 1.
* Koszt wejścia na pole buraków oznaczone jako 'B' wynosi 9.
* Agent może poruszać się do przodu i obracać się w lewo/prawo.
# Heurystyka i koszt w algorytmie przeszukiwania
Koszt f obliczany jest ze wzoru f=g+h, gdzie:
* g - suma wag należących do ścieżki
* h obliczne jest funkcją *calculateHValue*, która oblicza odległość w metryce Manhattan.
![](images/calculateHValue.png)
# Obroty traktora
Zwrot traktora jest zmieniany pod wpływem niezgodności porządanego kierunku ruchu z obecnym zwrotem w funkcji *CorrectMovement*
![](images/CorrectMovement.png)
# Funkcja isValid
Sprawdza, czy pole nie jest ścianą ('#').
![](images/isValid.png)
# Test celu
Funkcja isDestination sprawdza, czy agent osiągnął zadany cel.
![](images/isDestination.png)
# Funkcja aStarSearch
Jest to funkcja zawierająca główną pętlę strategii przeszukiwania.
![](images/aStarSearch.png)
Najpierw konfigurowane są początkowe parametry potrzebne do prawidłowego działania funkcji. Tworzone są dwie listy:
* **bool** *closedList[][]* , która jest tablicą z początkowymi wartościami False, która przechowuje informacje o tym, czy dana komórka została już odwiedzona.
* *openList*, która jest zbiorem par typu `<double, pair <int int> >`
W *cellDetails[i][j].parent_i* i *cellDetails[i][j].parent_j* zapisywane będą współrzędne poprzednika danej komórki
![](images/mainLoop.png)
Główna pętla pozostaje otwarta, dopóki *openList* nie będzie pusta. Pierwszą z instrukcji zawartych w pętli while jest zapamiętanie współrzędnych z pary z początku zbioru *openList*, zapisanie ich pod zmiennymi *i* i *j*, usunięcie pary ze zbioru i oznaczenie komórki o danych współrzędnych jako odwiedzoną.
Następnie do zmiennej *waga* przypisuje się wagę tego pola.
![](images/actionCheck.png)
Następnie po kolei dla wszystkich akcji ruchu następuje sprawdzenie za pomocą *isValid*, czy z obecnego stanu można tę akcję wykonać. Jeśli następnie powiedzie się test celu dla stanu komórki otrzymanej po wykonaniu danej akcji, zapisujemy adres poprzedniej komórki jako rodzica (poprzednika) obecnej, wykonujemy funkcję *tracePath* i zamykamy program. W przeciwnym wypadku obliczmy nowe *f*, wyliczając uprzednio *g* i *h*. Jeśli *f* osiągnęło już zbyt wysoką wartość, dodajemy do *openList* nową parę złożoną z nowego *f* oraz współrzędnych obecnego pola i nadpisujemy stare *f*, *g* i *h* nowymi i ustawiamy rodzica (poprzednika) obecnej komórki na adres poprzedniego pola.
# Funkcja tracePath
Ta funkcja składa się z dwóch funkcji while. W pierwszej z nich na stos *Path* odkładane są wszystkie adresy, które tworzą ścieżkę z celu do pola początkowego naszego agenta. Wykorzystujemy do tego wcześniej zapisane adresy poprzedników danych komórek w ścieżce. W drugiej pętli następuje translacja zebranych danych na faktyczny ruch agenta na planszy.
![](images/tracePath.png)