Bibliothèque d'implémentation d'algorithmes de recherche opérationnelle

Description

Bonjour
Pour l'instant seuls deux algorithmes sont implémentés, ceux de recherche extrémale (maximal et minimal) de Floyd et Bellman.
Le principe est simple. On récupère dans un objet de type IExtremalAlgorithm l'algorithme voulu (FLOYD ou BELLMAN) grâce à une Factory qui se charge d'instancier la bonne classe en fonction du choix. Puis on lance le calcul en passant la matrice en paramètre et le type de calcul (MINIMAL et MAXIMAL).
Il ne reste plus qu'à récupérer les valeurs extrémales calculées grâce aux méthodes GetMatrix et les pères des sommets grâce à getFathers.
Ci-dessous un exemple d'utilisation.

Source / Exemple :


// EXEMPLE AVEC UNE RECHERCHE DE CHEMIN MAXIMAL AVEC FLOYD

// Matrice source
string[,] baseMatrix = {
                        {"-","2","3","-","5","-","7","-"},
                        {"-","-","-","4","-","6","-","8"},
                        {"-","-","-","4","5","-","7","-"},
                        {"-","-","-","-","-","-","-","8"},
                        {"-","-","-","4","-","6","-","-"},
                        {"-","-","-","-","-","-","-","8"},
                        {"-","-","-","-","-","6","-","8"},
                        {"-","-","-","-","-","-","-","-"}
                      };
// Création de la manufacture d'algorithmes extrémaux
ExtremalAlgorithmFactory factory = new ExtremalAlgorithmFactory();

// Récupération de l'algorithme voulu, ici FLOYD grâce à une énumération.
IExtremalAlgorithm algorithm = factory.GetAlgorithmMethod(EnumExtremalAlgorithm.FLOYD);

// Envoi du calcul extrémal désiré sur la matrice passée en paramètre, ici MAXIMAL grâce à une énumération
algorithm.Calculate(baseMatrix,EnumExtremalPathType.MAXIMAL);

// Récupération des résultats qui peuvent être exploités
int[,] floydMatrix = algorithm.GetMatrix();   // Matrice résultante
int[,] floydFathers = algorithm.GetFathers(); // Pères des sommets

Conclusion :


Le code n'est pas encore bien robuste dans le sens où il ne détecte pas les cas où la matrice n'est pas valable pour un tel calcul. Cela va venir !
Merci pour vos commentaires et critiques.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.