Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Actualités


Index du Forum » Actualités » La Revue des Projets - 138
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

La Revue des Projets - 138

Posté le 27/01/2019 17:57

Bonjour à tous !
Ce soir une RdP entre intimes avec deux invités sur le plateau, Disperseur et Shadow15510. Ce soir la Graph 90+E est à l'honneur !

Depuis hier, un nouveau topic est venu s'ajouter à la longue liste des projets de programmation. Ce petit nouveau vous annonce le dernier assistant personnel sortit à ce jour : j'ai nommé ALICIA et son créateur : Disperseur !
Disperseur, à toi la parole !
Disperseur a écrit :
Bonjour à tous, hier, Samedi 26 Janvier 2019, je postais mon assistant personnel Alicia sur Planet Casio.
Comme il est expliqué sur le topic du forum qui y est consacré (ici), Alicia est une assistante qui peut vous parler, effectuer vos calculs, vous donner un nombre au hasard, vous raconter une blague choisie dans un répertoire de 5, ainsi que vous donner l'heure et la date (version sur ordinateur). Programmée en Python, Alicia bénéficie de la rapidité du langage et de la simplicité de programmation (pour moi ). L'interface utilisateur est (selon mon impression) assez ergonomique et facile à lire (oui, beaucoup trop d'information sature et est déplaisante à lire). L'utilisation d'une commande permettant de mettre tout les caractères d'une chaîne en minuscule permet de simplifier la saisie sur graph 90 où les majuscules sont privilégiées aux minuscules (alpha verrouillée en maj d'abord). Enfin, le programme n'est pas de taille excessive (~3000 octets).

Au début du développement (début d'année 2019), je suis parti sur une version d'Alicia qui fonctionnait comme ceci:
On avait une liste contenant toutes les phrases ou mots que l'utilisateur pouvait faire comprendre à l'IA et une autre liste contenant les réponses à donner. Après la saisie de l'utilisateur, Alicia lisait toute la première liste et si elle trouvait la même chaîne de caractères que celle donnée par l'utilisateur, elle donnait la réponse qui se trouvait dans la seconde liste au même indice. Ce système fonctionne assez bien d'autant plus que si ce que l'utilisateur saisissait n'était pas compris de la machine, cette dernière enregistrait la saisie et demandais à l'utilisateur ce quelle devais répondre. J'avais implémenté un mécanisme d'apprentissage assez simple mais fonctionnel. De plus, à la fin de l’exécution du programme, Alicia nous affichait la totalité des deux listes qui composait sa mémoire et de cette manière je les copiais dans le code et j'effectuais donc une sorte de "sauvegarde". A première vue ce système peut paraître assez bien, sauf qu'il y avait un problème majeur: si la saisie de l'utilisateur n'était pas semblable à l'espace près à une de celles qui se trouvait dans la mémoire, alors Alicia ne comprenais pas.
Pour parer à ce problème je me suis lancé dans la création d'un petit algorithme, aujourd'hui au centre du fonctionnement d'Alicia, permettant de "découper" une chaîne de caractères mots par mots en ne prenant pas en compte les espaces. Autrement dit, quelque soit le nombre d'espaces qui sépare chaque mot, l'algorithme affiche séparément chacun de ces mots sur l'écran. Je ne vais pas partir dans l'explication de cet algorithme, à moins que cela intéresse certains d'entre vous. Je dirais seulement que j'utilise deux 'pointeurs' pour délimiter le début et la fin de chaque mot et ainsi "l'extraire". J'ai donc, à la suite de la création de cet algorithme, revu la totalité du code d'Alicia et lui ai donc ajouté cet algo. La seconde version d'Alicia était née. Au lieu de rechercher phrase par phrase dans sa mémoire, Alicia recherche mot par mot. Elle lit mot à mot la saisie de l'utilisateur et cherche à chaque fois si elle connais chaque mot et si oui, donne la réponse associée au mot clé trouvé (=1ere liste).
Depuis, je n'ai fait qu'ajouter des fonctionnalités comme le calcul, l'aléatoire ou encore la date et l'heure, ainsi que quelques modifications esthétiques. Cela m'a donc mené à poster Samedi la cinquième version de cet assistant.

Malgré tout cela, Alicia n'est pas terminée et nécessite encore quelques améliorations, comme l'intégration du tableau périodique des éléments par exemple, de manière à augmenter son niveau d'utilité.

Je tiens, pour terminer, à préciser que la saisie de commandes dans l'interface d'Alicia ne dois pas comprendre de caractères spéciaux comme l'apostrophe par exemple, car l'algorithme ne comprendrais pas, ainsi que l'insertion d'un signe '=' avant un calcul (sans espaces) car cela peut mener à une erreur (que je suis en voie de corriger).

Sur ce, merci d'avoir lu et surtout n'hésitez pas si vous avez des questions ou si vous avez quelques idées pour améliorer Alicia, notamment au niveau de la conversation et de l'interface utilisateur.

A+ sur Planet Casio et portez vous bien

Un projet sympa, j'ai hâte de voir la finalité du projet ! Si vous êtes curieux, si vous avez envie de tester l'assistant personnel, si vous voulez comprendre comment ça marche : allez jeter un œil sur le topic dédié Et qui sait ? Peut-être que dans pas si longtemps vous pourrez demander à votre calculatrice de vous commander une pizza ?

Sans vous faire attendre, un article de notre Admin préféré (moi ) qui vous annonce qu'il va s'envoler vers de nouveaux horizons, heureusement, avec sa calculatrice...
Shadow : à moi la parole !
Shadow15510 a écrit :
Bonjour tous le monde et bienvenue dans votre revue des pro... Ah ?! c'est pas à moi de faire ça ??... Ah... bon ben.... bon je vais vous parler d'un petit projet que j'ai commencé... euh attendez, je l'ai commencé ?? Ah oui, si je l'ai commencé...

Alors je suis en train de faire un simulateur (ça en jette hein ?? ) de (le suspense est à son comble et vous me maudissez parce que je met des parenthèse hyper-longues qui servent à rien au milieu ) gestion de trafic aérien !

Je voulais vous faire la surprise mais c'est mieux si je vous en parle un peu avant : je me suis lancé dans le code d'une tour de contrôle, vous savez, là le machin moche de 15 mètres de haut avec des écrans TV jusque dans les chiottes ? ben voila, je reconstitue les dialogues entre tour et avion du parking à l'atterrissage en passant par l'attribution d'une piste,... etc Seulement voila : uniquement un petit écran (avec des couleurs dieu merci) ça reste quand même bien chiant... Du coup j'ai toqué à la tour de contrôle de Caen (oui oui, je m'invite comme ça moi mais si j'ai le droit ) Et j'ai pris quelques renseignements...
Le but est très simple, vous devez guider des avions du parking à la piste puis en vol, en croisière,... etc Les communications se veulent le plus réaliste possible mais j'ai du prendre quelques liberté pour plus de lisibilité

Après avoir trié toutes mes infos, je suis arrivé à cela :
- Il faut un écran pour le plan de l'aéroport façon carte VAC (des machins sensé t'aider mais le temps que tu comprennes où tu est, t'est déjà mort...)
- Il faut un écran où défilent les comm'
- Un écran ou l'on voit tous les emplacements de l'aéroports (dans le jargon il appelle ça des stripes parce que c'est des bandes de papiers avec tout ce qu'il faut savoir sur l'avion)
- Et enfin l'indispensable écran RADAR avec les pistes et les lignes pour l'alignement...


Sans vous faire attendre plus longtemps, voici des images du jeu ici prise dans le dossier "Pict" donc hors jeu et sans avions


ça c'est le menu d'accueil


ce machin correspond au stripes dont je vous parlais plus haut, les immat' des avions s'affichent rouge et les infos aussi


le plan de l'aéroport avec pistes, parking, taxiway le tout avec des codes couleurs (les mêmes que pour les stripes si avez fait gaffe ) Les avions sont matérialisé par des croix rouges


l'écran RADAR les avions apparaissent tout bêtement tout la forme d'une flèche (leurs directions) avec l'immat' à côté Les lignes noires sont les pistes et les pointillés rouges, les axes pour l'alignement


Et les comm' dans tout ça ? L'écran de fond seul n'est pas intéressant, donc je ne l'ai pas mis : surprise !!
J'en suis actuellement au codage de la partie croisière avec la gestion du cap, vitesse, et altitude. Il faut également gérer les différents scénariis : lors du vol de croisière, l'avion fait la demande de quitter l'espace aérien par le nord, l'est, le sud ou l'ouest. A vous de jouer avec la vitesse pour qu'il ne quitte pas la zone avant d'avoir le bon cap... A l'inverse je ferais en sorte que certains avions veuillent plutôt atterrir... Là aussi à vous de jouer pour l'aligner correctement avec sa piste...

Contrairement à ce que l'on pourrait penser, les avion évoluent bel et biens sur l'écran RADAR se déplaçant en fonction de leurs vitesse et de leurs cap, mais sans gestion du temps réel : il s'agit d'une boucle passée judicieusement qui re-caclucle les coordonnées des avions !

J'ai réussi à inclure les collationnements (cela consiste à répéter une partie des message de la tour, pour monter qu'on les compris) des communications et j'ai nettoyé le code. Si vous donnez une instruction sans rapport avec la demande du pilote, il vous répond : ... non je vous le dis pas je suis dais... euh sda... sari... euh... Ahhh euh... ah oui, sadique hein ?

Maintenant, il vérifie que lorsque vous donner un taxiway ou une piste à un avion, que la piste ou le taxiway est libre, sinon, il vous met un message d'erreur en vert comme quoi faut regarder les cartes avec d'envoyer les avions les uns contre les autres... Pourquoi en vert ? Parce que les messages de la tour sont en bleu, les messages des avions en rouge, du coup le vert c'est visible et ça tranche avec le reste...
Néanmoins, il reste un soucis : vous avez un avion sur la piste 36 qui attend l'autorisation de décoller et un autre avion qui est au point d'arrêt pour la piste 36.
Vous ne pouvez pas avancer le second avion au point d'arrêt : sinon il percute le premier sur la piste. Mais vous ne pouvez pas non plus faire revenir en arrière ce second appareil. Il faut donc faire décoller le premier... Simple ?? Nooonn... c'est pas pratique de coder un truc pareil... d'autant plus que les comm' fonctionnent comme ça :
chaque avion a une liste
le programme fait une boucle itérative et lis chaque liste les unes après les autres. Selon la position de l'avion et le contenu de sa liste, le programme va afficher un texte particulier. Le fait est qu'il faut que je trouve un moyen réaliste de dire à un avion « Toi ! oui le bleu avec des pois violets et des rayures vertes !! Bouges pas ! » et à celui qui bloque : « Fout le camps !!! » Ben j'ai trouvé : Stand By tout ce qu'il y a de plus officiel : c'est une demande que la tour fait à l'avion et qui ordonne à l'avion de ne rien faire... Elle est opérationnelle dans le code au moment où vous me lisez. C'est vraiment génial, parce que 1.° c'est réaliste, et 2.° la boucle itérative comprend et passe à l'avion suivant.

Je pense que j'ai fais le tour ! Je n'ose pas annoncer de date pour la version démo. Ce dont je suis sûr c'est que vous ne pourrez probablement pas poser un avion : vous le ferez roulez, décoller, vous l'orienterez en vol puis il sortira de votre zone et c'est tout... De plus la taille du programme est étonnement faible : environ 14 000 octets de programmes et 2 000 de sauvegarde et d'images !

Ah je viens de m'avertir d'une possible amélioration qui vient plus vite que prévu : on peut poser un avion ! Encore un projet sympathique avec des images en couleurs ! On attend de pouvoir tester cette version démo...

C'est sur cet envol que se clos notre revue heb-dromadaire !

Cette semaine, 4 programmes ont été postés
Ellipse un programme de Mastermokeko, qui aggrandit le nombre de programmes pour la ClassPad 400 !
Couleurs 1S un cours de physique sur les couleur signé Tituya
Tableau d'avancement de Lucky-web7 qui permet de savoir les quantité de réactifs à la fin d'une réaction chimique
Calcul de degré du même auteur, qui résout des équation jusqu'au 4ème degré en se rapportant à des équations plus simples.

Et voila !
Lire la RdP précédente : La revue des Projets - 137
Participez à la vie de la communauté : Postez un article pour la RdP


Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 27/01/2019 19:08 | # | Fichier joint


C'est bien compliqué ce que tu as fait Disperseur !
Je ne sais pas si cela correspond à tes besoins, mais tu peux utiliser .split() et une boucle simple pour placer tous les mots dans une liste sans espaces (" bonjour à la planète mars " devient ["bonjour","à","la","planète","mars"]).
Code
Code
def splitSpace(string):
    temp = string.split(" ")
    liste = []
    for i in range(len(temp)):
        if temp[i] != "":
            liste += [temp[i]]
    return liste

Je l'ai aussi mit en fichier joint.
ouais ouais
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 27/01/2019 19:22 | #


Merci pour le coup de pouce mais je préfère garder mon algo pour me moment, je le comprends mieux et il est plus clair pour moi. Et perso je ne trouve pas que ce soit si compliqué que ça: c le développement
Lephenixnoir Hors ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 27/01/2019 19:23 | #


Quand tu auras progressé, je te conseille moi aussi d'utiliser split(). Pour plusieurs raisons : d'abord c'est performant, ensuite c'est élégant ; c'est dans l'esprit de Python. Enfin, ça t'évite d'écrire une grosse partie de code qui pourra contenir des bugs !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 27/01/2019 19:47 | #


Ca me rappelle une RdP ou j'avais expliqué mon idée d'algo pour un chatbot

"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Massena Hors ligne Ancien rédacteur Points: 2244 Défis: 11 Message

Citer : Posté le 27/01/2019 19:50 | #


Et si on fusionnait les deux projets ?

Vraaaaaouuum... Boum !
Oui, bon. Alicia et la gestion d'avion ne sont pas compatible. Pas encore ?
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 27/01/2019 19:52 | #


@Lightmare: Je serais curieux de voir ton idée d'algo
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 27/01/2019 20:01 | #


@Disperseur https://www.planet-casio.com/Fr/forums/topic15284-1-La-Revue-des-Projets---115.html
A ton service !
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 27/01/2019 20:16 | #


Merci, l'idée n'est pas mal du tout seulement côté code...
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 28/01/2019 07:12 | #


Bonne nouvelle, ma version démo sera complète mais’ sans doute buggee
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Manolo Hors ligne Membre Points: 910 Défis: 13 Message

Citer : Posté le 28/01/2019 07:30 | #


ça a l'air bien cool ces petits programmes ! enfin que pour la 90+e, j'suis trop heureux !
mais par-contre, pour la prochaine RDP, qq pourra me prévenir d'écrire un article deux ou trois jours avant ? (qq d'autre que GLaDOS, parce que à chaque fois qu'il me prévient, c'est presque trop tard...)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 28/01/2019 07:35 | #


Ben tu peux te mettre un réveil ou qqchose d'autre
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 28/01/2019 07:49 | #


Surtout c'est toujours dimanche 18h, fait le mercredi ou samedi ton article
ouais ouais
Critor En ligne Administrateur Points: 2689 Défis: 18 Message

Citer : Posté le 03/02/2019 15:33 | #


Merci pour ces deux superbes projets !
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 03/02/2019 17:40 | #


Ex-projet : Air-control est passé en prod'
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque


LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 94 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd