Calcul du meilleur tour [IA]

Inscrit
8 Septembre 2017
Messages
36
Reactions
8
#1
Bonjour à tous, je développe depuis 3 mois l'Ia de mon serveur. Au début j'ai fait des grandes fonctions avec beaucoup de condition pour arriver à un résultat très très bien.
Le soucis est que au fur et à mesure d'ajout de critère (résistance etc...) cela devient de plus en plus compliqué.

Ca fait 1 semaine que je planche sur une formule mathématique qui me donnerait une valeur suivant plusieurs critère.
Actuellement mon Ia se résume à 6 lignes de codes pour faire la moitié de mon Ia y'a quelques mois.

Je voulais savoir si vous avez connaissance d'un algorithme de calcul qui me faciliterait la tâche. J'ai peur que ma formule mathématique est pas mal de dérèglement, qui, contrairement aux conditions difficile à évaluer suivant les conditions.

Je vous remercie de la lecture :)
 
Inscrit
18 Février 2017
Messages
149
Reactions
18
#2
montre nous ton code afin que l'on puisse t'aider.
 
Inscrit
3 Janvier 2017
Messages
32
Reactions
1
#3
Bonjour à tous, je développe depuis 3 mois l'Ia de mon serveur. Au début j'ai fait des grandes fonctions avec beaucoup de condition pour arriver à un résultat très très bien.
Le soucis est que au fur et à mesure d'ajout de critère (résistance etc...) cela devient de plus en plus compliqué.

Ca fait 1 semaine que je planche sur une formule mathématique qui me donnerait une valeur suivant plusieurs critère.
Actuellement mon Ia se résume à 6 lignes de codes pour faire la moitié de mon Ia y'a quelques mois.

Je voulais savoir si vous avez connaissance d'un algorithme de calcul qui me faciliterait la tâche. J'ai peur que ma formule mathématique est pas mal de dérèglement, qui, contrairement aux conditions difficile à évaluer suivant les conditions.

Je vous remercie de la lecture :)
Bonjour,

Je n'ai jamais travaillé sur une IA D2 pour le moment, mais tu as quelques algos connus qui peuvent t'aider :
  • MinMax : Avec quelques optimisations comme l'élagation alpha/beta, killer move...
  • DQN : C'est la combinaison du Q-Learning (algorithme d'apprentissage par renforcement) avec les Réseau de Neurones (https://storage.googleapis.com/deepmind-media/dqn/DQNNaturePaper.pdf). L'avantage avec cette solution est que ton IA apprendra à jouer toute seule au fur et a mesure des parties.
 
Inscrit
6 Avril 2016
Messages
85
Reactions
40
#4
Tu pourrais utiliser les algorithmes génétiques :p ça serait intéressant a penser! je ne sais pas si le résultat serait concluant mais ça serait un concept innovant !
 

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#5
Non, par pitié n'utilisez pas d'algos génétiques. Ca demande BEAUCOUP d'itérations avant d'avoir quelque chose d'acceptable.

Le plus simple et efficace c'est d'avoir une fonction d'objectif (genre la somme des vies des persos - la somme des vies des adversaires), et d'essayer de la maximiser à la fin du tour de jeu. Ensuite on peut rajouter d'autres choses, du genre la distance aux monstres, les buff etc…
Ce sont des heuristiques très simples mais très efficaces.
 
Inscrit
8 Septembre 2017
Messages
36
Reactions
8
#6
Non, par pitié n'utilisez pas d'algos génétiques. Ca demande BEAUCOUP d'itérations avant d'avoir quelque chose d'acceptable.

Le plus simple et efficace c'est d'avoir une fonction d'objectif (genre la somme des vies des persos - la somme des vies des adversaires), et d'essayer de la maximiser à la fin du tour de jeu. Ensuite on peut rajouter d'autres choses, du genre la distance aux monstres, les buff etc…
Ce sont des heuristiques très simples mais très efficaces.
Oui après c'est clairement pareil que ce que j'ai fait en faisant une formule mathématique. Le problème reste le fait que l'Ia peut être lente étant donné que je boucle en premier toutes les cases dans la limite de pm disponible, les sorts et les énnemies.
Ca fait une très grosse boucle mais je ne pense pas avoir d'autre choix
 
Inscrit
3 Janvier 2017
Messages
32
Reactions
1
#7
Non, par pitié n'utilisez pas d'algos génétiques. Ca demande BEAUCOUP d'itérations avant d'avoir quelque chose d'acceptable.

Le plus simple et efficace c'est d'avoir une fonction d'objectif (genre la somme des vies des persos - la somme des vies des adversaires), et d'essayer de la maximiser à la fin du tour de jeu. Ensuite on peut rajouter d'autres choses, du genre la distance aux monstres, les buff etc…
Ce sont des heuristiques très simples mais très efficaces.
Oui mais une fois que tu as terminé l'apprentissage tu n'auras plus que le forward a faire et ça devrait être rapide (dans la mesure ou on a des entrées et des sorties du RN qui ne sont pas spécifique a certaines situations).

Je pense que le résultat peut ne pas être trop mauvais.

Je me serai plus penché sur l'apprentissage par renforcement, d'où ma proposition sur le DQN.

Actuellement je suis en train de développer une IA Starcraft 2 via pysc2, et ça fonctionne pas trop mal. ;)
 
Haut Bas