Articles connexes:
- Documentation pour EO
- Documentation Pour EO: Modifier La Fonction Fitness
- Documentation Pour EO: Création D’un Nouveau Génome
(C) EODEVEO 1.1.0 implemented a class for PBIL algorithm (Population-Based Incremental Learning, Baluja and Caruana 96). PBIL is one of the members of EDA (Estimation of Distribution Algorithms).
Source:
http://eodev.sourceforge.net/eo/doc/html/classeo_p_b_i_l_distrib.html
Pour la création d’un nouveau génome utilisant EO, la plus simple est de créer un nouveau projet à partir d’un template qui se trouve dans le dossier ‘$eo\tutorial\Template’. Ce tuto sert à expliquer comment le faire.
Sous Linux:
1. Choisissez un nom pour votre projet, par exemple ici je prends ‘MyGeno’.
2. ‘cd‘ vers ‘$eo\tutorial\Template’
3. Créez un dossier pour sauvegarder vos projets, nommé ‘MyProject’ par exemple: ‘mkdir MyProject’
4. Exécutez fichier ‘create.sh’ en prenant deux options: 1ère = nom de projet; 2ère = nom de dossier pour sauvegarder vos projets
‘./create.sh OneMax MyProject’
5. ‘cd’ vers ‘MyProject‘: ‘cd ../MyProject’
6. ‘ls’ pour voir la structure du dossier:
7. Voilà tout est prêt. Tapez ‘make’ pour compliler votre projet ‘MyGeno’.
8. La seul chose à retenir c’est qu’il y a 4 fichiers suivants à modifier pour répondre à vos utilisations:
Allez-y! Faites démarrer votre console. Avant de passer à l’étape de MODIFICATION POUR UN NOUVEAU GENOME. Attendez un petit moment pour les utilisateurs Windows qui veulent également obtenir ces fichiers là.
Sous Windows:
C’est une question de renommer les fichier *.tmpl et/ou *.cpp –> *.cpp et/ou *.h
1. Créez un nouveau projet avec VC++, nommez ‘MyGeno’ et sauvegarder dans ’$eo\tutorial\Template\MyProject’ (‘MyPorject’ est un nouveau dossier crée avant par vous même dans ‘$eo\tutorial\Template’).
2. Copiez/collez vers dossier ‘MyGeno’, puis renommez tous les fichiers ci-dessus de manière indiquée:
3. Ouvrez le fichier ‘MyGenoEA.cpp’, copiez/collez vers ‘MyGeno.cpp’ dans votre projet VC++.
4. Paramétrez votre projet pour qu’il puisse faire appeler la EO. Allez voir ce tuto pour savoir comment le faire.
5. Une fois que tous les paramètres nécessaires sont établis. Dans VC++ ‘Build\Build Solution’ pour compiler votre projet.
Eh bien…Bravo! Vous venez de créer avec succès un nouveau projet d’EO !!!
Et maintenant passons à la MODIFICATION d’UN NOUVEAU GENOME.
Prenons un exemple disponible dans la Leçon 5 du tutoriel proposé par l’auteur (‘$eo\tutorial\Template’). Ouvrez le fichier “eoOneMax.h“ Il y aura deux points importants à voir attentivement afin de les ajuster:
Et voici un exemple complet de cette MODIFICATION que je voudrais vous donner pour finir cette partie.
Bonne continuation!
Tutu
Catégories : EO Library | Lesson 5
InconvénientsLe Template est un mécanisme important que l’on pourrait retrouver dans plusieurs langages de programmation. Donc, C++ n’est pas un cas exceptionnel. On verra dans la suite ses intérêts et ses inconvénients, les problèmes rencontrés et les solutions proposées pour répondre la question: “Pourquoi EO applique dans presque tous ces codes ce mécanisme?”
Il s’agit d’une méthode de faire des fonctions (classes) travaillant sur de nombreux types de variables.
Intérêts
Les avantages de Template réside dans la généralité. C’est à dire, quand le type du paramètre fournit dans le Template, quel que soit les types de variables on a besoin de coder qu’un Template.
Inconvénients
La compilation est plus longue au point de vue du temps.
Quand utiliser des templates ?
Pour définir des containers. Mais c’est quoi des containers? Très imaginé! Comme des grands containers qu’on voit sur les routes nationales. Ce sont des composants qui contiennent d’ une collection d’objets (comme une liste, un vecteur, un graphe…).
Comment code-je un template?
Voici par la suite un exemple de template “classe”, une des méthodes de coding utilisé dans EO:
// class templates #include <iostream> using namespace std; template <class T> class mycontainer { T a, b; public: mycontainer(){};~mycontainer(){};mycontainer (T first, T second) {a=first; b=second;}; T getmax ();}; template <class T> T mycontainer<T>::getmax () { T retval; retval = a>b? a : b; return retval; } int main () { mycontainer <int> myobject (100, 75); cout << myobject.getmax()<<endl; return 0; }
Résultat: 100
Comment EO a appliqué "Template"?
Prenons un exemple dans EO.h qui a pour but de définir un type de donnée de base dans EO "fitness":
En comparant EO.h et les code au dessus, on peut trouver facilement le rôle de la classe "EO" et "mycontainer" est le même. Donc le reste a été codé de même manière. Pour voir comment utiliser ce template 'EO', allez voir le fichier 't-eo.cpp' qui pourrait être trouvé dans le répertoire '$eo\test' de la source code d'EO.
J'espère ce petit tuto pourrait vous aider.
Bon vent et A++!
Tutu
Catégories : EO Library | EO Programming Guide
Articles connexes:
- Documentation pour EO
- Documentation Pour EO: Modifier La Fonction Fitness
- Documentation Pour EO: Création D’un Nouveau Génome
Notes et réferences:
La fonction fitness se trouve a priori au moment de la création d’une instance d’évaluation (avec la class ‘eoEvalFuncPtr’). C’est là on évalue chaque individu de la population. Dans le premier exemple, la fonction ‘binary_value’ joue le rôle de calculer la fitness des individus. Donc, pour la modifier, il suffit d’ajuster l’entrée de la variable ‘sum’ dans cette fonction:
double binary_value(const Indi & _indi)
{
double sum = 0;
for (unsigned i = 0; i < _indi.size(); i++)
sum += _indi[i];
return sum;
}
Ce code sert à calculer le nombre de bits ’1′ de chaque individu (Indi). Donc, si par exemple on voudrait modifier cette fonction pour compter combien de bits ’0′ notre code pourra être comme suivant:
double binary_value(const Indi & _indi)
{
double sum = 0;
for (unsigned i = 0; i < _indi.size(); i++)
sum += _indi[i];sum=_indi.size()-sum ;
return sum;
}
Voilà on reste à une modif très simple pour le moment. On se retrouvera dans un autre post pour voir comment on applique cette fonction dans un problème réel.
Tutu
Catégories : EO Library | Lesson 1
Je commence à taper sur la porte d’EO il y a quelque temps. Je me sens un peu seul au départ à cause de faute de docs. Donc, c’est la raison pour laquelle on a ce petit tag “eo-library” pour la doc d’EO.
Premièrement, comme ceux qui veulent faire tourner une nouvelle bibliothèque d’un langage de programmation, c’est l’installation:
Télécharger préalablement la dernière ver. d’EO au site de son auteur:
http://www.lri.fr/~marc/EO/
(j’espère qu’il change pas de cet URL)
L’installation d’EO pour les “fidèles” de Linux:
1. ‘cd’ vers le répertoire d’EO puis tapez ‘.configure’ (ou ‘sh .configure’ pour l’ancienne version de ‘csh’.
2. Tapez ‘make’ pour compiler
3. Tapez ‘make install’ pour installer
4. Tapez ‘make clean’ pour ‘nettoyer’ les fichiers d’objets générer par l’installation:)
L’installation d’EO pour les “croyants” de Windows avec VC++ installé:
1. Allez vers “$eo/win”
2. Exécutez “eo.sln”
3. Convertissez la source de VC++ 7.0 vers 8.0 ou plus [...]
4. “Build”->”Rebuild Solution”
Et voilà les premiers pas qu’il nous faut pour faire tourner cette bibliothèque.
Deuxièmement, On passe à un exemple simple pour voir comment les codes fonctionnent. Le VC++ 8.0 m’accompagne par la suite pour travailler avec notre nouvelle amie EO.
Je prends un exemple proposé par les auteurs dans son tuto intitulé “Lesson1″.
1. Retournez VC++ avec le projet nomé ‘eo’ dans ‘$eo\win’.
2. Créez un nouveau projet qui fusionne avec ce projet ‘eo’: “File”-> “New”->”Project”. Dans “Visual C++”, choisissez “Win32″. Dans “Templates”, choisissez “Win32 Console Application”. Dans “Name”, tapez “Lesson1″. Dans “Solution”, choisissez “Add to solution”.
3. Cliquez “Application Settings”. Dans “Application type”, choisissez “Console application”. Dans “Additional options”, enlevez “Pre-compiled header”.
4. Cliquez “Finish”
5. Maintenant allez vers “$eo\Tutorial\Lesson1″ pour récupérer la source code de cette première leçon.
6. Ouvrez “FirstBitGA.cpp”, copez tous les codes dans ce fichier.
7. Collez dans le fichier source de notre exemple “Lesson1.cpp”
8. Paramétrez le projet “Lesson1″ pour qu’on puisse faire appelez la bibliothèque EO. Dans la zone “Solution Explorer”, cliquez-droit sur le projet “Lesson1″.
9. Dans “Common Properties”, cliquez “References”, puis “Add New References”. Choisissez tous les quatre projets référents l’un après l’autre: “eo”, ‘es’, ‘ga’, ‘utils’.
10. Dans “Configuration Properties”, “C/C++”, choisissez “Code generation”. Ajustez “Runtime Library” en “Multi-threaded Debug (/MTd)”.
11. Determinez le projet “Lesson1″ comme le projet de lancement en cliquant-droit sur le projet “Lesson1″. Choisissez “Set as StartUp Project”.
12. Lancez le Debugging en choisissant “Debug”->”Start Debugging” .
Voilà quelques lignes pour l’installation d’EO sous Linux et Windows, bonus un exemple simple d’utilisation avec VC++. Je me permets de m’arrêter pour aujourd’hui. Je sens une très bonne saveur juste derrière moi. C’est mon dîner! Allez!!! A très bientôt!
Tutu
Catégories : EO Library | Lesson 1