Forum FFL-ASL
ASL pour les nuls … et les autres !

Programmation d'un ASL sur PC.

Hors ligne Hervé

  • 7+1
  • *
    • Messages: 26
    • +0/-0
Les explications sont claires !! merci ! je lirai le reste demain car je vais dormir !  En tout cas, merci greuh ... Je suis impatient d'arriver à demain pour lire tes messages....

A bientôt,

Hervé


Hors ligne Loris

  • PIN
  • 10-2
  • *
    • Messages: 603
    • +5/-0
  • The last doomed partisan of paäle oblivion
Ok. Merci!
Hervé a pigé, c'est celui pour qui je désirais être clair.

Donc, maintenant, on sait calculer à quel point une solution "est pas bonne", puisque la solution idéale aurait une valeur de 0 et que chaque contrainte violée augemente cette valeur.

Après l'espace des solutions et la contrainte, le dernier point essentiel est le Voisinage. C'est le point CLEF d'une bonne MH, car ce sont les paramètres qu'on va lui donner qui feront ou non la bonne solution.
Un voisinage est une liste d'opérations unitaires que l'on peut effectuer sur l'espace des solutions. Une opération unitaire (O.U.) permet de passer d'une solution à une autre.
Pour reprendre l'analogie du cube du vieil erhno rubik, une OU est un mouvement du cube, c'est à dire "faire tourner" l'une des "roues" du cube...
Dans le cas d'ASL, il s'agit d'un tir, d'un mouvement, d'une réparation, etc. Mais l'important est le mot unitaire (vue l'immense possibilité d'actions dans ASL, va falloir soit segmenter le problème en sous problèmes avec une MH dédiée, soit concevoir la MH la plus complexe que je connaisse).
( J'y repense maintenant, mais on a pondu un site lors de notre projet avec des fiches explicatives moins claire mais plus péchues: http://membres.lycos.fr/projetdi/ )
Maintenant qu'on a ces OU, on leur affecte une probabilité.
On fait telle OU avec telle probabilité, telle OU avec telle autre, etc.
La somme des probas faisant 1 (ou 100% de chances).
C'est l'élément aléatoire du truc, et il doit être créé avec énormément de soin.

Maintenant, que fait on? Ben c'est très simple!
On définit une "température" (le 'recuit simulé' est à l'origine une simulation du mouvement des atomes dans un métal en train de refroidir).
Soit le nombre d'itérations $i.
A chaque itération, on lance un tirage au hasard donnant une OU.
On l'applique sur l'ordonnancement qu'on avait au départ (qui est à définir aussi, mais c'est une autre histoire, aussi complexe que la MH).
On calcule le poid de la solution générée.
Si elle est meilleure que la précédente, on la garde et on incrémente $i.
Si elle est moins bonne, on l'accepte quand même, selon une probabilité qui suit une courbe descendante en fonction du nombre d'itérations. Plus $i est grand, moins on accepte les mauvaises solutions.
Pourquoi? Parce qu'on veut éviter les minimums locaux et qu'une "mauvaise solution" est peut être le premier pas vers un minimum global (quand on cherche à résoudre le rubik's cube, on est bien obligé de parfois détruire ce qu'on avait arrangé pour pouvoir améliorer).

Et quand la solution ne change plus, on s'arrête.

On peut définir l'espace des solutions comme un terrain accidenté, et notre MH est un marcheur. Notre marcheur cherche à aller dans la vallée la plus profonde. Au début, il a la patate, il hésite pas à gravir des montagnes et collines pour sortir des vallées peu profondes... Mais à la fin de la journée il se fatigue et descend au fond de la vallée qu'il a finalement atteinte.

On peut améliorer la MH en lui faisant mémoriser les dix dernières solutions et en lui interdisant de revenir à l'une de ces solutions (recuit avec "queue": la MH refuse de se marcher sur la queue), on peut aussi faire travailler une MH sur 10 solutions de départ et choisir la meilleure ("les fourmis"), etc.

C'est un truc assez simple dans son idée de base, mais assez complexe à mettre en oeuvre. Par contre, les résultats sont incomparables. C'est très puissant.

Je ne sais pas si cela peut être appliqué à ASL, ou si du Branch&Bound ou autre théorie des graphes ne sera pas plus simple et efficace (les IA sont souvent des arbres/graphes).

Je te souhaite un très grand courage pour l'oeuvre titanesque (même sans MH) dans laquelle tu te lances.
Bravo!

greuh.
-"J'ai conduit des tracteurs, des batteuses, et toi qui parlais de guerre, j'ai même conduit un char Patton."
-"Z'est bas ma marque brévérée..."
~Les Tontons Flingueurs
==
T1 Gavin Take
Tac22 Ils ont tiré sur Odessa...


Hors ligne SBF Erick

  • 9-1
  • *
    • Messages: 192
    • +0/-0
    • http://perso.club-internet.fr/elryx/
Citation de: greuh
En gros, vous voyez bien ce qu'est un Rubik's Cube?
Sinon cliquez là: http://www.arrrr.com/photos/rubiks/3.jpg

Il est bizarre ton Rubik's cube...


Hors ligne SBF Erick

  • 9-1
  • *
    • Messages: 192
    • +0/-0
    • http://perso.club-internet.fr/elryx/
Citation de: greuh
Je te souhaite un très grand courage pour l'oeuvre titanesque (même sans MH) dans laquelle tu te lances.
Bravo!

Plutôt que de se perdre en conjectures, jetez déjà un coup d'oeil à JASL, après vous pourrez en débattre (http://www.thuring.com/asl/jasl/).
comme le dit Xavier :
Citation de: Xavier 658
JASL est loin d'être au point...

Le prorammeur semble travailler seul et être assez indépendant...
Dans la dernière version (nov 2004), on sent quand même que l'on est en train de faire de l'ASL, mais l'IA est assez déplorable... Pas mal de règles sont implémentées.
Enfin, faites une partie puis vous pourrez donner votre opinion et peut être proposé votre aide au programmeur (Lars Thuring).


Hors ligne Dogan

  • Administrateur
  • 10-3
  • *
    • Messages: 849
    • +4/-0
    • http://www.cote1664.net
Un autre problème à prendre en compte est que pour programmer un ASL avec IA il faut que le/les programmeur(s) soit déjà bien rompu au jeu afin de prendre en compte toutes les petites astuces du jeu qui sont fondamental dans une partie au-delà du stade débutant.
Sinon effectivement JASL est déjà en cours de programation et plutot avancé donc si vraiment vous voulez vous y coller (good luck, parce que MH ou pas....ca va être la fête) donner un coup de main avec ce qui existe déjà.
The only thing more accurate than incoming enemy fire is incoming friendly fire.


Hors ligne PAT

  • 8-0
  • *
    • Messages: 70
    • +0/-0
Salut,

Sur un plan pratique, la technologie ne permet pas encore d'envisager le traitement algorithmique d'une séquence de jeu d'ASL.
Les milliards de possibilités induites simplement par une phase de mouvement à 10 pions amis, sur 100 locations, face à 10 pions ennemis ne peuvent être traitées en un labs de temps suffisant.

Cela a été la réflexion faite par Rodney Kinney au moment de réaliser VASL. Il était parti pour faire un ASL informatique, et puis devant la puissance des algorithmes à développer, il avait reculé pour se limiter à une IHM. Rien que cette Interface Homme-Machine a été un boulot colossal pour aboutir à un résultat salué par la communauté ASLienne. Je reste pantois pour ma part devant la beauté du checklos. Les amateurs apprécieront.

Je trouve pour ma part que JASL est un excellent point de départ. On peut dire que l'ensemble des règles de base (chap A) sont modélisées dans l'application. C'est déjà beaucoup, croyez moi. Mais on peut voir que même sur un scénario simple (à priori) comme "The Guards counter-Attack", il n'y a pour ainsi dire pas d'AI, enfin rien de comparable même avec le plus débutant des newbies.

Comme toujours en informatique, tout part du besoin fonctionnel. C'est d'abord et avant tout cette partie qui doit être traitée en premier. Avant d'essayer de résoudre le moindre aspect technique.
Le RB est un bon point de départ, à priori, mais il n'est certainement pas suffisant.

On est encore loin d'un ASL informatique, mais je suis sûr qu'on en verra un un jour. Et un bon !
O combien d'actions, combien d'exploits célèbres
Sont demeurés sans gloire au milieu des ténèbres.

Corneille - Le Cid


Hors ligne Loris

  • PIN
  • 10-2
  • *
    • Messages: 603
    • +5/-0
  • The last doomed partisan of paäle oblivion
Je suis d'accord: filer un coup de paluche à l'auteur de JASL permettrait d'avoir un projet qui avance vite au lieu de 2 qui avancent lentement. De plus, JASL a déjà une IHM faite. Seul le travail sur l'IA reste à faire (enfin, j'ai pas vérifié, je me base sur ce que tous ont dit ici à ce sujet).

N'exagérons rien, sinon:
les possibilités de 10 pions amis sont effectivement nombreuses, mais elles sont traitables car unitairement simples (surtout avec les machines de guerre que chacun a pour PC aujourd'hui). Ce qui m'inquiète surtout, c'est le calcul de la LOS à chaque test. Elle doit couter cher en temps de calcul.
Le laps de temps de calcul est donc raisonnable si c'est bien codé et modélisé intelligemment. Et c'est là que le bât blesse: c'est très difficile à modéliser.
Après, le test de toutes les possibilités est faisable par MH.

greuh.
-"J'ai conduit des tracteurs, des batteuses, et toi qui parlais de guerre, j'ai même conduit un char Patton."
-"Z'est bas ma marque brévérée..."
~Les Tontons Flingueurs
==
T1 Gavin Take
Tac22 Ils ont tiré sur Odessa...


Hors ligne Dogan

  • Administrateur
  • 10-3
  • *
    • Messages: 849
    • +4/-0
    • http://www.cote1664.net
Citation de: greuh

N'exagérons rien, sinon:
les possibilités de 10 pions amis sont effectivement nombreuses, mais elles sont traitables car unitairement simples (surtout avec les machines de guerre que chacun a pour PC aujourd'hui). Ce qui m'inquiète surtout, c'est le calcul de la LOS à chaque test. Elle doit couter cher en temps de calcul.
Le laps de temps de calcul est donc raisonnable si c'est bien codé et modélisé intelligemment. Et c'est là que le bât blesse: c'est très difficile à modéliser.
Après, le test de toutes les possibilités est faisable par MH.

greuh.


cf Close Combat proche d'ASL dans son layout (des squads et des vehicules) et avec une fonction checkloss.
The only thing more accurate than incoming enemy fire is incoming friendly fire.


Hors ligne Hervé

  • 7+1
  • *
    • Messages: 26
    • +0/-0
C'est extrèmement instructif de vous lire et de connaitre les point de vue et expériences de chacun.
Je vous informerai de l'avancement de mon affaire.

Merci à tous pour tous ces conseils....Ils me seront surement très utiles.

Hervé


Hors ligne SBF Erick

  • 9-1
  • *
    • Messages: 192
    • +0/-0
    • http://perso.club-internet.fr/elryx/
Citation de: Dogan
Un autre problème à prendre en compte est que pour programmer un ASL avec IA il faut que le/les programmeur(s) soit déjà bien rompu au jeu afin de prendre en compte toutes les petites astuces du jeu qui sont fondamental dans une partie au-delà du stade débutant.

Ceci ne me parait être le point le plus embêtant, je pense que l'on peut améliorer des points de décision, à partir du moment où ils existent dans le programme.
Choisir une solution A par rapport à une B, ne doit être qu'un pb de pondération (évaluation) de ladite solution (je ne connais pas cet aspect de la programmation, IA, etc, mais je ne pense pas me tromper).
Qu'en disent les experts ?


Hors ligne Dogan

  • Administrateur
  • 10-3
  • *
    • Messages: 849
    • +4/-0
    • http://www.cote1664.net
Tout n'est que problème d'évaluation et de décision, mais les critères de décisions sont générés par le programmeur, donc si le programmeur fait de mauvais choix, le logiciel les fera aussi...
The only thing more accurate than incoming enemy fire is incoming friendly fire.


Hors ligne PAT

  • 8-0
  • *
    • Messages: 70
    • +0/-0
Citer
N'exagérons rien, sinon:
les possibilités de 10 pions amis sont effectivement nombreuses, mais elles sont traitables car unitairement simples (surtout avec les machines de guerre que chacun a pour PC aujourd'hui). Ce qui m'inquiète surtout, c'est le calcul de la LOS à chaque test. Elle doit couter cher en temps de calcul.
Le laps de temps de calcul est donc raisonnable si c'est bien codé et modélisé intelligemment. Et c'est là que le bât blesse: c'est très difficile à modéliser.
Après, le test de toutes les possibilités est faisable par MH.


Je n'exagere pas.
Dans la mesure où tu cherches à créer une IA, tu dois prendre en compte une profondeur de jeu, c'est à dire tisser l'échelle du possible au delà du coup présent, sur lequel repose ton exemple. Et plus tu peux projeter l'IA loin du présent, meilleur il sera.

On est dans la même problématique que le jeu d'échec, dont les regles sont pourtant simplissimes, le perimètre spatial limité à 64 cases, avec 16 pions par camp dont 6 catégories.

Combien d'années a-t-il fallu pour modéliser le jeu ? Moins d'un an.
Combien de temps a-t-il fallu pour créer une IA qui donne du fil à retordre ne serait-ce qu'à un joueur moyen (je ne parle même pas d'un GMI) ? Vingt ans ? Y est-on vraiment arrivé ? Et ça ne tourne que sur de très gros calculateurs IBM (pour les GMI), car pour que l'IA devienne redoutable, elle doit calculer vingt coups d'avance.

Alors imaginez le travail pour ASL avec ses milliers de règles, ses espaces hypervariables et geomorphiques, sa multitude de pions, bref ses milliards de possibilités, on peut dire son infinie variance.

Close Combat est un bon exemple d'IA ratée, où même la modélisation des différents ensembles faisait défaut. Autant ça pouvait être interessant contre un adversaire humain, autant ça pouvait être horipilant et frustrant contre l'IA.
Par ailleurs, les concepteurs de Close combat n'on jamais pu résoudre le concept de level dans leur checklos, d'où des terrains plats et des buldings sans étages.
C'est compliqué ces petits détails qui n'ont l'ai de rien !

Encore une fois, c'est faisable. Je suis persuadé qu'on y arrivera un jour. Mais le mieux est de capitaliser sur un début de soft qui a le mérite d'exister, avant de réinventer la roue.

Prenez contact avec Lars Thuring. Je suis sûr qu'il verra d'un bon oeil l'aide que vous pourrez lui apporter.
O combien d'actions, combien d'exploits célèbres
Sont demeurés sans gloire au milieu des ténèbres.

Corneille - Le Cid


Hors ligne SBF Erick

  • 9-1
  • *
    • Messages: 192
    • +0/-0
    • http://perso.club-internet.fr/elryx/
Citation de: Dogan
Tout n'est que problème d'évaluation et de décision, mais les critères de décisions sont générés par le programmeur, donc si le programmeur fait de mauvais choix, le logiciel les fera aussi...

Oui bien sûr. Ce que je veux dire c'est que les pondérations que le programmeur met sur les actions ne sont que des paramètres (des variables) sur lesquels il peut intervenir après coup sans changer de fond en comble la totalité du programme.


Hors ligne Loris

  • PIN
  • 10-2
  • *
    • Messages: 603
    • +5/-0
  • The last doomed partisan of paäle oblivion
Ok, PAT, j'avais oublié la vision à plusieurs tour...
Effectivement.

Sinon, perso, j'ai pas trop le temps de développer un IA, j'ai bien assez de problèmes sans ça...

Pour info: je vais peut être avoir un stage à Paris La Défense (entretien Lundi soir), donc je contacterai surement les joueurs Parisiens...

greuh.
-"J'ai conduit des tracteurs, des batteuses, et toi qui parlais de guerre, j'ai même conduit un char Patton."
-"Z'est bas ma marque brévérée..."
~Les Tontons Flingueurs
==
T1 Gavin Take
Tac22 Ils ont tiré sur Odessa...


Hors ligne Loris

  • PIN
  • 10-2
  • *
    • Messages: 603
    • +5/-0
  • The last doomed partisan of paäle oblivion
Citation de: SBF Erick
Citation de: Dogan
Un autre problème à prendre en compte est que pour programmer un ASL avec IA il faut que le/les programmeur(s) soit déjà bien rompu au jeu afin de prendre en compte toutes les petites astuces du jeu qui sont fondamental dans une partie au-delà du stade débutant.

Ceci ne me parait être le point le plus embêtant, je pense que l'on peut améliorer des points de décision, à partir du moment où ils existent dans le programme.
Choisir une solution A par rapport à une B, ne doit être qu'un pb de pondération (évaluation) de ladite solution (je ne connais pas cet aspect de la programmation, IA, etc, mais je ne pense pas me tromper).
Qu'en disent les experts ?


Oui.
Par contre, pour bien pondérer, faut très bien connaître le jeu.
Mais cela reste toujours configurable (changer un chiffre dans un fichier de paramétrage).

greuh.
-"J'ai conduit des tracteurs, des batteuses, et toi qui parlais de guerre, j'ai même conduit un char Patton."
-"Z'est bas ma marque brévérée..."
~Les Tontons Flingueurs
==
T1 Gavin Take
Tac22 Ils ont tiré sur Odessa...