Este necesar să se scrie un sistem care să poată lua decizii pentru un personaj care poate întâlni unul sau mai mulți dușmani. Sistemul poate fi cunoscut:
starea de sănătate a personajului în procente;
Răspunsul ar trebui să fie sub forma uneia dintre acțiunile:
ascunde (pentru un atac brusc);
nu face nimic.
Pentru instruire vom face o masă # xAB; lecții # xBB;:
Pistol de sănătate pentru sănătate
50% 1 1 Atac
90% 1 2 Atac
80% 0 1 Atac
30% 1 1 Ascundere
60% 1 2 Ascunde
40% 0 1 Ascundere
Acum ne vom învăța INS-ul și îl vom salva în dosar:
public static void principal (String [] args)
// Pentru a construi un INS nou, trebuie să creați o listă de straturi
listă
layerList.add (Layer.create (3, ActivationFunction.FANN_SIGMOID_SYMMETRIC, 0.01f));
layerList.add (Layer.create (16, ActivationFunction.FANN_SIGMOID_SYMMETRIC, 0.01f));
layerList.add (Layer.create (4, ActivationFunction.FANN_SIGMOID_SYMMETRIC, 0.01f));
Fann fann = Fann nou (layerList);
// Creați un antrenor și definiți algoritmul de învățare
Trainer instructor = Trainer nou (fann);
/ * Vom lua lecții din fișier, cu numărul maxim de
cicluri 100000, prezentând raportul la fiecare 100 de repetări și realizări
erori mai mici de 0,0001 * /
trainer.train (fișier nou ("train.data"). getAbsolutePath (), 100000, 100, 0.0001f);
Un INS este format din straturi de neuroni. Primul strat este neuronii # xAB; receptori # xBB; sau neuroni ai datelor de intrare. Ultimul strat de ieșire a neuronilor. Toate celelalte sunt straturi ascunse. În cazul nostru, primul strat are 3 neuroni:
nivelul de sănătate (0,1-1,0);
prezența armelor (1-este, 0-nu);
Obiectul clasei Fann este o rețea neuronală, care este creată pe baza straturilor create anterior.
Obiectul de clasă al instructorului încapsulează algoritmii de învățare ale rețelei neuronale transmise când formatorul este creat. După ce ați învățat, nu uitați să îl salvați într-un fișier.
Pentru a verifica formarea noastră, utilizați următorul cod:
public static void principal (String [] args)
Fann fann = nou Fann ("ann");
1. Numărul de condiții poate să nu fie static. Ie de exemplu, în unele cazuri nu ne pasă de prezența unei arme - rezultatul nu depinde de aceasta. În consecință, este necesar să se țină cont și să se simplifice algoritmul. Acest lucru va crește viteza de luare a deciziilor.
2. Ce ar trebui să fac dacă există lecții conflictuale? Vskidku, soluția poate fi selectată pe baza teoriei probabilității: de exemplu, în cazul în care aceleași condiții de intrare de 2 ori noi trebuie să „atac“ și 1 de timp „de funcționare“, funcția trebuie să fie în 66,6% din cazuri înapoi la „atac“. Ie aveți nevoie de o randomizare!
3. Sistemul nu ia în considerare experiența acumulată (numărul de lecții). Să presupunem că am avut doar o lecție, care, cu un pistol și doi adversari, a revenit "atac" și 1000 de lecții "pentru a alerga". Ie mai multe lecții cu arma deloc. Iar când apare situația: există un pistol și doar un adversar - funcția se poate întoarce "alerga", deoarece deplasarea va fi în direcția "alerga". Vom aminti această experiență și vom exacerba situația. Ca urmare, botul nostru va fi înclinat la lașitate.
Și dacă este simplist, atunci întreaga problemă se reduce la găsirea unei astfel de funcții F
pentru un set de (x) = y cunoscut
Tot felul de cuvinte noi, cum ar fi "rețelele neuronale" și "inteligența artificială" - se aruncă la problema obișnuită de aproximare! ))
Extindeți sucursala 1
Rețeaua neuronală nu funcționează în acest fel, este alimentat la datele din cloud în toate situațiile, și se adaptează și se schimbă pentru a multumi pe toata lumea structura sluchayam.I ea va fi mai ușor decât buchet-o funktsii.Neyroset de programe de neuroni, fiecare neuron de mai multe intrări , conexiunile cu alți neuroni și o ieșire mergând la un alt neuron. Structurally și din calcule acest lucru este mai simplu, IMHO.