Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:piw08_prolog_java [2008/06/04 14:00] miw |
pl:miw:piw08_prolog_java [2019/06/27 15:50] (aktualna) |
* Należy stwożyć zmienną środowiskową SWI_HOME_DIR ze ścieżką do katalogu w którym jest zainstalowany SWIProlog. | * Należy stwożyć zmienną środowiskową SWI_HOME_DIR ze ścieżką do katalogu w którym jest zainstalowany SWIProlog. |
* Do zmiennej PATH należy dodać dodać ścieżkę do katalogu SWI_HOME_DIR\bin | * Do zmiennej PATH należy dodać dodać ścieżkę do katalogu SWI_HOME_DIR\bin |
| |
| |
| |
| |
| |
* Aby pojedynczo otrzymywać kolejno wyniki wywołujemy na zmiane dwie funkcje | * Aby pojedynczo otrzymywać kolejne wyniki wywołujemy na zmiane dwie funkcje |
| |
| |
| |
JPL w wersji nie wymaga bezpośredniej inicjalizacji silnika prologa, przy pierwszym stworzonym obiekcie jpl.Query dokona się to samo. Inicjalizować prologa trzeba tylko wtedy gdy chcemy, używać określonego modułu w prologu. | JPL w wersji nie wymaga bezpośredniej inicjalizacji silnika prologa, przy pierwszym stworzonym obiekcie jpl.Query dokona się to samo. Inicjalizować prologa trzeba tylko wtedy gdy chcemy, używać określonego modułu w prologu. |
| |
| |
| |
| |
nazwa_klasy Referencja new nazwa_klasy(parametry_funkcji_odzielone_przecinkami); | nazwa_klasy Referencja new nazwa_klasy(parametry_funkcji_odzielone_przecinkami); |
Jeśli chcemy stworzyć obiekt napisanej przez nas klasy pliki java muszą zostać umieszczone w odpowiednim katalogu względem pliku pl (nazwa package, do którego należy nasza klasa). Niestety nie da się korzystać z klas umieszczonych w plikach jar | Jeśli chcemy stworzyć obiekt napisanej przez nas klasy pliki class muszą zostać umieszczone w odpowiednim katalogu względem pliku pl (nazwa package, do którego należy nasza klasa). Niestety nie da się korzystać z klas umieszczonych w plikach jar |
| |
* jpl_call( +Ref, +Method, +Params, -Result) | * jpl_call( +Ref, +Method, +Params, -Result) |
| |
===== Interprolog ===== | ===== Interprolog ===== |
| |
| |
==== Java API ==== | ==== Java API ==== |
</code> | </code> |
| |
Daje możliwość pozwala na załadowanie logiki z dowolnego pliku prologowego do interpretera, można także wywołać: | Pozwala na załadowanie logiki z dowolnego pliku prologowego do interpretera, można także wywołać: |
| |
<code java> | <code java> |
| |
Pozwala odczytać zwrócony obiekt B jako integer A w Prologu. | Pozwala odczytać zwrócony obiekt B jako integer A w Prologu. |
| |
| |
| |
====== Porównanie ====== | ====== Porównanie ====== |
| |
* Łatwość programowania - JPL jest zdecydowanie prostszy w obsłudze, nie wymaga inicjalizacji maszyny wnioskującej, metody Java są intuicyjne | * Łatwość programowania - JPL jest zdecydowanie prostszy w obsłudze, nie wymaga inicjalizacji maszyny wnioskującej, metody Java są intuicyjne |
* Szybkość działania - w fazie testów | * Szybkość działania - testy wykazały, że nie ma różnicy w wykorzystaniu obu systemów. Uśrednione wartości testów pokazały, że czas wykonania operacji (rozwiązanie Sudoku) jest bardzo podobny (różnice rzędu 0,01). Pomijając wartości skrajne (prawdopodobnie spowodowane pracą w tle innych aplikacji) pojedyncze wyniki prawie zawsze różniły się o stałą wartość (|time(Interprolog_execution)-time(JPL_execution)|=const). |
* Wygoda - Interprolog nie posiada non-deterministic goal api, stąd wszelkie multiple-solutions trzeba generować w prologu i zwracać jako listę rozwiązań, która jest obiektem typu String w Javie i trzeba ją parsować, natomiast JPL generuje kolejne rozwiązania z poziomu Java poprzez kolejne wywołania tych samych 2 funkcji | * Wygoda - Interprolog nie posiada non-deterministic goal api, stąd wszelkie multiple-solutions trzeba generować w prologu i zwracać jako listę rozwiązań, która jest obiektem typu String w Javie i trzeba ją parsować, natomiast JPL generuje kolejne rozwiązania z poziomu Java poprzez kolejne wywołania tych samych 2 funkcji |
* Dostęp do konsoli interpretera Prologu - JPL musi mieć zdefiniowaną zmienną środowiskową (SWI_HOME_DIR), w której jest adres katalogu domowego SWI, w Interprologu w kodzie programu Java należy wywołać SWISubProcessEngine z parametrem jakim jest śćieżka dostępu do interpretera | * Dostęp do konsoli interpretera Prologu - JPL musi mieć zdefiniowaną zmienną środowiskową (SWI_HOME_DIR), w której jest adres katalogu domowego SWI, w Interprologu w kodzie programu Java należy wywołać SWISubProcessEngine z parametrem jakim jest śćieżka dostępu do interpretera |
* Łączność Prolog-Java - w JPL realizuje się to za pomocą 4 predykatów (tworzenie obiektów Java, wywoływanie funkcji, powiązanie obiektu Java ze zmienną w Prologu, ustalenie wartości zmiennej), w Interprologu działa to na zasadzie komunikacji synchronicznej przez Java Message | * Łączność Prolog-Java - w JPL realizuje się to za pomocą 4 predykatów (tworzenie obiektów Java, wywoływanie funkcji, powiązanie obiektu Java ze zmienną w Prologu, ustalenie wartości zmiennej), w Interprologu działa to na zasadzie komunikacji synchronicznej przez Java Message |
| |
| |
====== Przykłady programów ====== | ====== Przykłady programów ====== |
| |
| Programy testowane tylko w środowisku Windows |
| |
===== Interprolog ===== | ===== Interprolog ===== |
| |
Uruchomienie j.w. | Uruchomienie j.w. |
| |
| |
| |
===== JPL ===== | ===== JPL ===== |
SUDOKU | SUDOKU |
http://student.agh.edu.pl/~colesiu/jpl/Sudoku.rar | {{prolog_java_sudoku_jpl.zip}} |
| |
Przykład działania wywołania prologa w javie (GUI w javie i wnioskowanie w prologu). | Przykład działania wywołania prologa w javie (GUI w javie i wnioskowanie w prologu). |
| |
CAR.PL | CAR.PL |
http://student.agh.edu.pl/~colesiu/jpl/Test.rar | {{prolog_java_car_jpl.zip}} |
| |
Przykład działania wywołania javy w prologu (Okno startowe w javie wywołuje prologa, a prolog wywołuje kolejne dialogBoxy z pytaniami). | Przykład działania wywołania javy w prologu (Okno startowe w javie wywołuje prologa, a prolog wywołuje kolejne dialogBoxy z pytaniami). |
====== Problemy ====== | ====== Problemy ====== |
| |
| Do poprawy, --- //[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/06/11 13:10//: |
| |
| - https://ai.ia.agh.edu.pl/wiki/pl:miw:piw08_prolog_java#jpl cos nie tak z wersjami |
| - https://ai.ia.agh.edu.pl/wiki/pl:miw:piw08_prolog_java#inne prosze podac linki |
| - literowki |
| - cos nie tak: "Daje możliwość pozwala na załadowanie logiki..." |
| - co z porownaniem Szybkosci Dzialania, https://ai.ia.agh.edu.pl/wiki/pl:miw:piw08_prolog_java#porownanie |
| |
| |