Emacs Artificial General Intelligence Algorithmic Game Theory: Prediction Markets (po polsku) Systemy Inteligentnych Agentów
|
public class Simple { public static int main(int Grid[][]) { int eval = 5; /* Cała tablica jest rozmiaru 8×8. * Maksymalne indeksy tablicy to Grid[7][7]. * * Pionki białe mają wartość 1 * przykład sprawdzenia * if(Grid[j][k] == 1) * * Damka pionków białych ma wartość 3 * przykład sprawdzenia * if(Grid[j][k] == 3) * * Pionki czarne mają wartość 2 * przykład sprawdzenia * if(Grid[j][k] == 2) * * Damka pionków czarnych ma wartość 4 * przykład sprawdzenia * if(Grid[j][k] == 4) * */ //Przykład int waga_pionka = 50; int waga_damki = 150; for (int j = 0; j < 8 ; j++) { for(int k = 0; k < 9; k++) { if(Grid[j][k] == 1) eval = eval + (waga_pionka * −1); if(Grid[j][k] == 2) eval = eval + (waga_pionka * 1); if(Grid[j][k] == 3) eval = eval + (waga_damki * −1); if(Grid[j][k] == 4) eval = eval + (waga_damki * +1); } } // zwraca wartość funkcji oceny pozycji return eval; } } Nazywam się Arkadiusz Stopa i jestem autorem apletu z warcabami, który jest realizowany w ramach kursu praca dyplomowa u Pana dr W. Paluszyńskiego. Poniżej znajduje się krótki opis wprowadzający w działanie aplikacji. Aplet znajduje się na stronie: donyc.pop.e-wro.pl/checkers Reguły gry: 1) Zwykłe pionki mogą się poruszać (i bić) tylko do przodu (dozwolone bicia podwójne, potrójne, itd.). 2) Damki mogą się poruszać (i bić) do przodu oraz do tyłu. 3) Damki nie mogą przeskakiwać o kilka pól. 4) Wygrywa gracz, który zbije wszystkie pionki przeciwnika. 5) W sytuacji gdy, ruch gracza zostanie zablokowany (sytuacja bez wyjścia), wygrywa przeciwnik. 6) W przypadku wykonania 60 ruchów bez bicia - remis (gra nierozstrzygnięta). Wymagania: 1) JRE (Java Runtime Environment) i JDK (Java Development Kit) - obsługa polecenia ‘javac’ do kompilacji plików ‘.java’. Interfejs użytkownika i uruchomienie gry: 1) Wybieramy tryb gry: ‘Manual’ - ręczne, ‘Function’ - wybrana funkcja z pola wyboru ‘Eval. function’. 2) Ustawiamy poziom zagłębienia przeszukiwania Min-Max w polu ‘Level’. 3) ‘Eval. function’: ‘implemented’ - funkcja zaszyta w kodzie (mało efektywna), ‘java’ - odblokowuje edytor po prawej stronie, w którym można wprowadzić funkcję napisaną w języku JAVA. Klasa musi się nazywać Simple i zawierać metodę ‘main’ typu ‘int’, która zwraca wartość int. ‘javaScript’ - odblokowuje edytor po prawej stronie, w którym można wprowadzić funkcję napisaną w języku JavaScript (na niektórych maszynach występuje błąd ‘acces denied’). 4) ‘Restart’ - uruchomienie algorytmu dla ustawionych parametrów. 5) Możliwa zmiana szybkości ‘Speed’, trybów animacji ‘Animation’ oraz trybów log (dziennika zdarzeń) - wyświetlanie i zapis. 6) ‘Open’ umożliwia wczytanie pliku tekstowego do edytora (funkcji oceny pozycji). 7) ‘Save As…’ pozwala na zapis funkcji z edytora. Przykładowe ćwiczenia z apletem: 1) Ćwiczenie poglądowe. Ustawiamy P1 ‘Manual’ i P2 ‘Function’ z zaimplementowaną funkcją ‘Implemented’. Zmieniamy poziomy zagłębienia (3–5) i gramy przeciwko zaimplementowanej (przez autora) funkcji oceny pozycji. 2) Ustawiamy P1 ‘Manual’ i P2 ‘Function’ z ustawioną funkcją ‘java’. Wpisujemy kod funkcji oceny pozycji w edytorze. Klikamy na ‘Restart’ i gramy przeciwko utworzonej przez siebie funkcji. 3) Ustawiamy P1 ‘Function’ i P2 ‘Function’ z ustawioną funkcją ‘java’. Wpisujemy kod funkcji oceny pozycji w edytorze. Klikamy na ‘Restart’ i obserwujemy grę wpisanej funkcji z tą samą funkcją. Błądy/braki w aplecie: 1) Brak kilku ‘testów’ - rozgrywki kilkukrotne dla danych funkcji. 2) Interpreter w javascript. Lokalnie chodzi, na sieci może występować ‘acces denied’. Mimo to proszę spróbować uruchomić algorytm (przycisk ‘Restart’). Jeżeli są inne komunikaty niż ‘acces denied’, to znaczy, że kompilator działa i pokazuje komunikat o błędzie w kodzie. 3) W laboratorium UNIX pojawił się błąd z wersją JRE (Java Runtime Environment), która zadecydowała o tym, że aplet nie chodził. Po skompilowaniu całej paczki w innej wersji JRE, błąd zniknął. W przypadku ewentualnych zacięć apletu (podczas wykonywania algorytmu), proszę kliknąć na przycisk ‘Stop’ i ponownie kliknąć ‘Restart’. Jeżeli znana jest przyczyna (lub wyjątek z Javy, który można podejrzeć w ‘Java Console’), to bardzo proszę o odnotowanie jej. Tak jak napisał Pan doktor Witold Paluszyński, aplet jest w wersji Beta, więc w razie problemów i niepowodzeń - proszę o wyrozumiałość. Wszelkie uwagi i komentarze są mile widziane. Z poważaniem Arkadiusz Stopa |