Création d'un algorithme génétique (en C)

Rédigé par niconux Aucun commentaire
Classé dans : C/C++ Mots clés : Algorithme, Génétique, C

Nous avons déjà abordé cette problématique il y a quelques mois, je vous proposais de créer un algorithme génétique en Java.

Aujourd'hui, je vous propose le même programme mais developpé en C.

Pour rappel, le cas d'exemple étudié sera le suivant :

Nous allons créer un algorithme qui permet de trouver au sein d'une population un individu ayant la meilleure aptitude, dans notre cas possédant un code génétique identique à celui recherché (solution optimale).

Pour ce faire nous allons créer les fichiers suivants :

  • t_bool.h : Déclare le type t_bool, un type booléen.
  • population.h et population.c : Déclare et donne l'implémentation des différentes méthodes permettant de traiter l'ensemble des individus d'une population.
  • t_individual.h et t_individual.c : Déclare et donne l'implémentation des différentes méthodes permettant de traiter un individu.
  • t_skill.h et t_skill.c : Déclare et donne l'implémentation des différentes méthodes permettant déterminer la compétence d'un individu.
  • runtime_algo.c: S'occupe de gérer l'évolution : reproduction, mutation ...
  • main.c : Le programme principal permettant de lancer l'évolution sur notre population initiale.

Voyons en détail l'implémentation de ces différents fichiers.

Lire la suite de Création d'un algorithme génétique (en C)

Focus C : Structure autoréférentielle

Rédigé par niconux Aucun commentaire
Classé dans : News, C/C++, Développement Mots clés : Algorithme, C, Arbre binaire

Je vous propose un focus sur l'utilisation du type struct au travers d'un problème général consistant à compter le nombre d'occurrences de tous les mots lus en entrée et de les trier simultanément.

Puisque la liste de mots n'est pas connue à l'avance, il n'est pas pratique de la trier et d'utiliser une recherche dichotomique.

Cependant, nous ne pouvons pas non plus effectuer une recherche séquentielle à l'arrivée de chaque mot pour vérifier si on l'a déjà rencontré ; le temps d'exécution du programme serait trop long.

Comment pouvons-nous organiser les données pour faire face efficacement à liste de mots arbitraires ?

Lire la suite de Focus C : Structure autoréférentielle

Focus : Algorithme C

Rédigé par niconux Aucun commentaire
Classé dans : News, C/C++, Développement, Mémo Mots clés : Algorithme, C, Développement, Exemple, Aide

Conjointement au développement de mon projet personnel, j'essaie d'alimenter une rubrique proposant une collection de divers programmes en C.

Abordant des problèmes ou des thématiques récurrentes, j'essaie d'apporter un regard pédagogique, clair et exploitable clef en main : chaque exemple, chaque programme, est téléchargeable.

Vous pouvez donc vous en resservir comme base de travail pour vos projets personnels.

A l'heure actuelle, parmi les sujets traités on retrouve :

Cette page propose aussi un ensemble d'articles ainsi qu'un aide-mémoire.
La bibliothèque thématique de programme en C est récente et s'étoffera avec le temps.
Si vous voulez voir certains sujets traités ou tout simplement me faire part de vos remarques, n'hésitez à laisser un message en commentaire de cette actualité.

Lire la suite de Focus : Algorithme C

Gestion des exceptions en langage C

Rédigé par niconux Aucun commentaire
Classé dans : C/C++, Développement Mots clés : Exception, C

La bibliothèque thématique de programme en C se devait de traiter la gestion des exceptions qui est une manière très efficace de gérer les erreurs au sein d'un programme, quel qu'il soit.

Cet article s'efforcera de donner quelques implémentations de système de gestion d'exception au sein d'un programme écrit en langage C. Ces implémentations pourront souffrir de plus ou moins de limitations.

Dans des langages de programmations "modernes" (loin de moi de dire que le C est un langage du passé) comme le C++, Java ou C#, la gestion des exceptions se traduit par les instructions : try-throw-catch.

...
 try
{
 /* traitement, instruction, ... */
 }
 catch (TypeException e)
{
 /* gestion de l'exception : traitement de l'erreur */
}
 ... 

 

Voyons comment cette mécanique peut être implémentée en C.

Lire la suite de Gestion des exceptions en langage C

Fil RSS des articles de ce mot clé