..no::Blog

Pensées, Poèmes, Libre, Informatique

29 juin 2006

Ah mais mon bon monsieur, la glace ça fond !

Bon, dans mon précédent billet je vous livrais un génial tarball plein de jolis petits fichiers ruby tout mignons sans expliquer comment ça s'utilise ni même à quoi ça sert.

Alors imaginez un instant que vous êtes un joli marchand de glace en pleine campagne et en plein été. Dans le coin ou vous vous trouvez il y a 60 villages et vous voulez tous les visiter pour vendre vos glaces. Ah mais mon bon monsieur, la glace ça fond ! Vous ne pouvez donc pas vous permettre de prendre n'importe quel chemin, il faut que vous visitiez les 60 villages au plus vite. Or, et c'est là que nôtre pauvre glacier bute, il y a factorielle de 60, c'est à dire à peu près 10 puissance 82 chemins possibles ! Heureusement grâce au Wimax et à vôtre ordinateur portable, vous vous connectez sur cette page, et vous êtes sauvés !

En effet, ce super algorithme va vous permettre de trouver un des meilleurs chemins possibles pour visiter toutes les villes. Il vous suffira d'écrire un super fichier de configuration dans lequel chaque ligne représente une ville et est de la forme «NomDeLaVille Abcisse Ordonnée». Dans le tarball vous trouverez un fichier d'example nommé villes.txt. Une fois écrit ce fichier texte et enregistré sous un joli petit nom, pour sauver vos glaces il vous suffira de faire, dans le fichier extrait du tarball : $ ruby algogen.rb JoliPetitNomDeVotreFichier, de laisser tourner un moment et d'appuyer sur Control+C (ou d'envoyer un SIGTERM au processus) pour que les résultats s'affichent avec joie et entrain !

Si vous n'avez pas de glaces à vendre et vous voulez faire un simple test, faire simplement $ruby algogen.rb 10 fera travailler le script sur dix villes aléatoires.


Et pis une petite roadmap pour la route :

  • Éliminer les solutions redondantes
  • Introduire des mutations pour éviter la convergence
  • utiliser optparse pour parser la ligne de commande
  • Utiliser YAML pour le fichier de configuration ?
  • Rendre l'algorithme plus générique


Posté par Phlogistique à 14:38 - Informatique - Commentaires [0] - Rétroliens [0] - Permalien [#]

Algorithme Génétique basique en Ruby

Dans le cadre de mon TPE, j'avais commencé une ébauche d'algorithme génétique pour la démo, mais ne l'avais jamais terminé.
Eh bah j'ai pris un peu de temps et puis voilà.

Sachez que cet algorithme ne sert à rien, qu'il est lent et peu efficace, et que si vous êtes un peu programmeur vous en ferez un mieux en trois claquements de doigts.

Il est sous une license libre sinon libertaire ;) :

I, the author of this work, grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
Je donne à tous le droit d'user ce travail pour n'importe quelle raison, sans aucune restriction, sauf si ces restrictions sont requises par la loi.

Là je suis trop fatigué pour documenter ça tout de suite, donc stay tuned ;)

Téléchargez là ici si vous avez du temps à perdre

Posté par Phlogistique à 02:20 - Informatique - Commentaires [1] - Rétroliens [0] - Permalien [#]

19 juin 2006

Irma 1.0 : Birth of a myth

En avant première et sur ce blog seulement, la première release d'Irma :D

Je tiens à remercier tout le monde, particulièrement mes parents, mes amis, l'ordinateur, Linux, GNU, KDE, blabla, blabla, blabla, et surtout le meilleur langage de programmation qu'il m'aie été donné d'utiliser... Ruby !.

Irma est un chatterbot, c'est à dire un programme qui parle en imitant un humain.

Mais Irma elle même est aussi un simple fichier texte d'à peine 170 lignes, une classe écrite en Ruby au doux nom de Bot. La licence, inclue au fichier, est :

I, the author of this work, grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.


Téléchargez là ici

Voilà une très brève documentation d'Irma :

  • Bot::new(fichier) Permet de créer une instance d'irma grâce à la base de données *fichier*.

  • Bot#save(fichier) Permet de sauvegarder Irma dans le fichier *fichier*. Sans précision du fichier, c'est le même fichier qu'on avait utilisé pour l'initialisation qui est utilisé.

  • Bot#answerTo(phrase) Retourne une chaîne de caractère jugée comme meilleure réponse à donner à *phrase*

  • Bot#vocabulaire#add(replique_irma, replique_utilisateur) Apprends à Irma que l'utilisateur a répondu *replique_utilisateur* à *replique_irma*

Voilà donc un exemple très simple d'utilisation d'irma :


require 'irma'
irma = Bot.new("talk2irma.irma")
while true
print "Moi: "
replique_utilisateur = gets.chomp
exit if replique_utilisateur == "exit"
irma.vocabulaire.add(replique_utilisateur, replique_irma) if defined?(replique_irma)
replique_irma = irma.answerTo replique_utilisateur
puts "Irma: " + replique_irma
end

Les bases de données pour Irma sont de forme :



Replique
Reponse1
Reponse2
Reponse3
#
Autre replique
reponse
#
--
mot nombre_de_fois_qu'irma_l'a_lu
exemple 8
autrexemple 1

Et divers fichiers utile au fonctionnement d'Irma.

Peut-être dans la prochaine version ou après :

  • Surement un moyen de noter les réponses d'Irma

  • utilisation d'un parser XML ou YAML externe plutôt que le truc crade actuel

  • Un script de connection à IRC propre et fonctionnel (plus que l'actuel)

NB: Les bases de données sont en UTF-8

Posté par Phlogistique à 00:00 - Informatique - Commentaires [0] - Rétroliens [0] - Permalien [#]

17 juin 2006

Irma is ready for you !

Depuis de nombreuses années, tous l'attendaient avec impatience... Et elle arrive, galopante !
Irma est arrivée !

Et elle est disponible tant que mon PC est allumé (et que cette conne plante pas), c'est à dire pas souvent.

Irma est un chatterbot, c'est à dire un logiciel qui vous parle en imitant un humain.

Irma est programmée en Ruby et son code source vous sera bientôt diffusé, surement sous licence WTFPL. J'aurais voulu le mettre dans le domaine public mais c'est impossible sauf si j'étais mort il y a 70 ans.

Pour lui parler, vous aurez besoin d'un client IRC comme XChat (ou Chatzilla si vous utilisez Firefox).

Pus d'infos dans 48 heures.

Posté par Phlogistique à 00:00 - Informatique - Commentaires [0] - Rétroliens [0] - Permalien [#]



« Accueil  1 
 

La photo de mur est de flikr et sous licence Creative Commons 'by'