Bienvenue sur le forum de Tournoyons.developpez.com.
Comme celui-ci était hébergé jusqu’à mi-février 2013 directement par Tournoyons.com, ci-dessous la copie de quelques discussions intéressantes d’alors :


Proposer l'hébergement des moteurs.

Étant donné que les moteurs ne sont qu'utilisés par Tournoyons, pourquoi Tournoyons n'offre pas l'hébergement des moteurs PHP et autres languages web?
Les parties seraient plus rapide et la mise en ligne beaucoup plus simple et, surtout, gratuite.
Oui c'est vrai, cela fait partie des choses envisagées. Cela peut s'avérer indispensable pour avoir des compétitions équitables vis-à-vis de la puissance de calcul. Questions :
• Comment ouvrir à tous les langages de programmation (compilés ou non) que l'on peut trouver sur un serveur, et ne pas trop courir après l'upgrade de versions ?
• Comment assurer la sécurité et se protéger contre du code malveillant, et protéger les autres concurrents hébergés ?
Voilà qui risque de dépasser mes compétences en fait.
Temps de calcul et profondeur
J'aime bien l'idée du site, mais comment faites-vous pour distinguer l'intelligence par rapport à la puissance de calcul demandée ?
Il est clair qu'un algorithme stupide peu écraser contre une IA beaucoup plus élaborée en utilisant simplement plus de temps de calcul. (exemple sur un minimax en descendant beaucoup plus en profondeur)
Puissance de calcul étant interchangeable avec espace mémoire, on peut avoir la même logique avec une IA débile connectée à une BD. (exemple simple : le puissance 4 est entièrement calculable - on met toutes les positions dans une BDD, et une simple requête permet de battre tous les IA).
Et on peut cumuler les deux (profondeur + précalculs indexés) pour obtenir l'avantage le plus significatif sur une IA supérieure.
En effet, la question des moyens dont dispose chaque concurrent est importante. (Nous permettons à chacun de fixer le timeout, mais cela répond que très partiellement à la question. )
Dans le cas d'un tournoi organisé au sein d'une classe, chaque élève dispose a priori des mêmes ressources, à savoir l'hébergement fourni par l'école.
Mais pour des compétitions inter-écoles par exemple, on n'échappera pas, à terme, à l'idée de proposer une sorte de bureau virtuel où chacun pourra héberger son code. Heureusement, avec le cloud, beaucoup d'offres sont en train de voir le jour. Cela devrait permettre de respecter la règle du site : chacun utilise le langage de programmation de son choix. On pourra ainsi garantir à chacun la même puissance de calcul.
Voilà l'état des réflexions sur cette question importante, et tout reste à faire.
Ceci dit, l'intelligence des IA développées aujourd'hui ressort quand même bien, et permet de sacrées confrontations, même avec des ressources matérielles inégales ...
Distinction entre shifumi aléatoire ou non
Pour le shifumi, ce serait intéressant de séparer ceux qui jouent avec un simple random de ceux qui ont une vraie intelligence.
En effet, un joueur de shifumi random ne peut ni gagner, ni perdre, alors qu'un moteur intelligent ...
Ca peut paraître stupide, mais je crois que la meilleure IA que j'aie créée est au shifumi. Elle ne joue évidement pas aléatoirement, et à priori, gagne systématiquement (sur un très grand nombre de matchs) contre un humain.
Oui, je suis d'accord !
Ce n'est pas pareil d'écrire une IA pour affronter des humains ou pour d'autres IA !
Quand inscris-tu ton IA sur Tournoyons ?

Petit conseil pour démarrer
Dans la programmation du moteur de chifoumi, l'algorithme de l'intelligence artificielle n'est pas compliqué. En revanche, comme c'est le premier moteur que l'on programme en général, il faut savoir comment gérer les entrées-sorties.
Tout d'abord, il vous faut choisir un langage. Contrairement à ce que l'on pourrait penser, tous les langages sont utilisables. Dans certains cas, comme le PHP ou le eRuby, c'est très facile car ils sont prévus pour être utilisés au sein de pages web et disposent donc de toutes les facilités nécessaires pour ce type d'usage. Mais d'autres langages sont également utilisables en utilisant le mécanisme des CGI qui permettent au serveur web de lancer un exécutable capable d'effectuer des requêtes HTTP ou dé générer une page HTML. Cet exécutable peut être écrit dans n'importe quel langage. Voici par exemple la doc d'Apache2 à ce sujet.
Toutes les communications se font d'arbitre à joueur ou bien de joueur à arbitre. On utilise les requêtes HTTP de type "GET" (voir cette page pour le descriptif complet du protocole HTTP : http://stielec.ac-aix-marseille.fr/c...protocole.html ou bien la page wikipedia).
Une fois choisi le langage, il faut donc trouver les bibliothèques permettant de faire les requêtes HTTP. Pour le perl, langage dans lequel j'ai codé mon moteur de chifoumi, j'ai utilisé les modules CGI et LWP.
Heureusement, la documentation ne manque pas sur Internet !
Faites part de votre expérience et de vos choix (langages, implémentations, bibliothèques, modules...) dans ce topic !

Le Chifoumi peut avoir une complexité élevée
Le Chifoumi peut avoir une complexité élevée si on fait une analyse statistique poussée de la stratégie adverse et ainsi pouvoir prévoir ses coups à l'avance (si stratégie il y a). Où même envisager d'analyser les séquences générées par des 'rand' système pour prédire la suite...

Aide pour ceux qui chercheraient l'algorithme parfait
À la différence du jeu d'échecs ou du jeu de go, certains jeux disposent d'un algorithme "parfait". C'est-à-dire que les IA l'implémentant obtiennent toujours le meilleur résultat possible (qui peut être la victoire, ou bien le match nul, plus rarement la défaite dans les jeux équilibrés), quelque soit leur adversaire.
Parmi ces jeux, on trouve l'awalé, dont une version a été résolue en 2002 (article publié par l'équipe de recherche), le jeu de dames en 2007 (http://www.sciencemag.org/content/317/5844/1518.abstract ), et bien sûr le tictactoe, il y a bien plus longtemps. En fait, il est même possible pour un humain d'apprendre toutes les positions possibles. Pour ceux qui chercheraient le détail exhaustif de l'algorithme, voici un lien très intéressant et plutôt comique : http://xkcd.com/832/. XKCD est un webcomic plutôt connu, surtout aux États-Unis et célèbre pour son humour très... spécial .

J'ai réussi à battre au morpion le moteur de Tournoyons.com, je pensais qu'il avait l'algorithme parfait

Existe-t-il l l'algorithme parfait ? Développe ton moteur et affronte Tournoyons, cela nous fera progresser et peut-être élaborer un algorithme difficile à battre par un humain... Et puis nous n'avons pas trop travaillé - volontairement - sur les moteurs de Tournoyons. Merci en tout cas de ce retour, nous sommes en effet demandeurs d'échanges. Je mets cette discussion sur le forum.
C'est un jeu à information parfaite, il existe donc une stratégie parfaite.
Sans aller jusque-là, l'IA du morpion sur le site est très faible, une variante de minmax devrait donner de bons résultats (+ élagage selon des heuristiques)
Oui, elle est faible, et surtout sans concurrents moteurs.Je préférerais nettement qu'un moteur "fort", voire "imbattable" soit mis en ligne par un tiers. Par ailleurs, on va bientôt ouvrir un espace où on parlera spécifiquement de stratégie, chacun décrivant pour partage (j'espère) les siennes.
Sinon, c'est quoi un jeu à information parfaite ?