Bonjour et bienvenue sur le Statoil et pour parler, nous avons initialisé la carte.
Et maintenant, passons aux choses excitantes que nous créons la voiture et nous le faisons avec un cours, bien sûr.
Vous verrez que la classe est très pratique pour créer des choses qui ont beaucoup de propriétés, car vous pouvez
voir non seulement trouver des variables dans ma voiture, mais aussi des fonctions qui, bien sûr, sont celles qui feront que
la voiture passe à la position suivante. de gauche à droite ou aller tout droit.
Nous avons donc deux variables importantes pour décrire l’environnement. Par exemple, l’angle
qui correspond à l’angle entre l’axe des x et l’axe de la direction de la voiture.
Nous avons ensuite la rotation qui correspond à sa dernière rotation, soit 0 degré 20 degrés ou
moins 20 degrés.
Nous avons ensuite la vitesse, la coordonnée x du vecteur vitesse et les coordonnées y du vecteur
vitesse.
Et puis le vecteur de coordonnées vitesse x et vitesse Y puis nous avons les capteurs et les signaux.
Et c’est très important car notre appel aura trois capteurs: un capteur, deux capteurs et
trois capteurs, un capteur détectera s’il ya un sens devant la voiture.
Ensuite, le capteur 2 est le capteur qui détectera s'il y a un sens à gauche de la voiture et les capteurs 3
est le capteur qui détectera s'il y a un sens à droite de la voiture.
Et puis à partir de ces trois capteurs, nous obtenons les signaux que les signaux reçus par chacun des capteurs.
Donc, le signal 1 est le signal reçu par le capteur 1, le signal to est le signal reçu par le capteur 2
et le signal 3 est celui reçu par les capteurs 3
Et alors comment ça marche.
Le signal 1 est la densité d'envoi autour du capteur. Un signal est la densité du centre autour du capteur. Le
signal 3 est la densité d'envoi autour de la sensibilité et comment calculer cette densité de sable.
Eh bien c'est très simple.
Nous prenons de grands carrés autour de chacun des capteurs.
Ce sont en réalité des carrés de 200 sur 200 et pour chacun des carrés, nous divisons le nombre de uns dans le
carré par le nombre total de cellules dans le carré qui est 22 et 20 est égal à 400.
Et cela nous donne la densité de sable car celles-ci correspondent au centre.
Nous faisons cela pour chaque capteur et cela nous donne la densité de sable autour de chaque capteur.
Ce sont les signaux.
Très bien, nous avons maintenant tout pour détecter le capteur, puis nous avons la fonction de déplacement.
Et bien sûr, la fonction de déplacement est ce qui permettra au noyau d'aller à gauche en allant tout droit
ou à droite.
Alors passons en revue rapidement.
Nous avons ici la mise à jour de la position de la voiture avec sa dernière position qui est ici le passe
et le vecteur vitesse.
Donc, grâce au vecteur vitesse, la position sera mise à jour dans la direction du vecteur vitesse.
Ensuite, nous obtenons la rotation que nous verrons plus loin dans le code ici.
La rotation est égale à l'action à la rotation.
Il sélectionnera l'action puis se lancera dans la rotation.
Et donc cette autoprotection équivaut à une rotation ici.
C'est cette rotation que nous apprenons à savoir comment nous devons faire pivoter la voiture qui tourne à
gauche ou à droite.
Ensuite, nous mettons à jour l'angle que je rappelle est l'angle entre l'axe des x et l'axe de la direction
de la voiture.
Et puis, une fois que la voiture a bougé, nous devons mettre à jour les capteurs et le signal
car, bien sûr, lorsque la voiture vient de pivoter alors que les capteurs ont également pivoté, nous devons donc les
faire pivoter à l'aide de la fonction de rotation. la nouvelle position.
Et pourquoi avons-nous ce vecteur de 30 0.
C'est simplement parce que 30 est la distance entre la voiture et le capteur.
Vous savez est la distance entre la voiture et ce que la voiture détecte.
Et puis, une fois les capteurs mis à jour, il est temps de mettre à jour les signaux.
Et donc ici, nous faisons exactement ce que je vous ai expliqué.
Nous donnons les coordonnées x de notre capteur puis nous prenons toutes les cellules de Manston à plus 10, puis nous procédons
de même pour la coordonnée y, en prenant toutes les cellules de Madison à plus 10.
Ainsi, nous obtenons donc le carré de 20 x 20 pixels entourant le capteur et à l’intérieur du carré,
certains anciens.
Donc, fondamentalement, avec certaines des cellules parce que les cellules contiennent 0 ou 1 et comme dans un carré de 20 sur 20,
il y a 20 fois 20 = 400 cellules.
Eh bien, nous le divisons par 400 pour obtenir la densité des unités à l'intérieur du carré et c'est ainsi que nous obtenons le signal de
la densité des centres autour du capteur et nous procédons de la même manière pour le deuxième capteur et le troisième capteur pour
obtenir le deuxième signal et le troisième signal.
D'ACCORD.
Donc, c'est pour prendre le capteur et ensuite ces trois lignes de code sont très importantes.
C’est une autre raison pour laquelle nous souhaitons nous rendre à notre voiture lorsqu'elle atteint l’un des bords de
la carte.
Vous savez que nous ne voulons pas que la voiture se précipite contre certains murs et nous voulons donc la pénaliser
pour la punir lorsqu'elle se rapproche trop de Wall et c'est donc ce que nous faisons ici.
Si le premier capteur est plus grand que plus long moins 10, il est plus grand qu'ici parce que plus long est cette distance ici,
donc plus long moins 10 est ici.
Donc, si le capteur 1 agit plus que plus longtemps, Manison concerne tous les points qui sont ici.
C'est-à-dire si la voiture se rapproche du bord droit de la carte ou si le capteur de cellule agit moins que 10,
c'est ici si la voiture se rapproche du bord gauche de la carte ou si le capteur Y est plus grand
que plus grand moins 10 c'est le bord supérieur de la carte et / ou si Y est autocensuré inférieur à 10,
c'est le bord inférieur de la carte.
Et donc, si le capteur 1 atteint l'une de ces quatre arêtes, nous allons mettre le signal du capteur
lorsque le signal est envoyé.
Nous allons le définir pour être un.
Et qu'est ce que ca veut dire.
Cela signifie un son plein comme la pleine densité de sable.
C'est comme le pire et vous pourriez avoir.
Il y a tellement de sens que ça va arrêter votre voiture.
Donc, le signal sera un et donc la voiture recevra une terrible récompense.
D'accord.
Et puis nous faisons la même chose pour le signal aussi et signalons trois à partir du capteur deux instances trois.
D'accord.
Ensuite, nous créons la classe de jeu. C’est donc la classe qui crée le jeu, car jusqu’à présent, nous
n’avons créé que la voiture et nous devons bien sûr créer la carte.
Nous devons créer le jeu lui-même.
Donc, nous ne jouerons pas le jeu, c’est notre IA qui jouera le jeu et le jeu consiste
en fait à éviter les obstacles et à aller de l’aéroport au centre-ville et vice-versa.
Donc, dans cette classe de jeu, nous devons créer des objets comme la voiture, puis définir la fonction de mise
à jour.
C’est le plus important et nous allons nous concentrer sur cela maintenant car c’est
dans cette fonction de mise à jour que l’action que la voiture doit effectuer est sélectionnée et que chaque but est atteint.
Et cette action est exactement la sortie de notre réseau de neurones.
La nouvelle volonté de ce travail sera au cœur de notre intelligence artificielle.
Et ainsi, cette action est renvoyée par le cerveau de la voiture qui reste l’objet de notre classe humaine qui
se formera dans notre fichier d’IA.
Et cet objet a une méthode qui s'appelle update et qui prend en entrée le dernier mot et le
dernier signal.
Ainsi, le dernier mot est bien sûr le dernier mot atteint
par la voiture et le dernier signal est bien sûr le dernier signal des trois
capteurs.
Mais ensuite, j'ajoute deux autres entrées, à savoir l'orientation de la voiture par rapport à l'objectif.
Ainsi, par exemple, si la voiture se dirige vers l'objectif, l'orientation sera égale à zéro.
Si elle va légèrement à droite, l'orientation sera proche de 45 degrés.
Et si elle va légèrement à gauche, l’orientation sera proche de moins 45 degrés.
Voilà donc la force d'entrée de nos états d'entrée.
Et puis il y a une leçon posée qui est moins d'orientation.
Donc, généralement, les entrées du réseau neuronal sont indépendantes. Il n'y a pas de multicolinéarité, mais peu importe si c'est
le cas, c'est que le réseau neuronal corrigera cela avec les poids.
Mais je remarque quand même que l’ajout de cette orientation moins permet à la voiture
d’entraîner la voiture pour stabiliser l’accélération.
Vous savez que ce que nous faisons, c'est que l'IA n'explore pas toujours dans la même direction en ajoutant
cette orientation moins.
Nous nous assurons qu'il explore dans les deux sens à droite ou à gauche.
Et ainsi ce sont les trois signaux plus l’orientation et l’orientation moins sont les
cinq entrées de notre vecteur codé qui ira dans le réseau et notre vecteur d’entrée qui
ira dans le réseau et ensuite, dans le réseau est l'action à jouer.
Et chaque fois et la sortie est renvoyée par cette fonction de mise à jour qui contient
le réseau lui-même et la sortie du réseau. C’est pourquoi nous devons entrer le dernier
signal qui est l’état d’entrée et le dernier mot car l’action à jouer aussi dépend du dernier mot.
D'accord, puis nous mettons à jour la partition principale des mots que nous mettons à jour la rotation. Nous utilisons la fonction
de déplacement pour faire pivoter la voiture en fonction de l'action sélectionnée.
Nous prenons la distance de la voiture à la route et nous obtiendrons les positions des capteurs une balle sur deux dans
les deux réponses Rieker aux billes qui représenteront les capteurs sur la carte.
Vous verrez cela très rapidement.
Et puis ici, cette partie est très importante car c’est là que nous pénalisons la voiture si
cela prend un certain sens car, comme vous pouvez le constater, cela signifie que si la voiture a un bon sens, elle sera ralentie.
Nous réduisons donc sa vitesse.
Vous savez que sa vitesse est généralement de 6 comme vous pouvez le voir ici.
Et si cela continue dans un sens, ce sera celui qui sera ralenti à 1.
Vous verrez comment la voiture sera ralentie une fois que cela aura pris un sens.
Donc, c'est lent.
Et en plus, il reçoit une mauvaise récompense, il en obtient un moins que nous voulons.
Et c'est en fait la pire récompense que vous puissiez obtenir.
La meilleure récompense est une, le pire, selon nous, est moins une et la récompense est comprise entre moins 1 et plus 1.
Et puis sinon.
Et la voiture n'est pas sur du sable.
Eh bien, il conserve sa vitesse habituelle de vitesse du sexe et nous ajoutons autre chose.
S'il se rapproche de l'objectif, il obtiendra une récompense légèrement positive.
Et si on s’éloigne de l’objectif, on obtient une récompense légèrement négative moins 0. 2
Et puis dernier.
Conditions qui sont liées à la récompense.
Eh bien, c’est si la voiture se rapproche trop de l’un des bords, comme nous en avons parlé plus tôt.
Rappelez-vous quand nous avons parlé de capteur de carburant.
Eh bien, si la voiture s'approche trop du bord gauche de la carte, elle obtient moins un mot si elle s'approche trop
du bord droit de la carte, elle est récompensée moins un.
Et si vous vous approchez trop près du bord inférieur de la carte, vous en obtenez une ou moins une.
Et si vous vous approchez trop en haut à gauche de la carte, vous obtenez des récompenses moins une.
Donc, c'est une punition terrible.
Et vous verrez à quel point il est plein et rapide de ne pas se précipiter pour autre chose.
Très bien et ensuite, il s’agit de mettre à jour le départ lorsque l’objectif est atteint.
Donc, vous savez quand la voiture atteint l'aéroport qui est le premier à aller est le coin supérieur gauche de
la carte.
Tandis que l’objectif change en bas à droite de la carte, qui est au centre-ville.
Et c’est exactement ce que nous faisons ici: nous mettons à jour la coordonnée x du Crow et
les coordonnées blanches de l’appel, puis nous actualisons la distance entre la voiture et la voiture.
D'accord.
Et puis c'est moins important.
C'est juste une classe qui ajoutera les outils de peinture que vous connaissez pour que nous puissions peindre certaines routes ou certains obstacles sur
la carte qui sont davantage liés à K. V. pouvez jeter un oeil si vous voulez, je
vais vous fournir la version condensée de ce code et quelques références si vous voulez aller plus loin dans la façon de
faire cela avec skivvy.
Mais nous nous éloignons de l'intelligence artificielle, je ne vais donc pas entrer dans les détails.
Et c'est la même chose pour la dernière section de code avec la classe car, qui correspond exactement aux boutons d'API qui permettent de
sauvegarder et de charger.
C'est ce que nous faisons ici.
Toile transparente sécuritaire.
Et c’est très important pour nous de pouvoir sauver la journée que je sais sauver le cerveau afin que
vous puissiez le réutiliser plus tard en prenant la fonction de chargement qui est un autre outil que nous ajoutons sur la
carte pour charger le cerveau de la voiture est de charger la mémoire de la voiture comment naviguer dans la carte.
Et enfin, nous avons enfin la dernière de la dernière section de code qui gère tout
ce qui concerne la carte et l'IA elle-même.
Et en fait, c'est ce que nous allons faire maintenant.
Regardons tout ce que nous avons fait dans ce code.
Donc pour l'instant, l'IA n'est pas implémentée.
Le code aura donc un mouvement très aléatoire.
Cela ressemblera en réalité à un insecte, mais ne vous inquiétez pas, nous allons y remédier.
Normalement, nous allons l’entraîner à se déplacer comme une vraie voiture et l’entraîner à naviguer en suivant certaines routes et
en évitant certains obstacles.
Faisons cela.
Je vais tout sélectionner et exécuter.
Et voici la carte.
Et voici la voiture.
D'accord.
Voilà donc la petite chose que vous voyez ici qui ressemble à un insecte dans notre voiture.
Comme je vous l'ai dit, les actions sont totalement aléatoires.
Ainsi, chaque fois que la voiture sélectionne une action au hasard, elle doit aller directement à gauche ou à droite.
C'est pourquoi il fait des mouvements insensés et ressemble à un insecte.
Nous allons donc résoudre ce problème, bien sûr.
Et bien sûr, puisque l'IA est activée, ce n'est pas l'objectif qui est l'aéroport ici ou le centre-ville
en bas à droite de la carte.
Et nous allons réparer tout cela en faisant les IA qui implémenteront l'IA dans cette voiture ou cet insecte afin que vous puissiez
voir les trois balles ici, la jaune, la rouge et la blanche.
Ce sont nos trois capteurs.
Donc, c'est ce que nous allons détecter.
Il y a un parfum autour.
Et en parlant de parfum Eh bien, jetons-en.
Donc, pour ce faire, il me suffit de faire un clic gauche ici et vous savez en quelque sorte en enseignant encore à gauche.
Donc maintenant, j'ajoute du sable, nous pouvons en ajouter encore.
Donc, chaque fois que vous êtes fou, comme vous pouvez le voir, en mettre un dans le tableau central pour envoyer
un tableau contenant les coordonnées 00 de l'origine.
Et ici, il y en a beaucoup.
Et comme vous pouvez le voir, c’est bien de voir la voiture.
Nous venons de descendre et nous avons ralenti.
Donc, comme vous pouvez le constater maintenant, le rythme est très lent parce que cela va dans le sable.
Et maintenant, il essaie de s'échapper.
Et pour que vous sachiez ce que nous ferons, nous allons dessiner des routes et des routes de l’aéroport
au centre-ville et former la voiture pour rester sur la route et éviter les obstacles.
D'accord.
Et comme vous pouvez le voir, il y a un bouton pour effacer le sable, il y a un bouton de sauvegarde pour sauver
le cerveau de la voiture.
Et en fait, nous avons parlé de cette courbe fondamentale qui évite à votre modèle de préserver le
cerveau de votre voiture. Vous pouvez alors savoir quand vous laissez votre rhume ou éteindre votre ordinateur et que
vous souhaitez y revenir.
Vous pouvez utiliser le bouton de chargement pour charger votre mode qui consiste à charger le cerveau et à obtenir
les trains AI de votre voiture.
D'accord, je suis maintenant impatient de commencer à fabriquer l'IA.
Ce sera très amusant.
Nous allons créer notre réseau de neurones et punir la voiture dès qu’elle ne fera pas ce que nous voulons.
Faisons cela à partir du prochain tutoriel.
Et jusque-là, profitez-en.