dans Rechercher

Coldwire.net

The Ultimate Coldwire Machine

Combat d'IA

Dernier message 24/10/2006 09:33 par David. 60 réponses.
Page 1 sur 4 (61 élément(s)) 1 2 3 4 Suivant >
Tri des messages : Précédent Suivant
  • 05/12/2002 18:04

    Combat d'IA

    Bon j'explique...
    Est-ce que ca interresse quelqu'un de faire un combat d'IA. Le principe est simple.

    Voici les régles :
    Chaque IA posede un plateau de 8*16 cases ansi que 4 figures : un carré de 2*2, un L de 3*1, un L a l'envers et une barre de 4.

    Au tour de l'IA un, elle choisit une piece qu'elle donne a l'IA2, celle-ci la place sur son plateau et choisit une piece qu'elle donne a l'IA1 qui la place et ainsi de suite... L'IA perdante est celle qui a pas reussi a placer la piece.

    Pour cela, il y aura un serveur qui permettra de communiquer entre les IA de chaques joueurs. Le langage sera du VB (le plus simple et plus connu) et une dll vous sera livré pour que le protocole de communication soit transparent...

    Un tableau tiendra a jour les points de chaque version d'IA de chaque joueur. Les match pourront se faire quand vous voulez puisque le serveur tournera 24/24. Un serveur de test tournera aussi pour tester votre IA.

    1pt par match gagner et -2pts si votre IA se plante (5 secondes sans reponse)

    Ca se deroulera sur 3 mois et il y aura 2 vainqueurs
    AU bout de 2 mois les sources des IA seront accessibles ( et le grand vainqueur sera attribué) et vous pourrez donc piquer les idées des autres pendant le mois restant.

    PS : Au bout du premier mois, l'IA la plus forte sera la nouvelle IA du serveur de test.

    Voila, j'attend vos question.
  • 05/12/2002 18:14 en réponse à

    Re: Combat d'IA

    je suis partant, par contre je sais pas si on pourrait pas faire de la ligne de commande bourrin genre trouver un système en cgi pour résoudre les problèmes... parce que le vb & dll, ca restrint pas mal.... si j'ai envie de taper des delires avec des arbres équilibrés avec table de hachage et cie, g pas envie de devoir me les farcir en Vb ;)
  • 05/12/2002 18:19 en réponse à

    Re: Combat d'IA

    Je te comprends, mais je pense que le C++ et dll ca doit etre possible, au pire je file le protocole a Vko et il me dev le .h et .c associé :)

    C'est juste que pour VB, je pourrais filer le protocole deja fait en .bas ou dll. Si tu veux le faire avec un autre langage, je te file le protocole de communication entre le serveur et client et tu l'implemente, c'est pas folichon....
  • 05/12/2002 18:21 en réponse à

    Re: Combat d'IA

    Pitin, ca me rappelle un truc sympa que j'avais trouvé y a quelques années. Tu avais une arene, deux robots avec un laser et un petit editeur assembleur tres simple a manipuler.
    Tu programmais ton ia et chacun lachait son robot dans l'arene pour tuer a coup de laser celui de l'adversaire. MDR des fois en voyant les reactions de robots :lol:

    Sinon, je sors deja mon drapeau blanc contre de frais IUP3 ... :(


    The assassination of Jesse James by the coward Robert Ford, film de l'année.
  • 05/12/2002 18:24 en réponse à

    Re: Combat d'IA

    Je suis plus partant pour que tu mettes en place un protocole (genre une RFC light) et qu'on ponde suivant notre humeur un serveur... l'interet etant d'éviter à avoir à se prendre la tête avec l'utilisation de sockets...

    Sinon, faire comme zeDuel : entrée standard et sortie standard... Mais je vois que c'est assez contraignant du fait de devoir poster les sources, donc gros cgi derrière, etc...

    Quitte à faire du coucours d'algo, ca pourrait être sympa de pouvoir se lacher.

    Je balance ces idées en vrac, faudrait éplucher tout ça pour trouver une solution qui puisse intéresser tt le monde.
  • 05/12/2002 19:02 en réponse à

    Re: Combat d'IA

    Sinon, plutot que de faire des combats, on peut plutot tester votre IA en voyant combien vous arrivez à ranger de piéces que le serveur vous envois. Bien sur ceci sera equilibre et aucune fonction de Hasard sera utilisé pour que ceci soit equitable pour tout le monde.

    PS : Pour ceux qui gereraient cas par cas, des solutions ont déjà été trouvées pour eviter ceci.
  • 05/12/2002 19:09 en réponse à

    Re: Combat d'IA

    Bon certains sont déjà au courant mais je suis obligé de faire de la pub :wink:

    L'année dernière avec les copains on a joué la dessus :
    http://zeduel.zerezo.com/

    Sinon votre idée me branche beaucoup et j'essayerai de participer... mais je suis d'accord pour dire que du tout VB c'est un peu restrictif (perso je sais pas programmer dans ce langage).

    PS : comment ça je poste beaucoup d'urls vers zerezo.com ? :P
  • 05/12/2002 19:11 en réponse à

    • Baloo
    • Top 50 des contributeurs
    • Rejoint le 14/10/2002
    • Messages 56

    Re: Combat d'IA

    Faut voir ce qu'en pense royale, avec les prologin qu'il a fait il a peu
    être de bonnes idées ! ;)

    PS: je vous rapelle que royale a gagné prologin un année

    PS2 : http://zeduel.zerezo.com

    -EDIT- lol, royale a été plus rapide :)
  • 05/12/2002 19:20 en réponse à

    Re: Combat d'IA

    Je rappelle que le langage de programmation pourra etre n'importe koi.

    Mais il faudra utiliser les sockets et respecter le protocole. Je m'occupe de la version VB du protocole client et je fairait les specs pour ceux qui veulent le faire pour un autre langage et partager leur source :wink:

    -EDIT-

    Je viens de finir une premiere version du serveur et une dll pour le client. La dll pour le client rame grave, donc je demande a vko de me contacter pour mettre en place une classe Socket en C++ qui permettra de se connecter, deconnecter, recuperer et envoyer un entier (numero de la figure).

    Pour le serveur en VB, les temps de reponse sont pas trop mauvais et je pense que dans un premier temps, le serveur tournera comme ca... Par contre il risque de passer en JAVA trés prochainement pour permettre le multithread...

    PS : Pour ceux qui veulent toujours le faire en VB, je leur filerai les codes sources d'un exemple d'une IA bidon qui possede de trés bon temps de reponses avec le serveur...
  • 06/12/2002 13:24 en réponse à

    • ed
    • Top 150 des contributeurs
    • Rejoint le 02/11/2002
    • Messages 2

    Re: Combat d'IA

    je penses que je participerais aussi, mais en C sous linux moi :p

    hihihi


    +++
  • 06/12/2002 13:46 en réponse à

    Re: Combat d'IA

    Citation :

    je penses que je participerais aussi, mais en C sous linux moi :p

    hihihi


    +++


    Ben on te filera le protocole de comm et le serveur Vb, et tu développeras la connexion socket en c ;) (par contre, si vous êtes plusieurs à faire comme ça, vous aurez plus vite fait la lib de connexion)

    good luck :)
  • 06/12/2002 14:04 en réponse à

    Re: Combat d'IA

    J'ai mis non, parce que :
    -c vendredi aprem
    -je prepare tout pour une lan ce we
    -j'essaie de faire du TCL en ce moment
    -j'ai bu du vin a midi ^^
    Brigadier chef mais agent de la paix avant tout

    Gmai Ounel
  • 06/12/2002 14:09 en réponse à

    Re: Combat d'IA

    moi j'ai mis non parceque
    1: 100% de oui ça faisait trop election irakienne
    2: beh moi je suis pas informaticien , dc faire ça c un peu complique pr moi :-)
    3: j'ai bu du vin a midi aussi (et de la bière par la même occasion)


    PS : si qq'un est pret a m'expliquer plus en details ce qu'il faut faire je veux bien participer qd meme
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière
  • 06/12/2002 14:24 en réponse à

    Re: Combat d'IA

    Bon ce soir je poste un client VB avec une IA bidon pour voir comment marche le client, ainsi que les regles du jeux.

    Aujourd'hui à 15h19, un serveur VB marche mais ne sauvegarde pas les résultats et un client fonctionne avec interface graphique et communique pas encore avec le serveur (reste 30mn de dev pour implementer le protocole + 30mn de commentaires).
  • 06/12/2002 15:09 en réponse à

    • Baloo
    • Top 50 des contributeurs
    • Rejoint le 14/10/2002
    • Messages 56

    Re: Combat d'IA

    pffff c'est un peu lent tout ça Monsieur Lasombras !!!! :D
  • 07/12/2002 00:12 en réponse à

    • Fabys
    • Top 25 des contributeurs
    • Rejoint le 14/10/2002
    • Toulouse
    • Messages 376

    Ston cul le protocole

    Bon bin dis donc , bon courage a tous les participants , moi je suis forfait pour cause de manque d intelligence !
    Bon spa tout ca, j ai de la vodka orange qui m attend [21 ans spirit ] .

    Bonne bourre !
    Ma vie, mon oeuvre... oupas(.org)
  • 07/12/2002 00:26 en réponse à

    Re: Combat d'IA

    Concours d’IA

    Le principe du concours d’IA est de savoir qu’elle est l’IA qui arrive le mieux à gérer une situation.

    Notre concours d’IA se déroulera en 3 manches.

    :arrow: Tout d’abord, nous allons voir les règles générales du jeu sur lequel se battront les IAs.

    Une IA possède un plateau de 8 colonnes et 16 lignes.
    image liée

    Dans ce jeu, il existe 5 figures différentes.
    1 : image liée 2 : image liée 3 : image liée 4 : image liée 5 : image liée

    Chacune figure possède un point de pivot (ici marqué d’un rond).

    Elles peuvent pivoter de 90° dans le sens inverse des aiguilles d’une montre, donnant ainsi 4 positions, comme représentées ci-dessous.
    image liée

    A chaque tour, votre IA reçoit une pièce. Elle est libre de la faire pivoter dans une des positions. Mais il est impératif de la placer sur le plateau sans la faire monter sur une autre figure avant de recevoir une nouvelle piéce.

    Le jeu s’arrête lorsque vous ne pouvez plus placer la figure que l’on vous donne, ou que vous ayez réussi à remplir tout votre plateau.

    Ce sujet sera réactualisé suivant les questions que vous posé.


    :arrow: Phase 1 :
    Durant la première phase du jeu qui durera 1 mois, votre IA devra se connecter sur un serveur qui lui donnera les pièces une par une.
    Votre score sera calculé sur le système de 1 point par pièces placées.
    Le score ne compte que si l'IA ne provoque pas d'erreurs.

    :arrow: Phase 2 :
    Durant le second mois, l’IA se connectera sur le serveur pour affronter une IA d'un autre Joueur.
    Cette fois, après avoir placé la pièce qui lui est donnée, elle pourra en choisir une quelle donnera à l’autre IA, ainsi de suite. L’IA perdante est celle qui ne peut pas placer la pièce qui lui est donnée.
    Le système de point sera de 3pt pour une victoire, 1pt pour un match nul, 0 pour une défaite et -2pt pour un timeout (plantage ou trop de réflexion de l’IA) (-2pt pour l’IA qui provoque le Timeout et 3pt pour son adversaire).

    PS : Suivant les résultats de la phase 1, il est possible que les règles changent un peu comme la suppression du droit de pivoter, l’insertion de nouvelles pièces ou encore l’insertion de trous aléatoires au début d’un match sur les plateaux (bien sur dans ce cas les plateaux seront identiques pour les deux IA).


    :arrow: Phase 3 :
    Pour finir cette phase n’est pas vraiment importante et n’apportera que 10pts de bonus au gagnant. Dans cette phase, toutes les sources des IA seront disponibles, et chacun pourra s’inspirer des autres. Les IA se battrons sur le principe de la phase 2 ou phase 1 (à voir).
    Attention elle ne durera que 1 semaine.

    :arrow: Gagnant :
    Pour déterminer les points finaux de chacun, on additionnera les points de sa meilleure version d’IA de la Phase1 et Phase2 + le bonus s’il a gagné la 3eme Phase.


    :!: ATTENTION : :!:
    - Vous devrez changer le nom de votre IA à chaque modification de code pour garder un historique des points de chaque version de votre IA.
    - La phase 1 ne donne pas de pièces au hasard pour que ce soit équitable pour tout le monde. Mais des vérifications seront faites pour éviter que des "petits rigolo" enregistre l'ordre des piéces et les traite au CAS PAR CAS. :twisted:


    PS : Le protocole de connection pour la phase 1 sera fournit dans la semaine du 9 au 15 décembre. 8)
    En attendant pour ceux qui ont Visual Basic, voilà un client de test… :D
    Et l’exécutable du serveur de test qui délivre les pièces dans l’ordre officiel… :roll:
    La gestion et affichage des score n'est pas géré dans ces versions. :cry:
  • 09/12/2002 10:16 en réponse à

    Re: Combat d'IA

    J'suis fan ! J'sens q'on va rire :)


    Vko, l'assurance que le débat avance
  • 09/12/2002 12:01 en réponse à

    Re: Combat d'IA

    Pour ceux qui galèrent, j'ai envie de commencer à aider à la rédaction du readme.txt qui pourrait être utile ou bien un FAQ général.

    J'ai aussi quelques remarques/questions.

    Instructions :
    "Lancez votre serveur (l'exécutable contenu dans le serveur.ace), cliquez sur le bouton. La fenêtre disparait alors. Le seul moyen pour "tuer" le serveur étant de faire un Ctrl-Alt-Suppr et de tuer la tâche (cf. rq 1).
    Lancez Vb, ouvrez le projet client modèle (faire un backup du source n'estpas une mauvaise idée).
    Changez l'ip du serveur ligne 47 en "localhost" si vous avez lancé le serveur sur votre propre pc (cf. rq 2).
    Allez dans le Module nommé "Module_IA" pour comprendre comment ca marche. Vous avez la fonction IA qui correspond à votre programme d'IA

    Remarques :
    1° Il aurait peut-être fallu nommer le serveur d'un nom plus explicite pour qu'il soit plus facile à reconnaitre dans la liste des taches - genre ServeurConcours.exe.

    2° Une constante en tête de fichier aurait été plus judiscieuse pour pouvoir changer l'IP, ca évite de devoir se plonger dans le code. De manière générale, on préfère utiliser un module dédié qui charge les contantes du programme (IPs, nom des fichiers de log/trace éventuels, etc.)

    3° Grosse question con de ma part ou bien oubli... Comment on gère la mémoire ? Je veux dire par là que à première vue, c'est à l'IA de gérer où se trouvent les pièces, donc de se souvenir de ses précédents coups. Sinon, il faudrait définir le moyen pour le passer à l'IA. Les deux solutions sont discutables.
    - Dans le premier cas, cela sous entend un développement redondant d'une méthode de "mémoire", mais l'IA aura dans ce cas là une "durée de vie" (donc une notion de "partie démarrée", "nouvelle partie", etc.). Ca donne plus de boulot à l'IA, mais ca la rend plus indépendante du système de Vb.
    - Dans le second cas, on lui passe à chaque fois l'état de la table et la pièce à placer. Elle se contente de calculer la place idéale (dans ce cas l'IA devient "ponctelle"). Ca complique la tâche de Vb et de l'IA, qui doivent tous les deux avoir un système au point pour se communiquer la table (la seule solution convenable étant un fichier je pense). Donc une fonction de lecture pour l'IA, écriture pour Vb. Si l'IA désire tenir un historique des coups, elle devra le faire indépendament du fichier.
    Bref, y'a de quoi discuter sur ce point. Personnellement, pour moi, chaque méthode à des avantages/inconvénients, et j'hésite encore entre chacune. (la me semble plus simple pour que l'IA n'ait pas à se soucier de "Est-ce que j'ai planté la partie précédente et mon fichier n'a pas été supprimé ?"

    4° Plus j'y réfléchis, plus il me semble essentiel de pouvoir lancer une IA programmée dans un autre langage (j'ai déjà plein d'idées d'algos mais qui demandent des structures mémoires un peu plus adaptées que le Vb). Donc la solution d'appeller une ligne de commande qui écrirait éventuellement la string dans un fichier serait une possibilité (l'éxécution synchrone est possible en Vb). Je peux me pencher sur les méthodes d'appel synchrone (c'est pas très dur), mais il faut savoir ce à quoi s'en tenir à propos du point 3° avant.

    Bon, du coup je commence à ouvrir VC++ ;)
  • 09/12/2002 13:25 en réponse à

    Re: Combat d'IA

    En parallele avec la 2eme solution du 3eme point abordé par Styx31 : l'ia prend un tablo de la grille, la piece a jouer.

    Le client appele une DLL qui contient le traitement de l'IA. L'appel se ferait tout simplement par une fonction exportée dt on spécifirait le prototype genre :

    Version c :
    void jouer (byte tab[8][16], byte pieceajouer, ...)

    Version VB :
    public sub jouer (tab(8,16) as byte, pieceajouer as byte ....)

    ainsi tout le monde fait se qu'il veut ... juste a pondre une DLL


    Vko, l'assurance que le débat avance
Page 1 sur 4 (61 élément(s)) 1 2 3 4 Suivant >