W czym się teraz programuje AI

0

Nadal Lisp przoduje ? A może prolog ? Wyniki w sieci nie są jednoznaczne, a może ktoś ma jakieś doświadczenia w tej sferze ?

1

AI do czego?

1

My na uczelni programowaliśmy w Matlabie (metody learnbpm, learnbp, trainbpx itd.).

Do rozpoznawania grzybów, rodzajów szkła itp. A do czego niby byś chciał @Wibowit :D ?

3

Uczenie maszynowe i data mining - kroluje Matlab oraz R do prototypowania i wizualizacji. Kod produkcyjny to glownie Java (bo sa frameworki do przetwarzania duzej ilosci danych jak Hadoop) ale takze C++.

0

Generalnie we wszystkim możesz, bo przecież kod AI opiera się na matematyce.

0

Biorąc pod uwagę, że poza ciężką teoretyką najwięcej AI jest chyba w grach, to nikt tam się w prologi i lispy nie bawi, bo i tak wszystko powstaje w C++.

2

Ale w grach często nie ma takiej "prawdziwej" sztucznej inteligencji. "If'y" i sekwencje w stylu "jeśli gracz jest w zasięgu, to go zauważ, odczekaj 2 sekundy, celuj i strzelaj, przy okazji odgrywając odpowiednie animacje szkieletowe" to nie jest sztuczna inteligencja. Do rozpoznawania znaków możesz np. użyć "modelu" perceptronu - kolega robił coś takiego na projekt - uczy się znaków z różnych czcionek, tak żeby potem móc rozpoznać znak który "narysuje" użytkownik - taki prosty jednoznakowy OCR.

0
Azarien napisał(a):

Biorąc pod uwagę, że poza ciężką teoretyką najwięcej AI jest chyba w grach, to nikt tam się w prologi i lispy nie bawi, bo i tak wszystko powstaje w C++.

Hmm, na pewno? Ja często czytałem narzekania, że sekwencje w grach są oskryptowane. Dla przykładu taki Unreal Engine 3 ma wbudowany UnrealScript.

0

Sekwencje to prosta rzecz :) Można to skryptować. Wiesz na czym polegają? Najprościej pokażę kawałek przykładowego Pythonowego kodu z pracy inżynierskiej:

# tworzenie interwalu przemieszczenia aktora w prawo
posRight=aktor.posInterval(1.0,(1.0,2.0,0.1))
# tworzenie interwalu przemieszczenia aktora w lewo
posLeft=aktor.posInterval(1.0,(-1.0,2.0,0.1))
# tworzenie interwalu dla zaladowanej animacji
anim=aktor.actorInterval("anim",startFrame=1,
endFrame=18,playRate = 1.5)
#tworzenie sekwencji ktora wykonuje animacje
#oraz przemieszcza aktora w prawo i lewo
sekwencja=Sequence(Parallel(anim,posRight),Parallel(anim,posLeft))
#nakazanie utworzonej sekwencji, by odgrywala sie
#w kolko
sekwencja.loop()

Parallel się wsadza do sekwencji (albo odgrywa samodzielnie) aby obie czynności objęte tym obiektem wykonywały się równocześnie.

Jak widać nie wymaga to dużo natywnego skryptowego kodu. Wszelkie przemieszczenia i animacje wykonuje silnik, który jest napisany w C++ :) My tylko skryptem definiujemy mu co ma robić. Silnik z przykładu - Panda 3D.

Masz jeszcze dla przykładu ruch kamery po krzywej (utworzonej w Blenderze), który też można wsadzić do sekwencji, czy też parallela:

self.krzywe = loader.loadModel("models/Krzywe.bam")
self.mopath1 = Mopath.Mopath()
self.curve1 = self.krzywe.find("**/a")
self.mopath1.loadNodePath(self.curve1)
self.cut1 = MopathInterval(self.mopath1, base.camera,duration=6, blendType = 'easeInOut')
0

U mnie na uczelni (która jest cała nastawione na Javę) AI piszemy w J.7 i Erlangu. Matlaba używamy tylko do przedstawienia specyfikacji projektu i dokumentowania rezultatów.

1

U nas w instytucie dominowała głównie Java, głównie do eksploracji dużych ilości danych. Mamy jednego zatwardziałego kodera C++, ale o C++ głównie gada, a pisze i tak w Javie, bo musi (jego kod w Javie wygląda paskudnie, więc boję się myśleć jak wygląda jego kod w C++).

0

Takie abstrakcje w Javie i C++? Koniec świata w Polsce już niedługo.
Aż się włos na głowie jeży. Dosłownie. Napiszę więcej: to jakiś koszmar z którego nie idzie się obudzić...

1 użytkowników online, w tym zalogowanych: 0, gości: 1