TPE I.A

Eb0La Messages postés 4 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 13 novembre 2004 - 12 nov. 2004 à 21:58
divadav Messages postés 94 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 22 janvier 2009 - 16 nov. 2004 à 16:10
Bonjour à tous,

J'ai plusieurs questions et problèmes en Delphi. Apres quelques recherches peu fructueuses sur le net, j'ai décidé de venir vous soumettre mes interrogations.

Pour replacer le contexte: Je suis en Terminale S et les TPE (Soutenance, exposé) sont au programme. J'avais, depuis longtemps, envie d'étudié l'Intelligence Artificielle. Le TPE pouvait me permettre d'allié l'utile a l'agréable, puisque un des thèmes directeur est: « La robotique et la cybernétique ».

L'épreuve de TPE (qui conte pour le BAC), doit être agrémenté de "réalisations, productions". J'ai donc décidé de programmer (en Delphi) des "IA".

J'ai une idée principale (pas encore fixée, toute modifications sont possible):

-La réalisation d'un petit personnage (2D) réagirais face a sont environnement (éviter les murs, <les autres fonctions restent encore a définir>, ...).
J'aimerais que les caractéristiques du personnage (sa mémoire, son code génétique) soit contenu dans un fichier (.ini, .txt, ...) a part. Il en serai de même pour son environnement (maps). Enfin, il faudrait charger ces deux donnée dans un exécutable et lancer une simulation.
Le fait de mettre a part les caracterisitiques des personnages me permettra de les modifier facilement et de gérer plusieurs personnages avec des caractersistiques différentes.

J'ai déjà commencé une petite chose, mais tout est contenu dans un seul .exe. Si vous souhaitez jeter un oeil, vous pouvez télécharger les sources ici: http://skate-er.chez.tiscali.fr/IAP.rar

-Je viens donc vous demander votre avis a propos de mon idée de réalisation (comment pourrai-je réaliser mon personnage, fonctions possibles).
-Je suis preneur de toutes idées de réalisations en rapport avec l'I.A.
-Si vous voyez des modification a apporter a mon (tout) début de source, je suis très intéressé.

pour finir, j'ai quelques petites questions:

-Es ce que la fonction "Random" de Delphi est réellement aléatoire ? (j'ai été étonné par certains résultats la de la simulation de mon personnage ... essayez : pas de 1, vitesse de 4, le résultat est étrange).

-Comment faire en sorte qu'une phrase contenu dans une variable soit "découpé" et que l'on puisse reconnaître chaque mots de la phrase (reconnaissance des mots dans une phrase).

Exemple: J'entre une phrase dans une variable puis le prog me dit: Il y a tel mot, puis tel autre dans la phrase ...

Voila, je vous remercie d'avance

PS: Pour me contacter personnellement: Eb0La.controle-technologie@wb.st

5 réponses

vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
12 nov. 2004 à 22:54
Salut Ebola,

Tout d'abord je te souhaite bonne m... . Je n'y connais rien en AI, sauf que c'est pas un jouet de jardin d'enfant.

Pour tes questions, voici :

La fonction Random de Delphi, n'est pas tout à fait aléatoire.
Elle se base sur la date et l'heure du système. de là, un alogritme génère des nombres aléatoires jusqu'au moment où le nième nombre peut égaler le premier.
Pour éviter cela, il est nécessaire d'effecture la fonction randomize (si j'ai bonne mémoire, ma doc est au bureau et je surfe depuis la maison). Cette fonction va recréer un nouvel algoritme de génération de nombre aléatoire.

Bref pour être complètement aléatoire, chaque nombre généré par random devrait être précédé de randomize.

Pour ta recherche de mot dans une phrase, les diverses fonctions ANSI pour les textes peuvent t'aider.

Pour ma part, j'utilise un découpage de chaîne de caractères en insérant un symbôle que je ne sais n'avoir jamais besoin. Je m'explique :

L'appli que j'écris permet d'analyser les incidents survenus au sein du réseau ferré de Belgique.
Les diverses entités qui pourraient être impliquées dans l'incident sont codifiées par un nombre et un certain pourcentage d'implication puevent leur être attribué. Je codifie le tout comme suit :

\4/50\9/10\8/40

L'entité 4 est impliquée à 50 %, la 9 à 10% et la 8 à 40%.

Dans le code, je lis pas à pas la positions des \ , je découpe la chaîne en 4/50 9/10 8/40 et recherche ensuite la position des / pour différencié le numéro de l'entité et le %.

C'est pratique à la condition que ton caractère séparateur n'ait pas uhne signification dans ton texte. Dans ce cas, tu peux dédouble le séparateur s'il doit être considéré comme texte et non pas comme séparateur. Un peut comme '' dans une chaîne de caractère pour diere au compilateur qu'il s'agit du symbôle ' et non pas du terminateur de chaîne.

Si j'ai pas été clair, dis le.

@ +

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans
0
Eb0La Messages postés 4 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 13 novembre 2004
13 nov. 2004 à 11:12
Merci pour ta réponse,

Je vais donc me pencher sur la fonction "Randomize". Sinon, pour mon "découpage" de phrase, il faudrait qu'il soit fait selon les espaces (Es ce possible ? Comment puis-je realiser cela ?).

Au niveau de mon TPE, l'I.A est trop vaste et trop compliqué pour être étudié en détails. Je souhaite faire une soutenance ciblé sur un point particulier de l'I.A. Rien ne m'empeche de faire quelque chose de simple.

@+

PS: je n'est pas bien compris cela:
"Tout d'abord je te souhaite bonne m... . Je n'y connais rien en AI, sauf que c'est pas un jouet de jardin d'enfant."

PS (bis): je ne met pas encore "reponse acceptée !" pour ammener d'autres visiteurs à exposer leurs points de vue, idées de réalisation,etc ...
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
13 nov. 2004 à 11:57
Oui, random utilise l'heure systeme pour generer des nombres aléatoires.
Mais il est bien mentionné que randomize ne doit être appele qu'une fois dans tout le programme. C'est dit dans l'aide de delphi.

Mais fait un test avec RandomRange(0,1000) et compares tous ces nombres, je peut te dire que rares sont ceux qui sont égaux ... sauf si tu génere plus de 1000 nombres ...

Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
13 nov. 2004 à 12:37
Exemple concret de l'utilisation de Randomize.

Simulation du résultat d'un jet de dé :

var Num: Integer;
begin
  Randomize;
  Num := Random(6) + 1;  // résultat aléatoire de 1 à 6 compris
  Label1.Caption := IntToStr(Num);
end;


J'avais fait une étude statistique des résultats obtenus. C'était , à mon avis largement suffisamment aléatoire, et tout à fait satisfaisant pour mon petit jeu de Yam ;)

Bon courage.

N'oubliez pas de valider "Réponse acceptée" si ça vous convient, de toute manière vous ne pouvez pas valider autre chose ! :big)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
divadav Messages postés 94 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 22 janvier 2009 2
16 nov. 2004 à 16:10
Salut !!

Sympa ton petit développement !!

Il y a bien quelques fonctions assez simples à coder, qui permettraient d'étudier une IA...

Il suffirait de construire une sorte de labyrinthe qui constituerait l'univers du perso. [ce que tu veux faire, je crois]

Au lieu de faire bouger ton personnage de manière aléatoire, le code génétique de ton perso pourrait être composé de l'ordre de base dans lequel les mouvements sont fait + du pourcentage de déplacements aléatoires du perso.

Ainsi, tu pourra créer facilement plusieurs perso et étudier leur comportement dans le labyrinthe (arrivent-ils à sortir ? en combien de mouvement ? etc...)

Ce n'est qu'un exemple de codage basique. La (très) grosse difficultée d'une IA est sa capacité d'apprentissage... Et là tout de suite comme ça, je sais pas trop quoi lui apprendre, et comment...

D'autant plus que l'apprentissage doit-être assez rapide si tu veux pouvoir faire une démo pdt tes TPE...

En tout cas, le projet est intéressant...

Keep Cool & Be Wild
Divad
Pour me contacter : forum@laumaille.net
0
Rejoignez-nous