2. AI w nauce
• sztuczna inteligencja (SI), ang. Artificial
Intelligence (AI), dział informatyki, którego
przedmiotem badań są reguły rządzące
inteligentnymi zachowaniami człowieka (np.
postrzeganiem, uczeniem się), tworzenie modeli
formalnych tych zachowań i symulującego je
oprogramowania.
PWN
3. AI w grach
Reguły rządzące inteligentnymi zachowaniami
przeciwników, ustalające stopień trudności rozgrywki.
4. AI w quasisymulatorach
Reguły rządzące inteligentnymi zachowaniami postaci,
w ściśle określonym, przewidywalnym środowisku.
5. Test Turinga
Prawdziwy człowiek zadaje pytania w języku naturalnym i
na podstawie odpowiedzi określa czy rozmawia z
człowiekiem, jeśli tak system przechodzi test pozytywnie.
Żaden system od 1950 roku nie przeszedł tego testu.
CZYLI NIE MA INTELIGENTNYCH SYSTEMÓW???????
6. AI - algorytmy
• Systemy ekspertowe
• Sieci neuronowe
• Algorytmy genetyczne
• Logika rozmyta
• Liczby pseudo losowe
7. AI - branża IT
• Oprogramowanie typu CAD
• Oprogramowanie służące do predykcji
najkorzystniejszych transakcji giełdowych
• Interaktywne mapy
• Oprogramowanie treningowe
• Efekty specjalne
8. AI - inne dziedziny
• Robotyka
• Logistyka
• Motoryzacja
9. AI - gry
• zachowania sterujące
• poszukiwanie ścieżek
• system trigerowania
• zarządzanie tworzeniem, usuwaniem,
parametryzowaniem jednostek
• priorytetowanie zadań
10. AI - gry
• sterowanie przepływ danych miedzy
jednostkami
• formacje
• taktyki
11. Zachowania sterujące -
Pojęcia
• Agent autonomiczny
• Zachowanie
• Wybór akcji
• Sterowanie
• Poruszanie
13. • Reaktywność - jest to tendencja do
reagowania na bodźce (psychologiczne
podejście ) lub inaczej wielkość reakcji
systemu w stosunku do bodźca
(cybernetyczne podejście)
• Wirtualność - zaprojektowane z myślą o
egzystowaniu w środowisku wirtualnym
14. Zachowanie
Pojedyncza lub zestaw decyzji w wyniku których
autonomiczny agent wykona pojedynczą lub zestaw akcji.
W większości przypadków będą to akcje składające się na
zachowanie spotykane u zwierząt lub ludzi w realnym
świecie. (ale nie muszą!)
15. Wybór akcji
• Prosty switch
• Maszyna stanów
• Logika rozmyta
• Hierarchiczne drzewo decyzyjne
18. Poruszanie
• Ręczne sterowanie animacjami
• Przekazywanie dyrektyw do maszyny
stanów
• Nisko poziomowe sterowanie Physics
Character Controllerem
• Parametryzowanie postaci
24. Unikanie
Unikanie jest analogiczne do pościgu z tym, że
należy unikać predykowanej pozycji. Czyli
kierunek obliczonej siły sterującej pościgu musi
być przeciwny.
29. Obwiednia na
płaszczyźnie
Załóżmy że mamy pewien zbiór punktów na płaszczyźnie.
Obwiednią nazwiemy pewien podzbiór punktów tworzący
bryłę wypukłą zawierający w sobie wszystkie punkty tego
zbioru.
31. Budowanie obwiedni
czyli QuickHull
int index1;
int index2;
math_vector arrZbiorPunktow[16];
for(int i = 0; i < 16; i++)
{
//szukam punktu index1 który jest najmniejsza
suma x i y i punktu index2 który jest
największą suma x i y
}
32. QuickHull
int arrPodzbior1[];
int arrPodzbior2[];
math_vector v_i1_i2 = arrZbiorPunktow[index2] - arrZbiorPunktow[index1];
for(int i = 0; i < 16; i++)
{
math_vector v_i1_actual = arrZbiorPunktow[i] - arrZbiorPunktow[index1];
float fCross = v_i1_i2.Cross(v_i1_actual).z;
if(fCross < 0)
arrPodzbior1[] = i;
else
arrPodzbior2[] = i;
}
//index1 i index 2 są to dwa pierwsze punkty obwiedni
33. QuickHull
int indexMaxArea;
for(int index in arrPodzbiorN)
{
if((fArea = area(index1, index, index2)) > maxArea)
{
maxArea = fArea;
indexMaxArea = index;
}
}
//indexMaxArea kolejny kunkt do obwiedni
34. Szybkie liczenie pola
powierzchni
float a = p1.Distance(p2);
float b = p2.Distance(p3);
float c = p3.Distance(p1);
float s = (a + b + c) * 0.5f;
a = s - a;
b = s - b;
c = s - c;
s = s * a * b * c;
if (s < 0)
return 0;
return sqrtf(s);
36. Kierunek podążania po
obwiedni
math_vector arrObwiednia[nIloscPunktow];
for(int i = 0; i < nIloscPunktow; i++)
{
//szukamy najbliższego celowi punktu na obwiedni
//nie może ten punkt należeć do agenta
}
int nAktualnieBadanyPunkt = najbliższy celowi punktu na obwiedni;
float fDystansUp = 0;
while(nAktualnieBadanyPunkt != ten punkt należeć do agenta)
{
fDystansUp += arrObwiednia[nIloscPunktow - 1].Dystans2D(arrObwiednia[nIloscPunktow]);
nIloscPunktow++;
}
37. Kierunek podążania po
obwiedni
int nAktualnieBadanyPunktDown = najbliższy celowi punktu na obwiedni;
float fDystansDown = 0;
while(nAktualnieBadanyPunktDown != ten punkt należeć do agenta)
{
fDystansDown += arrObwiednia[nAktualnieBadanyPunktDown - 1].Dystans2D
(arrObwiednia[nAktualnieBadanyPunktDown]);
nAktualnieBadanyPunktUp ++;
}
if(fDystansDown < fDystansUp*s_fWspoczynik)
{
vSilaSterujaca = nAktualnieBadanyPunktUp[nAktualnieBadanyPunktUp - 1] -
agent.vPozycja;
}
else
{
vSilaSterujaca = nAktualnieBadanyPunktDown[nAktualnieBadanyPunktDown + 1] -
agent.vPozycja;
}